PageSourceSearch

https://bel-air-espace-pro.web.app/assets/ClientsPage-BAEYbPOI.js

js bel-air-espace-pro.web.app collected 2026-10-03 12:18:03 UTC 44,381 bytes, 6 lines download raw bytes

1import{j as e,p as ye,C as we,P as D,u as Se,b as Ae,h as Ie}from"./index-BPi-Vkjw.js";import{r as c,ay as Ee,af as Te,t as le,X as re,az as pe,k as be,av as ze,h as _,aw as K,ax as J,ac as fe,am as Re,n as Pe,G as Z,o as Ne,a8 as De,J as X,V as Le,ad as Fe,U as ne,R as Oe,B as ge,H as je,aA as Ue,ak as $e,p as Be,aB as Me,aC as He,j as _e,D as Ve,O as qe}from"./vendor-icons-BqSzQHBd.js";import{u as Ge}from"./useDebounce-CpvZ9zcS.js";import{v as We,C as Ye}from"./validation-BrV73zsB.js";import{A as ve}from"./AddressAutocomplete-DaHtdmRX.js";import"./vendor-react-BN0qJr-I.js";import"./vendor-firebase-BrNTMfYZ.js";const Qe=({client:d,projects:L,isOpen:V,onClose:F,onDelete:q,onUpdate:N,onProjectClick:E,onCreateProject:O,onBulkAdd:T})=>{var g,f,U,$,B,M,de,oe,ie,ce,xe,me,ue;const[u,z]=c.useState(!1),[y,w]=c.useState("INFO"),[a,n]=c.useState(d),[I,G]=c.useState(!1),S=c.useRef(null),[ee,R]=c.useState(!1),[A,m]=c.useState(""),[b,j]=c.useState(!1),[v,P]=c.useState([]);if(c.useEffect(()=>{n(d)},[d]),!V)return null;const W=L.filter(t=>t.client.email&&t.client.email.toLowerCase()===d.email.toLowerCase()||t.client.name.toLowerCase()===d.name.toLowerCase()||d.id&&t.client.id===d.id).sort((t,l)=>l.createdAt-t.createdAt),te=t=>{switch(t){case D.NEW:return"bg-sky-100 text-sky-700";case D.IN_PROGRESS:return"bg-emerald-100 text-emerald-700";case D.COMPLETED:return"bg-slate-200 text-slate-700 dark:text-slate-200";case D.VALIDATED:return"bg-violet-100 text-violet-700";case D.WAITING_VALIDATION:return"bg-yellow-100 text-yellow-700";default:return"bg-gray-100 text-gray-700 dark:text-gray-200"}},Y=()=>{N&&N(a),z(!1)},se=()=>{u?window.confirm("Vous avez des modifications non enregistrées. Voulez-vous fermer sans sauvegarder ?")&&(z(!1),F()):F()},k=t=>new Promise((l,h)=>{const o=new FileReader;o.readAsDataURL(t),o.onload=()=>l(o.result),o.onerror=H=>h(H)}),C=async t=>{var h;const l=(h=t.target.files)==null?void 0:h[0];if(l){G(!0);try{const o=a.id||"temp_"+Date.now(),H=l.name.replace(/[^a-zA-Z0-9.]/g,"_"),ke=`clients/${o}/documents/${Date.now()}_${H}`;let ae;try{ae=await Se(ke,l)}catch{if(console.warn("Cloud upload failed, fallback to local base64"),l.size>2*1024*1024)throw new Error("Fichier trop lourd pour sauvegarde locale (Max 2Mo)");ae=await k(l)}const Ce={id:Date.now().toString(),name:l.name,type:l.type.includes("pdf")?"PDF":"IMAGE",date:new Date().toISOString(),url:ae},he={...a,documents:[...a.documents||[],Ce]};n(he),N&&N(he)}catch(o){console.error("Upload failed",o),alert(`Erreur: ${o.message}`)}finally{G(!1),t.target&&(t.target.value="")}}},Q=t=>{var l;if(confirm("Supprimer ce document ?")){const h={...a,documents:(l=a.documents)==null?void 0:l.filter(o=>o.id!==t)};n(h),N&&N(h)}},s=(t,l)=>{n({...a,accessCodes:{...a.accessCodes,[t]:l}})},x=t=>{switch(t){case"PARTICULIER":return"Particulier";case"ENTREPRISE":return"Entreprise";case"ARCHITECTE":return"Architecte";case"SYNDIC":return"Syndic";case"SOUS_TRAITANT":return"Sous-Traitant";case"PARTENAIRE":return"Partenaire";default:return"Particulier"}},r=async()=>{if(A.trim()){j(!0);try{const t=await ye(A);P(t)}catch{alert("Erreur d'analyse IA. Vérifiez votre texte.")}finally{j(!1)}}},p=()=>{if(T){const t=v.map(l=>({id:Date.now().toString()+Math.random().toString(36).substr(2,9),businessCode:l.businessCode||`IMP-${Date.now()}`,title:`${l.projectType||"Projet"} - ${l.endCustomerName||"Client Inconnu"}`,description:`Client Final: ${l.endCustomerName}
2Details: ${l.description||""}
3Tél Contact: ${l.phone||""}`,status:D.NEW,contactMethod:we.PHONE,createdAt:Date.now(),priority:"Moyenne",folderType:d.type==="ENTREPRISE"?"Sous-traitance":"Particulier",budget:l.budget||0,startDate:l.startDate,endDate:l.endDate,siteAddress:l.siteAddress,client:{name:d.name,email:d.email,phone:d.phone,address:d.address},needsCallback:!1}));T(t),R(!1),m(""),P([])}},i="w-full p-2 text-sm bg-white dark:bg-slate-900 border border-slate-300 dark:border-slate-600 rounded-lg focus:ring-2 focus:ring-emerald-500 outline-none text-slate-900 dark:text-white";return e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm p-4",children:e.jsxs("div",{className:"bg-white dark:bg-slate-900 rounded-2xl w-full max-w-4xl max-h-[90vh] overflow-hidden shadow-2xl flex flex-col animate-in fade-in zoom-in-95",children:[e.jsxs("div",{className:"px-6 py-4 border-b border-slate-100 dar
3k:border-slate-800 flex justify-between items-center bg-white dark:bg-slate-900 shrink-0",children:[e.jsxs("div",{className:"flex items-center space-x-4",children:[e.jsx("div",{className:`h-12 w-12 rounded-full flex items-center justify-center font-bold text-xl shadow-lg shrink-0 ${["SOUS_TRAITANT","PARTENAIRE"].includes(a.type||"")?"bg-cyan-600 text-white":"bg-emerald-600 text-white"}`,children:d.name.charAt(0).toUpperCase()}),e.jsx("div",{children:u?e.jsxs("div",{className:"space-y-2",children:[e.jsx("input",{type:"text",value:a.name,onChange:t=>n({...a,name:t.target.value}),className:"text-xl font-bold text-slate-800 dark:text-slate-100 bg-slate-100 dark:bg-slate-800 border-b-2 border-emerald-500 outline-none px-2 w-full"}),e.jsxs("select",{value:a.type||"PARTICULIER",onChange:t=>n({...a,type:t.target.value}),className:"text-sm p-1 bg-slate-100 dark:bg-slate-800 rounded border border-slate-300 dark:border-slate-600",children:[e.jsx("option",{value:"PARTICULIER",children:"Particulier"}),e.jsx("option",{value:"ENTREPRISE",children:"Entreprise"}),e.jsx("option",{value:"ARCHITECTE",children:"Architecte"}),e.jsx("option",{value:"SYNDIC",children:"Syndic"}),e.jsx("option",{value:"SOUS_TRAITANT",children:"Sous-Traitant"}),e.jsx("option",{value:"PARTENAIRE",children:"Partenaire"})]})]}):e.jsxs(e.Fragment,{children:[e.jsx("h2",{className:"text-xl font-bold text-slate-800 dark:text-slate-100",children:d.name}),e.jsx("span",{className:"text-xs font-bold bg-slate-100 dark:bg-slate-800 px-2 py-0.5 rounded text-slate-700 dark:text-slate-200 uppercase",children:x(a.type)})]})})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[u?e.jsxs("button",{onClick:Y,className:"flex items-center px-3 py-1.5 bg-emerald-600 text-white rounded-lg text-sm font-bold shadow-sm",children:[e.jsx(Te,{size:16,className:"mr-1"})," Enregistrer"]}):e.jsx("button",{onClick:()=>z(!0),className:"p-2 text-slate-700 dark:text-slate-200 hover:text-emerald-500 hover:bg-emerald-50 dark:hover:bg-emerald-900/30 rounded-full transition-colors",title:"Éditer la fiche",children:e.jsx(Ee,{size:20})}),e.jsx("button",{onClick:q,className:"p-2 text-slate-700 dark:text-slate-200 hover:text-red-500 hover:bg-red-50 dark:hover:bg-red-900/30 rounded-full transition-colors",title:"Supprimer le client",children:e.jsx(le,{size:20})}),e.jsx("div",{className:"h-6 w-px bg-slate-200 dark:bg-slate-800 mx-2"}),e.jsx("button",{onClick:se,className:"p-2 hover:bg-slate-100 dark:hover:bg-slate-700 rounded-full transition-colors",children:e.jsx(re,{size:24,className:"text-slate-700 dark:text-slate-200"})})]})]}),e.jsxs("div",{className:"flex border-b border-slate-200 dark:border-slate-800 bg-slate-50 dark:bg-slate-900/50 px-6 space-x-6 shrink-0",children:[e.jsx("button",{onClick:()=>w("INFO"),className:`py-3 text-sm font-bold border-b-2 transition-colors ${y==="INFO"?"border-emerald-500 text-emerald-700 dark:text-emerald-400":"border-transparent text-slate-700 dark:text-slate-200 hover:text-slate-700 dark:text-slate-200"}`,children:"Informations & Projets"}),e.jsxs("button",{onClick:()=>w("DOCS"),className:`py-3 text-sm font-bold border-b-2 transition-colors flex items-center ${y==="DOCS"?"border-emerald-500 text-emerald-700 dark:text-emerald-400":"border-transparent text-slate-700 dark:text-slate-200 hover:text-slate-700 dark:text-slate-200"}`,children:["Documents & Notes",e.jsx("span",{className:"ml-2 bg-slate-200 dark:bg-slate-800 text-slate-700 dark:text-slate-200 text-[10px] px-1.5 py-0.5 rounded-full",children:((g=a.documents)==null?void 0:g.length)||0})]}),e.jsxs("button",{onClick:()=>w("CONTACTS"),className:`py-3 text-sm font-bold border-b-2 transition-colors flex items-center ${y==="CONTACTS"?"border-emerald-500 text-emerald-700 dark:text-emerald-400":"border-transparent text-slate-700 dark:text-slate-200 hover:text-slate-700 dark:text-slate-200"}`,children:["Interlocuteurs",e.jsx("span",{className:"ml-2 bg-slate-200 dark:bg-slate-800 text-slate-700 dark:text-slate-200 text-[10px] px-1.5 py-0.5 rounded-full",children:((f=a.contacts)==null?void 0:f.length)||0})]})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto bg-slate-50 dark:bg-slate-900/50 p-6 relative",children:[ee&&e.jsxs("div",{className:"absolute inset-0 z-10 bg-white dark:bg-slate-900 p-6 animate-in slide-in-from-bottom-10 overflow-y-auto",children:[e.jsxs("div",{className:"flex justify-between items-center mb-4",children:[e.jsxs("h3",{className:"font-bold text-lg flex items-center",children:[e.jsx(pe,{size:20,className:"mr-2 text-indigo-600"})," Import de Masse (IA)"]}),e.jsx("button",{onClick:()=>R(!1),className:"text-slate-700 dark:text-slate-200 hover:text-red-500",children:e.jsx(re,{})})]}),v.length?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mb-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full text-xs text-left border-collapse",children:[e.jsx("thead",{className:"bg-slate-100 dar
3k:bg-slate-800 uppercase font-bold text-slate-700 dark:text-slate-200",children:e.jsxs("tr",{children:[e.jsx("th",{className:"p-2 border",children:"Code"}),e.jsx("th",{className:"p-2 border",children:"Client Final"}),e.jsx("th",{className:"p-2 border",children:"Adresse"}),e.jsx("th",{className:"p-2 border",children:"Budget"}),e.jsx("th",{className:"p-2 border",children:"Début"}),e.jsx("th",{className:"p-2 border",children:"Fin"})]})}),e.jsx("tbody",{children:v.map((t,l)=>e.jsxs("tr",{className:"border-b dark:border-slate-800",children:[e.jsx("td",{className:"p-2 border dark:border-slate-800 font-mono",children:t.businessCode}),e.jsx("td",{className:"p-2 border dark:border-slate-800 font-bold",children:t.endCustomerName}),e.jsx("td",{className:"p-2 border dark:border-slate-800 truncate max-w-[150px]",children:t.siteAddress}),e.jsxs("td",{className:"p-2 border dark:border-slate-800",children:[t.budget,"€"]}),e.jsx("td",{className:"p-2 border dark:border-slate-800",children:t.startDate}),e.jsx("td",{className:"p-2 border dark:border-slate-800",children:t.endDate})]},l))})]})}),e.jsxs("div",{className:"flex space-x-3",children:[e.jsx("button",{onClick:()=>P([]),className:"flex-1 bg-slate-200 text-slate-700 dark:text-slate-200 py-3 rounded-xl font-bold",children:"Retour / Corriger"}),e.jsxs("button",{onClick:p,className:"flex-1 bg-emerald-600 text-white py-3 rounded-xl font-bold",children:["Confirmer l'import (",v.length," projets)"]})]})]}):e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-sm text-slate-700 dark:text-slate-200 mb-2",children:"Copiez-collez vos lignes Excel/CSV ici. L'IA va structurer les données automatiquement."}),e.jsx("textarea",{value:A,onChange:t=>m(t.target.value),className:"w-full h-64 p-3 border rounded-xl bg-slate-50 dark:bg-slate-900 font-mono text-xs mb-4",placeholder:`Date Début | Affaire | Client Final | Adresse | Budget | Tel...
42024-03-01 | CH-99 | Mme Dupont | 12 Rue Paix | 5000 | 06...
5...`}),e.jsxs("button",{onClick:r,disabled:b||!A,className:"w-full bg-indigo-600 hover:bg-indigo-700 text-white font-bold py-3 rounded-xl flex items-center justify-center disabled:opacity-50",children:[b?e.jsx(be,{className:"animate-spin mr-2"}):e.jsx(ze,{className:"mr-2"}),"Analyser et Structurer"]})]})]}),y==="INFO"&&e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"bg-white dark:bg-slate-900 p-5 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm",children:[e.jsxs("h3",{className:"font-bold text-slate-800 dark:text-slate-100 flex items-center mb-4 border-b border-slate-100 dark:border-slate-800 pb-2",children:[e.jsx(_,{size:18,className:"mr-2 text-emerald-500"})," Coordonnées"]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center text-sm",children:[e.jsx(K,{size:16,className:"text-slate-700 dark:text-slate-200 mr-3 shrink-0"}),u?e.jsx("input",{type:"email",value:a.email,onChange:t=>n({...a,email:t.target.value}),className:i}):e.jsx("a",{href:`mailto:${d.email}`,className:"text-emerald-600 hover:underline truncate",children:d.email||"Non renseigné"})]}),e.jsxs("div",{className:"flex items-center text-sm",children:[e.jsx(J,{size:16,className:"text-slate-700 dark:text-slate-200 mr-3 shrink-0"}),u?e.jsx("input",{type:"tel",value:a.phone,onChange:t=>n({...a,phone:t.target.value}),className:i}):e.jsx("a",{href:`tel:${d.phone}`,className:"text-slate-700 dark:text-slate-200 hover:text-emerald-600",children:d.phone||"Non renseigné"})]}),e.jsxs("div",{className:"flex items-start text-sm",children:[e.jsx(fe,{size:16,className:"text-slate-700 dark:text-slate-200 mr-3 mt-0.5 shrink-0"}),u?e.jsxs("div",{className:"w-full space-y-2",children:[e.jsx(ve,{value:a.address,onChange:t=>n({...a,address:t}),onSelect:t=>n({...a,address:t.street,zipCode:t.zipCode,city:t.city}),className:`${i} pl-10`,placeholder:"Adresse"}),e.jsxs("div",{className:"flex space-x-2",children:[e.jsx("input",{type:"text",placeholder:"CP",value:a.zipCode,onChange:t=>n({...a,zipCode:t.target.value}),className:"w-20 p-2 text-sm border rounded-lg dark:bg-slate-800 dark:text-white"}),e.jsx("input",{type:"text",placeholder:"Ville",value:a.city,onChange:t=>n({...a,city:t.target.value}),className:"flex-1 p-2 text-sm border rounded-lg dark:bg-slate-800 dark:text-white"})]})]}):e.jsxs("span",{className:"text-slate-700 dark:text-slate-200",children:[d.address,e.jsx("br",{}),d.zipCode," ",d.city]})]})]})]}),e.jsxs("div",{className:"bg-white dark:bg-slate-900 p-5 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm",children:[e.jsxs("h3",{className:"font-bold text-slate-800 dark:text-slate-100 flex items-center mb-4 border-b border-slate-100 dar
5k:border-slate-800 pb-2",children:[e.jsx(Re,{size:18,className:"mr-2 text-emerald-500"})," Codes & Accès"]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-slate-700 dark:text-slate-200 font-bold uppercase",children:"Digicode"}),u?e.jsx("input",{type:"text",value:((U=a.accessCodes)==null?void 0:U.digicode)||"",onChange:t=>s("digicode",t.target.value),className:i,placeholder:"A1234"}):e.jsx("p",{className:"text-sm font-mono bg-slate-100 dark:bg-slate-800 px-2 py-1 rounded",children:(($=a.accessCodes)==null?void 0:$.digicode)||"-"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-slate-700 dark:text-slate-200 font-bold uppercase",children:"Étage"}),u?e.jsx("input",{type:"text",value:((B=a.accessCodes)==null?void 0:B.floor)||"",onChange:t=>s("floor",t.target.value),className:i,placeholder:"3e G"}):e.jsx("p",{className:"text-sm bg-slate-100 dark:bg-slate-800 px-2 py-1 rounded",children:((M=a.accessCodes)==null?void 0:M.floor)||"-"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-slate-700 dark:text-slate-200 font-bold uppercase",children:"Porte"}),u?e.jsx("input",{type:"text",value:((de=a.accessCodes)==null?void 0:de.door)||"",onChange:t=>s("door",t.target.value),className:i,placeholder:"Num/Code"}):e.jsx("p",{className:"text-sm bg-slate-100 dark:bg-slate-800 px-2 py-1 rounded",children:((oe=a.accessCodes)==null?void 0:oe.door)||"-"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-slate-700 dark:text-slate-200 font-bold uppercase",children:"Interphone"}),u?e.jsx("input",{type:"text",value:((ie=a.accessCodes)==null?void 0:ie.intercom)||"",onChange:t=>s("intercom",t.target.value),className:i,placeholder:"Nom"}):e.jsx("p",{className:"text-sm bg-slate-100 dark:bg-slate-800 px-2 py-1 rounded",children:((ce=a.accessCodes)==null?void 0:ce.intercom)||"-"})]})]})]})]}),e.jsxs("div",{className:"bg-white dark:bg-slate-900 p-5 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm",children:[e.jsxs("h3",{className:"font-bold text-slate-800 dark:text-slate-100 flex items-center mb-4 border-b border-slate-100 dark:border-slate-800 pb-2",children:[e.jsx(_,{size:18,className:"mr-2 text-emerald-500"})," Locataire (Optionnel)"]}),e.jsx("div",{className:"space-y-4",children:u?e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-slate-700 dark:text-slate-200 font-bold uppercase",children:"Nom"}),e.jsx("input",{type:"text",value:((xe=a.tenant)==null?void 0:xe.name)||"",onChange:t=>n({...a,tenant:{...a.tenant||{},name:t.target.value}}),className:i,placeholder:"Nom du locataire"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-slate-700 dark:text-slate-200 font-bold uppercase",children:"Tél"}),e.jsx("input",{type:"tel",value:((me=a.tenant)==null?void 0:me.phone)||"",onChange:t=>n({...a,tenant:{...a.tenant||{name:""},phone:t.target.value}}),className:i,placeholder:"06..."})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs text-slate-700 dark:text-slate-200 font-bold uppercase",children:"Email"}),e.jsx("input",{type:"email",value:((ue=a.tenant)==null?void 0:ue.email)||"",onChange:t=>n({...a,tenant:{...a.tenant||{name:""},email:t.target.value}}),className:i,placeholder:"@"})]})]})]}):a.tenant?e.jsxs("div",{className:"text-sm",children:[e.jsx("p",{className:"font-bold text-slate-800 dark:text-slate-100",children:a.tenant.name}),a.tenant.phone&&e.jsxs("div",{className:"flex items-center text-slate-600 dark:text-slate-300 mt-1",children:[e.jsx(J,{size:14,className:"mr-2"})," ",e.jsx("a",{href:`tel:${a.tenant.phone}`,className:"hover:text-emerald-600",children:a.tenant.phone})]}),a.tenant.email&&e.jsxs("div",{className:"flex items-center text-slate-600 dark:text-slate-300 mt-1",children:[e.jsx(K,{size:14,className:"mr-2"})," ",e.jsx("a",{href:`mailto:${a.tenant.email}`,className:"hover:text-emerald-600",children:a.tenant.email})]})]}):e.jsx("p",{className:"text-sm text-slate-400 italic",children:"Aucun locataire renseigné"})})]})]}),e.jsxs("div",{className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"flex justify-between items-center mb-2",children:[e.jsxs("h3",{className:"font-bold text-slate-800 dark:text-slate-100 flex items-center text-lg",children:[e.jsx(Pe,{size:20,className:"mr-2 text-emerald-500"})," Historique des Dossiers"]}),e.jsxs("div",{className:"flex space-x-2",children:[T&&e.jsxs("button",{onClick:()=>R(!0),className:"flex items-center px-3 py-1.5 bg-indigo-600 text-white rounded-lg text-xs font-bold hover:bg-indigo-700 transition-colors shadow-sm",title:"Importer une liste Excel/CSV",children:[e.jsx(pe,{size:14,className:"mr-1"})," Import Masse"]}),O&&e.jsxs("button",{onClick:()=>O(d),className:"flex items-center px-3 py-1.5 bg-slate-800 dark:bg-slate-800 text-white rounded-lg text-xs font-bold hover:bg-emerald-600 transition-colors",children:[e.jsx(Z,{size:14,className:"mr-1"})," Nouveau Dossier"]})]})]}),W.length===0?e.jsxs("div",{className:"bg-white dark:bg-slate-900 rounded-xl p-12 text-center border border-slate-200 dark:border-slate-800",children:[e.jsx(Ne,{size:48,className:"mx-auto text-slate-300 mb-4"}),e.jsx("p",{className:"text-slate-700 dark:text-slate-200",children:"Aucun dossier associé à ce contact."})]}):e.jsx("div",{className:"space-y-3",children:W.map(t=>e.jsx("div",{onClick:()=>{F(),E(t)},className:"bg-white dark:bg-slate-900 p-4 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm hover:shadow-md hover:border-emerald-500 transition-all cursor-pointer group",children:e.jsxs("div",{className:"flex justify-between items-start",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-1",children:[e.jsxs("span",{className:"font-mono text-xs font-bold text-slate-700 dark:text-slate-200",children:["#",t.businessCode||t.id]}),e.jsx("span",{className:`px-2 py-0.5 rounded-full text-[10px] font-bold uppercase ${te(t.status)}`,children:t.status.replace("_"," ")}),t.folderType==="Sous-traitance"&&e.jsx("span",{className:"px-2 py-0.5 rounded-full text-[10px] font-bold uppercase bg-cyan-100 text-cyan-700",children:"Sous-traitance"})]}),e.jsx("h4",{className:"font-bold text-slate-800 dark:text-slate-100 group-hover:text-emerald-600 transition-colors",children:t.title}),e.jsx("p",{className:"text-sm text-slate-700 dark:text-slate-200 mt-1 line-clamp-1",children:t.description})]}),e.jsxs("div",{className:"text-right",children:[e.jsx("div",{className:"font-bold text-slate-800 dark:text-slate-100",children:t.budget?t.budget.toLocaleStr
5ing("fr-FR",{style:"currency",currency:"EUR"}):"-"}),e.jsx("div",{className:"text-xs text-slate-700 dark:text-slate-200 mt-1",children:new Date(t.createdAt).toLocaleDateString()})]})]})},t.id))})]})]}),y==="DOCS"&&e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 animate-in fade-in",children:[e.jsxs("div",{className:"bg-white dark:bg-slate-900 p-6 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm h-full flex flex-col",children:[e.jsxs("h3",{className:"font-bold text-slate-800 dark:text-slate-100 flex items-center mb-4",children:[e.jsx(De,{size:18,className:"mr-2 text-emerald-500"})," Notes Privées"]}),e.jsx("textarea",{value:a.notes||"",onChange:t=>n({...a,notes:t.target.value}),onBlur:Y,placeholder:"Informations importantes sur le client (code porte, préférences, etc.)",className:"flex-1 w-full p-3 bg-slate-50 dark:bg-slate-900 border border-slate-200 dark:border-slate-800 rounded-lg resize-none outline-none focus:ring-2 focus:ring-emerald-500 text-sm"}),e.jsx("p",{className:"text-xs text-slate-700 dark:text-slate-200 mt-2 text-right",children:"Sauvegarde automatique à la sortie du champ."})]}),e.jsx("div",{className:"space-y-4",children:e.jsxs("div",{className:"bg-white dark:bg-slate-900 p-6 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm",children:[e.jsxs("div",{className:"flex justify-between items-center mb-4",children:[e.jsxs("h3",{className:"font-bold text-slate-800 dark:text-slate-100 flex items-center",children:[e.jsx(X,{size:18,className:"mr-2 text-emerald-500"})," Documents Contact"]}),e.jsxs("div",{className:"relative",children:[e.jsxs("button",{onClick:()=>{var t;return(t=S.current)==null?void 0:t.click()},disabled:I,className:"bg-emerald-600 hover:bg-emerald-700 text-white px-3 py-1.5 rounded-lg text-xs font-bold flex items-center disabled:opacity-50",children:[I?e.jsx(be,{size:14,className:"mr-1 animate-spin"}):e.jsx(Le,{size:14,className:"mr-1"}),"Ajouter (RIB, Kbis...)"]}),e.jsx("input",{ref:S,type:"file",onChange:C,className:"hidden"})]})]}),e.jsx("div",{className:"space-y-2 max-h-[400px] overflow-y-auto",children:!a.documents||a.documents.length===0?e.jsxs("div",{className:"text-center py-8 text-slate-700 dark:text-slate-200 bg-slate-50 dark:bg-slate-900 rounded-lg border border-dashed border-slate-200 dark:border-slate-800",children:[e.jsx(X,{size:24,className:"mx-auto mb-2 opacity-50"}),e.jsx("p",{className:"text-xs",children:"Aucun document"})]}):a.documents.map((t,l)=>e.jsxs("div",{className:"flex items-center justify-between p-3 bg-slate-50 dark:bg-slate-900 rounded-lg border border-slate-100 dark:border-slate-800 hover:border-emerald-300 transition-colors",children:[e.jsxs("div",{className:"flex items-center overflow-hidden",children:[e.jsx("div",{className:"bg-white dark:bg-slate-900 p-2 rounded border border-slate-200 mr-3 shrink-0",children:e.jsx(X,{size:16,className:"text-emerald-600"})}),e.jsxs("div",{className:"truncate",children:[e.jsx("p",{className:"text-sm font-bold text-slate-800 dark:text-slate-100 truncate",children:t.name}),e.jsx("p",{className:"text-[10px] text-slate-700 dark:text-slate-200",children:new Date(t.date).toLocaleDateString()})]})]}),e.jsxs("div",{className:"flex items-center space-x-2 shrink-0",children:[e.jsx("a",{href:t.url,target:"_blank",rel:"noreferrer",className:"p-1.5 text-emerald-600 hover:bg-emerald-50 rounded",title:"Ouvrir",children:e.jsx(Fe,{size:16})}),e.jsx("button",{onClick:()=>Q(t.id),className:"p-1.5 text-slate-700 dark:text-slate-200 hover:text-red-500 hover:bg-red-50 rounded",title:"Supprimer",children:e.jsx(le,{size:16})})]})]},l))})]})})]})]}),y==="CONTACTS"&&e.jsxs("div",{className:"bg-white dark:bg-slate-900 p-6 rounded-xl border border-slate-200 dark:border-slate-800 shadow-sm h-full flex flex-col animate-in fade-in",children:[e.jsxs("div",{className:"flex justify-between items-center mb-6",children:[e.jsxs("h3",{className:"font-bold text-slate-800 dark:text-slate-100 flex items-center",children:[e.jsx(ne,{size:18,className:"mr-2 text-emerald-500"})," Liste des Interlocuteurs"]}),u&&e.jsxs("button",{onClick:()=>n({...a,contacts:[...a.contacts||[],{id:Date.now().toString(),name:"",role:"",email:"",ph
5one:""}]}),className:"bg-emerald-600 hover:bg-emerald-700 text-white px-3 py-1.5 rounded-lg text-xs font-bold flex items-center shadow-lg shadow-emerald-200 dark:shadow-none",children:[e.jsx(Z,{size:14,className:"mr-1"})," Ajouter un contact"]})]}),e.jsx("div",{className:"space-y-4 overflow-y-auto pr-2",children:!a.contacts||a.contacts.length===0?e.jsxs("div",{className:"text-center py-12 text-slate-700 dark:text-slate-200 bg-slate-50 dark:bg-slate-900/50 rounded-lg border border-dashed border-slate-200 dark:border-slate-800",children:[e.jsx(ne,{size:32,className:"mx-auto mb-3 opacity-30"}),e.jsx("p",{className:"text-sm",children:"Aucun interlocuteur enregistré."}),u&&e.jsx("p",{className:"text-xs text-emerald-600 mt-2 font-bold",children:'Cliquez sur "Ajouter" pour commencer'})]}):a.contacts.map((t,l)=>e.jsxs("div",{className:"p-4 bg-slate-50 dark:bg-slate-900/50 rounded-xl border border-slate-100 dark:border-slate-800 hover:border-emerald-300 transition-colors relative group",children:[u&&e.jsx("button",{onClick:()=>{var o;const h=(o=a.contacts)==null?void 0:o.filter(H=>H.id!==t.id);n({...a,contacts:h})},className:"absolute top-2 right-2 p-1.5 text-slate-400 hover:text-red-500 hover:bg-red-50 rounded transition-colors",children:e.jsx(le,{size:16})}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] uppercase font-bold text-slate-500 dark:text-slate-400",children:"Nom"}),u?e.jsx("input",{type:"text",value:t.name,onChange:h=>{const o=[...a.contacts||[]];o[l]={...t,name:h.target.value},n({...a,contacts:o})},className:"w-full p-2 text-sm border rounded dark:bg-slate-800 dark:border-slate-600 dark:text-white",placeholder:"Nom Prénom"}):e.jsx("p",{className:"font-bold text-slate-800 dark:text-slate-100",children:t.name})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] uppercase font-bold text-slate-500 dark:text-slate-400",children:"Rôle / Poste"}),u?e.jsx("input",{type:"text",value:t.role||"",onChange:h=>{const o=[...a.contacts||[]];o[l]={...t,role:h.target.value},n({...a,contacts:o})},className:"w-full p-2 text-sm border rounded dark:bg-slate-800 dark:border-slate-600 dark:text-white",placeholder:"Ex: Comptable, Gardien..."}):e.jsx("p",{className:"text-sm text-slate-700 dark:text-slate-300",children:t.role||"-"})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] uppercase font-bold text-slate-500 dark:text-slate-400",children:"Email"}),u?e.jsx("input",{type:"email",value:t.email||"",onChange:h=>{const o=[...a.contacts||[]];o[l]={...t,email:h.target.value},n({...a,contacts:o})},className:"w-full p-2 text-sm border rounded dark:bg-slate-800 dark:border-slate-600 dark:text-white",placeholder:"[email protected]"}):e.jsxs("a",{href:`mailto:${t.email}`,className:"text-sm text-emerald-600 hover:underline flex items-center",children:[e.jsx(K,{size:14,className:"mr-2"})," ",t.email||"-"]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] uppercase font-bold text-slate-500 dark:text-slate-400",children:"Téléphone"}),u?e.jsx("input",{type:"tel",value:t.phone||"",onChange:h=>{const o=[...a.contacts||[]];o[l]={...t,phone:h.target.value},n({...a,contacts:o})},className:"w-full p-2 text-sm border rounded dark:bg-slate-800 dark:border-slate-600 dark:text-white",placeholder:"06..."}):e.jsxs("a",{href:`tel:${t.phone}`,className:"text-sm text-slate-700 dark:text-slate-300 hover:text-emerald-600 flex items-center",children:[e.jsx(J,{size:14,className:"mr-2"})," ",t.phone||"-"]})]})]})]})]},t.id))})]})]})})},Ke=({clients:d,projects:L=[],onAddClient:V,onDeleteClient:F,onUpdateClient:q,onNavigateToProject:N,onCreateProject:E,onBulkAddProjects:O})=>{const[T,u]=c.useState(""),z=Ge(T,300),[y,w]=c.useState(!1),[a,n]=c.useState(null),[I,G]=c.useState("ALL"),[S,ee]=c.useState("name"),[R,A]=c.useState(null),[m,b]=c.useState({name:"",email:"",phone:"",address:"",zipCode:"",city:"",type:"PARTICULIER"}),j=c.useMemo(()=>{const s=new Map;
5return L.forEach(x=>{var r;if((r=x.client)!=null&&r.id){const p=s.get(x.client.id)||{projectsCount:0,revenue:0};s.set(x.client.id,{projectsCount:p.projectsCount+1,revenue:p.revenue+(x.budget||0)})}}),s},[L]),v=c.useMemo(()=>{const s=z.toLowerCase().trim();let x=d.filter(r=>{var U,$,B,M;if(!(r.name.toLowerCase().includes(s)||((U=r.email)==null?void 0:U.toLowerCase().includes(s))||(($=r.phone)==null?void 0:$.toLowerCase().includes(s))||((B=r.city)==null?void 0:B.toLowerCase().includes(s))||((M=r.zipCode)==null?void 0:M.toLowerCase().includes(s)))||I!=="ALL"&&r.type!==I)return!1;if(s.length>0)return!0;const i=r.type==="PARTENAIRE"||r.type==="SOUS_TRAITANT",g=(r.name||"").toLowerCase(),f=g.replace(/[^a-z0-9]/g,"");return g.includes("coop")||g.includes("syndic")||f.includes("coop")||/\bcop\b/.test(g)||g.includes("cop ")?!0:!i});return x=[...x].sort((r,p)=>{if(S==="name")return(r.name||"").localeCompare(p.name||"");if(S==="projects"){const i=j.get(r.id||"")||{projectsCount:0};return(j.get(p.id||"")||{projectsCount:0}).projectsCount-i.projectsCount}if(S==="revenue"){const i=j.get(r.id||"")||{revenue:0};return(j.get(p.id||"")||{revenue:0}).revenue-i.revenue}return 0}),x},[d,z,I,S,j]),P=c.useCallback(s=>{if(!s.email&&!s.phone)return null;const x=d.filter(r=>{if(r.id===s.id)return!1;const p=s.email&&r.email&&s.email.toLowerCase()===r.email.toLowerCase(),i=s.phone&&r.phone&&s.phone.replace(/\s/g,"")===r.phone.replace(/\s/g,"");return p||i});return x.length>0?`Attention: Un client similaire existe déjà (${x[0].name})`:null},[d]),W=c.useCallback(s=>{s.preventDefault();const x=We(Ye,m);if(!x.success){Ae.handleAndShow({message:x.errors.join(`
6`),type:Ie.VALIDATION},"ClientsPage - Add Client");return}const r=P(m);r&&(A(r),setTimeout(()=>A(null),5e3)),V(m),w(!1),b({name:"",email:"",phone:"",address:"",zipCode:"",city:"",type:"PARTICULIER"}),A(null)},[m,V,P]),te=c.useCallback(s=>{b(x=>({...x,address:s.street||s.fullAddress,city:s.city,zipCode:s.zipCode}))},[]),Y=c.useCallback(s=>{switch(s){case"PARTICULIER":return{label:"Particulier",cls:"bg-emerald-50 text-emerald-700 dark:bg-emerald-950/30 dark:text-emerald-400",icon:_,color:"emerald"};case"ENTREPRISE":return{label:"Entreprise",cls:"bg-blue-50 text-blue-700 dark:bg-blue-950/30 dark:text-blue-400",icon:ge,color:"blue"};case"ARCHITECTE":return{label:"Architecte",cls:"bg-violet-50 text-violet-700 dark:bg-violet-950/30 dark:text-violet-400",icon:$e,color:"violet"};case"SYNDIC":return{label:"Syndic",cls:"bg-purple-50 text-purple-700 dark:bg-purple-950/30 dark:text-purple-400",icon:Ue,color:"purple"};case"PARTENAIRE":return{label:"Partenaire",cls:"bg-amber-50 text-amber-700 dark:bg-amber-950/30 dark:text-amber-400",icon:je,color:"amber"};case"SOUS_TRAITANT":return{label:"Sous-Traitant",cls:"bg-cyan-50 text-cyan-700 dark:bg-cyan-950/30 dark:text-cyan-400",icon:je,color:"cyan"};case"BAILLEUR":return{label:"Bailleur",cls:"bg-orange-50 text-orange-700 dark:bg-orange-950/30 dark:text-orange-400",icon:ge,color:"orange"};case"SCI":return{label:"SCI",cls:"bg-rose-50 text-rose-700 dark:bg-rose-950/30 dark:text-rose-400",icon:ne,color:"rose"};default:return{label:"Particulier",cls:"bg-slate-50 text-slate-600 dark:bg-slate-800 dark:text-slate-400",icon:_,color:"slate"}}},[]),se={emerald:"bg-emerald-500",blue:"bg-blue-500",violet:"bg-violet-500",purple:"bg-purple-500",amber:"bg-amber-500",cyan:"bg-cyan-500",orange:"bg-orange-500",rose:"bg-rose-500",slate:"bg-slate-500"},k="w-full p-2.5 bg-white dark:bg-slate-800 border border-slate-200 dark:border-slate-700 rounded-xl focus:ring-2 focus:ring-teal-500/20 focus:border-teal-500 outline-none text-slate-900 dark:text-white placeholder-slate-400 text-sm transition-all",C="block text-xs font-semibold text-slate-600 dark:text-slate-400 uppercase tracking-wider mb-1.5",Q=c.useMemo(()=>{let s=0;return j.forEach(x=>s+=x.revenue),s},[j]);return e.jsxs("div",{className:"space-y-6 animate-fade-in",children:[e.jsxs("div",{className:"flex flex-col lg:flex-row justify-between items-start lg:items-center gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-slate-900 dark:text-white tracking-tight",children:"Base Clients"}),e.jsxs("p",{className:"text-sm text-slate-500 dark:text-slate-400 mt-1 flex items-center gap-3",children:[e.jsx("span",{className:"font-semibold text-teal-600 dar
6k:text-teal-400",children:v.length})," client",v.length>1?"s":"",Q>0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-slate-300 dark:text-slate-600",children:"•"}),e.jsx("span",{className:"font-semibold text-emerald-600 dark:text-emerald-400",children:Q.toLocaleString("fr-FR",{style:"currency",currency:"EUR",maximumFractionDigits:0})})," de CA"]})]})]}),e.jsxs("button",{onClick:()=>w(!0),className:"flex items-center gap-2 bg-teal-600 hover:bg-teal-700 text-white px-5 py-2.5 rounded-xl font-semibold shadow-sm hover:shadow-md transition-all text-sm",children:[e.jsx(Z,{size:18}),"Nouveau Client"]})]}),e.jsx("div",{className:"bg-white dark:bg-slate-900 rounded-2xl border border-slate-200/80 dark:border-slate-800 shadow-soft p-4",children:e.jsxs("div",{className:"flex flex-col md:flex-row gap-3",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(Be,{className:"absolute left-3.5 top-1/2 -translate-y-1/2 text-slate-400",size:18}),e.jsx("input",{type:"text",name:"client-search",autoComplete:"off",autoCorrect:"off",spellCheck:"false",placeholder:"Rechercher par nom, email, téléphone, ville...",value:T,onChange:s=>u(s.target.value),className:"w-full pl-10 pr-4 py-2.5 bg-slate-50 dark:bg-slate-800 border border-slate-200 dark:border-slate-700 rounded-xl focus:ring-2 focus:ring-teal-500/20 focus:border-teal-500 outline-none text-sm text-slate-900 dark:text-white placeholder-slate-400 transition-all"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("div",{className:"relative",children:[e.jsx(Me,{size:14,className:"absolute left-3 top-1/2 -translate-y-1/2 text-slate-400 pointer-events-none"}),e.jsxs("select",{value:I,onChange:s=>G(s.target.value),className:"pl-8 pr-8 py-2.5 bg-slate-50 dark:bg-slate-800 border border-slate-200 dark:border-slate-700 rounded-xl text-sm text-slate-700 dark:text-slate-300 focus:ring-2 focus:ring-teal-500/20 focus:border-teal-500 outline-none appearance-none cursor-pointer transition-all",children:[e.jsx("option",{value:"ALL",children:"Tous les types"}),e.jsx("option",{value:"PARTICULIER",children:"Particuliers"}),e.jsx("option",{value:"ENTREPRISE",children:"Entreprises"}),e.jsx("option",{value:"ARCHITECTE",children:"Architectes"}),e.jsx("option",{value:"SYNDIC",children:"Syndics"}),e.jsx("option",{value:"BAILLEUR",children:"Bailleurs"}),e.jsx("option",{value:"SCI",children:"SCI"})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(He,{size:14,className:"absolute left-3 top-1/2 -translate-y-1/2 text-slate-400 pointer-events-none"}),e.jsxs("select",{value:S,onChange:s=>ee(s.target.value),className:"pl-8 pr-8 py-2.5 bg-slate-50 dark:bg-slate-800 border border-slate-200 dark:border-slate-700 rounded-xl text-sm text-slate-700 dark:text-slate-300 focus:ring-2 focus:ring-teal-500/20 focus:border-teal-500 outline-none appearance-none cursor-pointer transition-all",children:[e.jsx("option",{value:"name",children:"Tri: Nom"}),e.jsx("option",{value:"projects",children:"Tri: Projets"}),e.jsx("option",{value:"revenue",children:"Tri: CA"})]})]})]})]})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4",children:v.length>0?v.map((s,x)=>{const r=Y(s.type),p=r.icon,i=j.get(s.id||"")||{projectsCount:0,revenue:0},g=se[r.color]||"bg-slate-500";return e.jsxs("div",{onClick:()=>n(s),className:"bg-white dark:bg-slate-900 rounded-2xl border border-slate-200/80 dark:border-slate-800 shadow-soft hover:shadow-medium hover:border-slate-300 dark:hover:border-slate-700 transition-all duration-200 cursor-pointer group p-5",children:[e.jsxs("div",{className:"flex items-start gap-3.5 mb-4",children:[e.jsx("div",{className:`h-11 w-11 rounded-xl flex items-center justify-center text-white font-bold text-lg flex-shrink-0 ${g}`,children:s.name.charAt(0).toUpperCase()}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"font-semibold text-slate-900 dark:text-white text-sm leading-tight truncate",children:s.name}),e.jsxs("span",{className:`inline-flex items-center gap-1 text-[10px] font-semibold px-2 py-0.5 rounded-md mt-1 ${r.cls}`,children:[e.jsx(p,{size:10}),r.label]})]}),e.jsx("button",{onClick:f=>{f.stopPropagation(),n(s)},className:"p-2 rounded-lg text-slate-400 hover:text-teal-600 hover:bg-teal-50 dark:hover:bg-teal-950/30 dark:hover:text-teal-400 opacity-0 group-hover:opacity-100 transition-all",children:e.jsx(_e,{size:16})})]}),i.projectsCount>0&&e.jsxs("div",{className:"flex items-center gap-4 mb-4 p-3 rounded-xl bg-slate-50 dark:bg-slate-800/50 border border-slate-100 dar
6k:border-slate-800",children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-xs font-semibold text-slate-700 dark:text-slate-300",children:[e.jsx(Ne,{size:13,className:"text-slate-400"}),i.projectsCount," projet",i.projectsCount>1?"s":""]}),i.revenue>0&&e.jsxs("div",{className:"flex items-center gap-1.5 text-xs font-semibold text-emerald-600 dark:text-emerald-400",children:[e.jsx(Ve,{size:13}),new Intl.NumberFormat("fr-FR",{style:"currency",currency:"EUR",maximumFractionDigits:0}).format(i.revenue)]})]}),e.jsxs("div",{className:"space-y-2 text-sm",children:[e.jsxs("div",{className:"flex items-center gap-2.5 text-slate-600 dark:text-slate-400",children:[e.jsx(K,{size:14,className:"text-slate-400 flex-shrink-0"}),e.jsx("span",{className:"truncate text-xs",children:s.email||"Non renseigné"})]}),e.jsxs("div",{className:"flex items-center gap-2.5 text-slate-600 dark:text-slate-400",children:[e.jsx(J,{size:14,className:"text-slate-400 flex-shrink-0"}),e.jsx("span",{className:"truncate text-xs",children:s.phone||"Non renseigné"})]}),(s.address||s.city)&&e.jsxs("div",{className:"flex items-start gap-2.5 text-slate-600 dark:text-slate-400",children:[e.jsx(fe,{size:14,className:"text-slate-400 flex-shrink-0 mt-0.5"}),e.jsxs("span",{className:"text-xs line-clamp-1",children:[s.address,s.zipCode||s.city?`, ${s.zipCode} ${s.city}`:""]})]})]}),e.jsxs("div",{className:"mt-4 pt-3 border-t border-slate-100 dark:border-slate-800 flex gap-2",children:[e.jsxs("button",{onClick:f=>{f.stopPropagation(),E&&E(s)},className:"flex-1 flex items-center justify-center gap-1.5 px-3 py-2 bg-teal-600 hover:bg-teal-700 text-white rounded-xl text-xs font-semibold transition-colors shadow-sm",children:[e.jsx(Z,{size:14}),"Projet"]}),e.jsxs("button",{onClick:f=>{f.stopPropagation(),n(s)},className:"flex-1 flex items-center justify-center gap-1.5 px-3 py-2 bg-slate-100 dark:bg-slate-800 hover:bg-slate-200 dark:hover:bg-slate-700 text-slate-700 dark:text-slate-300 rounded-xl text-xs font-semibold transition-colors",children:[e.jsx(X,{size:14}),"Détails"]})]})]},s.id||x)}):e.jsxs("div",{className:"col-span-full flex flex-col items-center justify-center py-16 text-slate-400 bg-white dark:bg-slate-900 rounded-2xl border border-dashed border-slate-300 dark:border-slate-700",children:[e.jsx("div",{className:"p-4 bg-slate-100 dark:bg-slate-800 rounded-2xl mb-4",children:e.jsx(_,{size:32,className:"text-slate-400"})}),e.jsx("p",{className:"font-semibold text-slate-600 dark:text-slate-300",children:"Aucun client trouvé"}),e.jsx("p",{className:"text-sm mt-1",children:"Essayez de modifier vos filtres ou ajoutez un nouveau client"})]})}),y&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 backdrop-blur-sm p-4",children:e.jsxs("div",{className:"bg-white dark:bg-slate-900 rounded-2xl w-full max-w-lg shadow-elevated overflow-hidden animate-scale-in border border-slate-200 dark:border-slate-800",children:[e.jsxs("div",{className:"px-6 py-4 border-b border-slate-100 dark:border-slate-800 flex justify-between items-center",children:[e.jsx("h3",{className:"text-lg font-bold text-slate-900 dark:text-white",children:"Nouveau Client"}),e.jsx("button",{onClick:()=>w(!1),className:"p-1.5 rounded-lg text-slate-400 hover:text-slate-600 hover:bg-slate-100 dark:hover:bg-slate-800 transition-colors",children:e.jsx(re,{size:18})})]}),e.jsxs("form",{onSubmit:W,className:"p-6 space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:C,children:"Type de Contact"}),e.jsxs("select",{value:m.type,onChange:s=>b({...m,type:s.target.value}),className:k,children:[e.jsx("option",{value:"PARTICULIER",children:"Particulier (Client)"}),e.jsx("option",{value:"ENTREPRISE",children:"Entreprise (Client)"}),e.jsx("option",{value:"SCI",children:"SCI (Société Civile Immobilière)"}),e.jsx("option",{value:"BAILLEUR",children:"Bailleur Social / Privé"}),e.jsx("option",{value:"ARCHITECTE",children:"Architecte (Apporteur)"}),e.jsx("option",{value:"SYNDIC",children:"Syndic de Copro"})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:C,children:"Nom Complet / Raison Sociale"}),e.jsx("input",{required:!0,type:"text",value:m.name,onChange:s=>b({...m,name:s.target.value}),className:k})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:C,children:"Email"}),e.jsx("input",{type:"email",value:m.email,onChange:s=>b({...m,email:s.target.value}),className:k})]}),e.jsxs("div",{children:[e.jsx("label",{className:C,children:"Téléphone"}),e.jsx("input",{type:"tel",value:m.phone,onChange:s=>b({...m,phone:s.target.value}),className:k})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:C,children:"Adresse"}),e.jsx(ve,{value:m.address,onChange:s=>b({...m,address:s}),onSelect:te,placeholder:"Saisir une adresse...",className:k})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"col-span-1",children:[e.jsx("label",{className:C,children:"Code Postal"}),e.jsx("input",{type:"text",value:m.zipCode,onChange:s=>b({...m,zipCode:s.target.value}),className:k})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("label",{className:C,children:"Ville"}),e.jsx("input",{type:"text",value:m.city,onChange:s=>b({...m,city:s.target.value}),className:k})]})]}),R&&e.jsxs("div",{className:"bg-amber-50 dark:bg-amber-900/20 border border-amber-200 dark:border-amber-800 rounded-xl p-3 flex items-start gap-2 text-sm text-amber-800 dark:text-amber-200",children:[e.jsx(qe,{size:16,className:"mt-0.5 flex-shrink-0"}),e.jsx("span",{children:R})]}),e.jsxs("div",{className:"flex justify-end pt-4 space-x-3",children:[e.jsx("button",{type:"button",onClick:()=>
6w(!1),className:"px-4 py-2.5 text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800 rounded-xl text-sm font-medium transition-colors",children:"Annuler"}),e.jsx("button",{type:"submit",className:"px-6 py-2.5 bg-teal-600 hover:bg-teal-700 text-white rounded-xl text-sm font-semibold shadow-sm transition-colors",children:"Enregistrer"})]})]})]})}),a&&e.jsx(Qe,{client:a,projects:L,isOpen:!!a,onClose:()=>n(null),onDelete:()=>{F(a),n(null)},onUpdate:s=>{q&&q(s),n(s)},onProjectClick:s=>{N&&(n(null),N(s))},onCreateProject:s=>{E&&(E(s),n(null))},onBulkAdd:s=>{O&&O(s)}})]})},lt=Oe.memo(Ke);export{lt as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.