PageSourceSearch

https://planifytms.app/assets/VehicleDetailsPanel-Dagjn7jz.js

js planifytms.app collected 2026-10-08 03:22:35 UTC 21,817 bytes, 11 lines download raw bytes

1import{r as c,j as e}from"./framer-D8q0liQH.js";import{c as se,B as f,a7 as je,ab as ge,Y as b,C as ae,F as te,h as P,v as k,X as fe,f as G,a2 as ve,M as Ne}from"./index-ZCneovJ4.js";import{B as U,u as ye,S as q}from"./useModules-CvkHlQnY.js";import{r as be,D as we,F as De,m as _e,n as Ce,o as Se,p as Me,s as M,t as A,v as E,w as T,x,q as Ae,H as Ee,I as W,T as re,J as Te,K as Pe,y as Fe,z as qe,B as J,E as X}from"./AppLayout-9thLlEvX.js";import{A as ne,a as ie,b as le,c as ce,d as de,e as oe,f as me,g as ue,h as xe}from"./alert-dialog-cjQKQYuJ.js";import{L as o,I as w}from"./label-DMGxucyz.js";import{captureException as ke}from"./sentry-0mLGttP6.js";import{S as ze}from"./skeleton-CUvHKpmX.js";import{U as Ie}from"./upload-BAwKBxIV.js";import{E as Ve}from"./eye-CGmuAyjO.js";import{f as F}from"./fr-Cd_6W2Rj.js";import{g as Ue}from"./cnrDefaults-4yex7q4B.js";import{C as Z}from"./car-mmb_0zZX.js";import{F as Le}from"./fuel-CMePX3pp.js";import{C as Ke}from"./clock-B6UiDW8z.js";import{U as Be}from"./user-DX29GLIE.js";import{e as z,i as He}from"./isWithinInterval-Bi7Qqunk.js";/**
2 * @license lucide-react v0.462.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const Oe=se("Gauge",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);/**
7 * @license lucide-react v0.462.0 - ISC
8 *
9 * This source code is licensed under the ISC license.
10 * See the LICENSE file in the root directory of this source tree.
11 */const he=se("SquarePen",[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]]),ee={available:{label:"Disponible",className:"bg-success/15 text-success"},in_use:{label:"En service",className:"bg-info/15 text-info"},maintenance:{label:"Maintenance",className:"bg-warning/15 text-warning"},out_of_service:{label:"Hors service",className:"bg-destructive/15 text-destructive"}},Ye=[{value:"diesel",label:"Diesel"},{value:"essence",label:"Essence"},{value:"hybrid",label:"Hybride"},{value:"electric",label:"Électrique"}];function Re({vehicle:a,drivers:_,onEditVehicle:h,trigger:C}){const{vehicleTypes:D}=be(),[v,g]=c.useState(!1),[N,r]=c.useState(a.name),[l,i]=c.useState(a.type),[m,d]=c.useState(a.licensePlate),[p,y]=c.useState(a.capacity.toString()),[u,s]=c.useState(a.brand),[n,S]=c.useState(a.model),[j,L]=c.useState(a.year.toString()),[K,B]=c.useState(a.mileage.toString()),[H,O]=c.useState(a.fuelType),[Y,R]=c.useState(a.status),[Q,$]=c.useState(a.assignedDriverId||"");c.useEffect(()=>{r(a.name),i(a.type),d(a.licensePlate),y(a.capacity.toString()),s(a.brand),S(a.model),L(a.year.toString()),B(a.mileage.toString()),O(a.fuelType),R(a.status),$(a.assignedDriverId||"")},[a]);const pe=t=>{t.preventDefault(),!(!N||!l||!m||!p||!u||!n)&&(h({...a,name:N,type:l,licensePlate:m.toUpperCase(),capacity:parseInt(p),brand:u,model:n,year:parseInt(j),mileage:parseInt(K)||0,fuelType:H,status:Y,assignedDriverId:Q||void 0}),g(!1))};return e.jsxs(we,{open:v,onOpenChange:g,children:[e.jsx(De,{asChild:!0,children:C||e.jsxs(f,{variant:"outline",children:[e.jsx(he,{className:"h-4 w-4 mr-2"}),"Modifier"]})}),e.jsxs(_e,{className:"sm:max-w-[500px] max-h-[90vh] overflow-y-auto",children:[e.jsxs(Ce,{children:[e.jsx(Se,{children:"Modifier le véhicule"}),e.jsx(Me,{children:"Modifiez les informations du véhicule."})]}),e.jsxs("form",{onSubmit:pe,className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"name",children:"Nom du véhicule"}),e.jsx(w,{id:"name",value:N,onChange:t=>r(t.target.value),placeholder:"ex: Porteur Alpha",required:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"licensePlate",children:"Immatriculation"}),e.jsx(w,{id:"licensePlate",value:m,onChange:t=>d(t.target.value),placeholder:"AB-123-CD",required:!0})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"brand",children:"Marque"}),e.jsx(w,{id:"brand",value:u,onChange:t=>s(t.target.value),placeholder:"Mercedes",required:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"model",children:"Modèle"}),e.jsx(w,{id:"model",value:n,onChange:t=>S(t.target.value),placeholder:"Sprinter",required:!0})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"type",children:"Type de véhicule"}),e.jsxs(M,{value:l,onValueChange:i,required:!0,children:[e.jsx(A,{children:e.jsx(E,{placeholder:"Sélectionner"})}),e.jsx(T,{children:D.map(t=>e.jsx(x,{value:t,children:t},t))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"capacity",children:"Capacité (m³)"}),e.jsx(w,{id:"capacity",type:"number",value:p,onChange:t=>y(t.target.value),placeholder:"30",min:"1",required:!0})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"year",children:"Année"}),e.jsx(w,{id:"year",type:"number",value:j,onChange:t=>L(t.target.value),min:"2000",max:new Date().getFullYear()+1,required:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"mileage",children:"Kilométrage"}),e.jsx(w,{id:"mileage",type:"number",value:K,onChange:t=>B(t.target.value),placeholder:"0",min:"0"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"fuelType",children:"Carburant"}),e.jsxs(M,{value:H,onValueChange:t=>O(t),children:[e.jsx(A,{children:e.jsx(E,{})}),e.jsx(T,{children:Ye.map(t=>e.jsx(x,{value:t.value,children:t.label},t.value))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"status",children:"Statut"}),e.jsxs(M,{value:Y,onValueChange:t=>R(t),children:[e.jsx(A,{children:e.jsx(E,{})}),e.jsxs(T,{children:[e.jsx(x,{value:"available",children:"Disponible"}),e.jsx(x,{value:"in_use",children:"En service"}),e.jsx(x,{value:"maintenance",children:"Maintenance"}),e.jsx(x,{value:"out_of_service",children:"Hors service"})]})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(o,{htmlFor:"driver",children:"Chauffeur assigné"}),e.jsxs(M,{value:Q||"__none__",onValueChange:t=>$(t==="__none__"?"":t),children:[e.jsx(A,{children:e.jsx(E,{placeholder:"Aucun chauffeur"})}),e.jsxs(T,{children:[e.jsx(x,{value:"__none__",children:"Aucun"}),_.filter(t=>!t.archived).map(t=>e.jsx(x,{value:t.id,children:t.name},t.id))]})]})]}),e.jsxs(Ae,{children:[e.jsx(f,{type:"button",variant:"outline",onClick:()=>g(!1),children:"Annuler"}),e.jsx(f,{type:"submit",children:"Enregistrer"})]})]})]})]})}const I={carte_grise:"Carte grise",assurance:"Assurance",controle_technique:"Contrôle technique",contrat_location:"Contrat de location"},V=a=>["vehicle-documents",a];function Qe(a){const _=je(),{toast:h}=ge(),{data:C=[],isLoading:D}=Ee({queryKey:V(a),queryFn:async()=>{const{data:r,error:l}=await b.from("vehicle_documents").select("*").eq("vehicle_id",a).order("created_at",{ascending:!1});if(l)throw l;return(r||[]).map(i=>({id:i.id,vehicleId:i.vehicle_id,organizationId:i.organization_id,type:i.type,fileName:i.file_name,filePath:i.file_path,fileSize:i.file_size,mimeType:i.mime_type,expiresAt:i.expires_at,createdAt:i.created_at}))},enabled:!!a}),v=W({mutationFn:async({file:r,type:l,expiresAt:i})=>{const{data:{user:m}}=await b.auth.getUser();if(!m)throw new Error("Non authentifié");const{data:d,error:p}=await b.rpc("get_user_organization_id",{user_uuid:m.id});if(p)throw p;if(!d)throw new Error("Aucune organisation");const y=r.name.split(".").pop(),u=`${d}/${a}/${l}_${Date.now()}.${y}`,{error:s}=await b.storage.from("vehicle-documents").upload(u,r,{contentType:r.type});if(s)throw s;const{error:n}=await b.from("vehicle_documents").insert({vehicle_id:a,organization_id:d,type:l,file_name:r.name,file_path:u,file_size:r.size,mime_type:r.type,expires_at:i||null});if(n)throw await b.storage.from("vehicle-documents").remove([u]),n},onSuccess:()=>
11{_.invalidateQueries({queryKey:V(a)}),h({title:"Document ajouté",description:"Le document a été uploadé avec succès."})},onError:r=>{console.error("Upload error:",r),h({title:"Erreur",description:"Erreur lors de l'upload du document",variant:"destructive"})}}),g=W({mutationFn:async r=>{const{error:l}=await b.storage.from("vehicle-documents").remove([r.filePath]);if(l)throw ke(l,{extra:{filePath:r.filePath,docId:r.id,context:"deleteVehicleDocument.storage"}}),new Error("Impossible de supprimer le fichier. Le document n'a pas été supprimé.");const{error:i}=await b.from("vehicle_documents").delete().eq("id",r.id);if(i)throw i},onSuccess:()=>{_.invalidateQueries({queryKey:V(a)}),h({title:"Document supprimé",variant:"destructive"})},onError:r=>{console.error("Delete error:",r),h({title:"Erreur",description:"Erreur lors de la suppression",variant:"destructive"})}}),N=c.useCallback(async r=>{const{data:l,error:i}=await b.storage.from("vehicle-documents").createSignedUrl(r,3600);if(i)throw i;return l.signedUrl},[]);return{documents:C,isLoading:D,uploadDocument:v.mutateAsync,isUploading:v.isPending,deleteDocument:g.mutateAsync,isDeleting:g.isPending,getSignedUrl:N}}const $e=".jpg,.jpeg,.png,.webp,.pdf";function Ge({vehicleId:a}){const{documents:_,isLoading:h,uploadDocument:C,isUploading:D,deleteDocument:v,isDeleting:g,getSignedUrl:N}=Qe(a),r=c.useRef(null),[l,i]=c.useState("carte_grise"),[m,d]=c.useState(""),p=async s=>{const n=s.target.files?.[0];n&&(await C({file:n,type:l,expiresAt:m||void 0}),d(""),r.current&&(r.current.value=""))},y=async s=>{try{const n=await N(s.filePath);window.open(n,"_blank")}catch{}},u=Object.keys(I).map(s=>({type:s,label:I[s],docs:_.filter(n=>n.type===s)}));return h?e.jsx("div",{className:"space-y-4 p-1",children:[1,2,3].map(s=>e.jsx(ze,{className:"h-16 w-full"},s))}):e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{className:"space-y-3 p-3 rounded-lg border border-dashed border-border bg-muted/30",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Ajouter un document"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{className:"col-span-2",children:[e.jsx(o,{className:"text-xs text-muted-foreground",children:"Type de document"}),e.jsxs(M,{value:l,onValueChange:s=>i(s),children:[e.jsx(A,{className:"h-8 text-sm",children:e.jsx(E,{})}),e.jsx(T,{children:Object.entries(I).map(([s,n])=>e.jsx(x,{value:s,children:n},s))})]})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsxs(o,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[e.jsx(ae,{className:"h-3 w-3"})," Date d'expiration (optionnel)"]}),e.jsx(w,{type:"date",value:m,onChange:s=>d(s.target.value),className:"h-8 text-sm"})]})]}),e.jsx("input",{ref:r,type:"file",accept:$e,onChange:p,className:"hidden"}),e.jsxs(f,{variant:"outline",size:"sm",className:"w-full gap-2",disabled:D,onClick:()=>r.current?.click(),children:[e.jsx(Ie,{className:"h-4 w-4"}),D?"Upload en cours…":"Choisir un fichier"]})]}),u.map(({type:s,label:n,docs:S})=>e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wide",children:n}),S.length===0?e.jsx("p",{className:"text-xs text-muted-foreground italic pl-1",children:"Aucun document"}):S.map(j=>e.jsxs("div",{className:"flex items-center gap-2 p-2 rounded-lg bg-muted/40 text-sm",children:[e.jsx(te,{className:"h-4 w-4 text-muted-foreground shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium truncate",children:j.fileName}),e.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[e.jsx("span",{children:P(new Date(j.createdAt),"dd MMM yyyy",{locale:F})}),j.expiresAt&&e.jsxs(U,{variant:"outline",className:"text-[10px] px-1.5 py-0",children:["Exp. ",P(new Date(j.expiresAt),"dd/MM/yyyy")]})]})]}),e.jsx(f,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:()=>y(j),children:e.jsx(Ve,{className:"h-3.5 w-3.5"})}),e.jsxs(ne,{children:[e.jsx(ie,{asChild:!0,children:e.jsx(f,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0 text-destructive hover:text-destructive",children:e.jsx(re,{className:"h-3.5 w-3.5"})})}),e.jsxs(le,{children:[e.jsxs(ce,{children:[e.jsx(de,{children:"Supprimer ce document ?"}),e.jsxs(oe,{children:["Le fichier ",e.jsx("strong",{children:j.fileName})," sera définitivement supprimé."]}
11)]}),e.jsxs(me,{children:[e.jsx(ue,{children:"Annuler"}),e.jsx(xe,{disabled:g,onClick:()=>v(j),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"Supprimer"})]})]})]})]},j.id))]},s))]})}const We={diesel:"Diesel",essence:"Essence",hybrid:"Hybride",electric:"Électrique"};function hs({vehicle:a,driver:_,drivers:h,missions:C,onClose:D,onStatusChange:v,onDriverChange:g,onDelete:N,onEdit:r}){const{isActive:l}=ye(),i=ee[a.status],m=k(new Date),d=C.filter(s=>s.vehicleRequired===a.type),p=d.filter(s=>{const n=k(new Date(s.date)),S=s.endDate?z(new Date(s.endDate)):z(n);return He(new Date,{start:n,end:S})}),y=d.filter(s=>Te(k(new Date(s.date)),m)).sort((s,n)=>new Date(s.date).getTime()-new Date(n.date).getTime()).slice(0,5),u=d.filter(s=>{const n=s.endDate?new Date(s.endDate):new Date(s.date);return Pe(z(n),m)}).sort((s,n)=>new Date(n.date).getTime()-new Date(s.date).getTime()).slice(0,5);return e.jsx("div",{className:"fixed inset-y-0 right-0 w-full sm:w-96 bg-card border-l border-border shadow-elevated z-50 animate-fade-in",children:e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-border",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-lg bg-primary/10",children:e.jsx(Z,{className:"h-5 w-5 text-primary"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"font-semibold",children:a.name}),e.jsx("p",{className:"text-sm text-muted-foreground",children:a.licensePlate})]})]}),e.jsx(f,{variant:"ghost",size:"icon",onClick:D,children:e.jsx(fe,{className:"h-5 w-5"})})]}),e.jsxs(Fe,{defaultValue:"info",className:"flex-1 flex flex-col min-h-0",children:[e.jsxs(qe,{className:"mx-4 mt-2 grid w-auto grid-cols-2",children:[e.jsxs(J,{value:"info",className:"text-xs gap-1.5",children:[e.jsx(Z,{className:"h-3.5 w-3.5"})," Infos"]}),e.jsxs(J,{value:"documents",className:"text-xs gap-1.5",children:[e.jsx(te,{className:"h-3.5 w-3.5"})," Documents"]})]}),e.jsxs(X,{value:"info",className:"flex-1 overflow-y-auto p-4 space-y-6 mt-0",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-sm font-medium",children:"Statut"}),e.jsxs(M,{value:a.status,onValueChange:s=>v(a.id,s),children:[e.jsx(A,{children:e.jsx(E,{children:e.jsx(U,{className:G("text-xs",i.className),children:i.label})})}),e.jsx(T,{children:Object.entries(ee).map(([s,n])=>e.jsx(x,{value:s,children:e.jsx(U,{className:G("text-xs",n.className),children:n.label})},s))})]})]}),e.jsx(q,{}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-sm font-medium",children:"Informations véhicule"}),e.jsxs("div",{className:"grid grid-cols-2 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Marque"}),e.jsx("p",{className:"font-medium",children:a.brand})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Modèle"}),e.jsx("p",{className:"font-medium",children:a.model})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Type"}),e.jsx("p",{className:"font-medium",children:a.type})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Année"}),e.jsx("p",{className:"font-medium",children:a.year})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Capacité"}),e.jsxs("p",{className:"font-medium",children:[a.capacity," places"]})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(Le,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{className:"font-medium",children:We[a.fuelType]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 p-3 rounded-lg bg-muted/50",children:[e.jsx(Oe,{className:"h-5 w-5 text-muted-foreground"}),e.jsxs("div",{children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"Kilométrage"}),e.jsxs("p",{className:"font-semibold",children:[a.mileage.toLocaleString()," km"]})]})]}),l("cout_de_revient")&&e.jsxs("div",{className:"space-y-2 p-3 rounded-lg bg-muted/50",children:[e.jsx(o,{className:"text-xs text-muted-foreground",children:"Coût au km (€/km)"}),e.jsx("div",{className:"flex gap-2 items-center",children:e.jsx(w,{type:"number",step:"0.01",placeholder:"Ex: 0.45",value:a.costPerKm??"",onChange:s=>{const n=s.target.value?Number(s.target.value):void 0;v&&r({...a,costPerKm:n})},className:"h-8 text-sm"})}),!a.costPerKm&&(()=>{const s=Ue(a.type);return s?e.jsxs(f,{variant:"outline",size:"sm",className:"w-full text-xs gap-1",onClick:()=>r({...a,costPerKm:s.costPerKm}),children:["Appliquer valeur par défaut (",s.costPerKm," €/km)"]}):null})()]})]}),e.jsx(q,{}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("h3",{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(ve,{className:"h-4 w-4"})," Maintenance"]}),e.jsxs("div",{className:"space-y-2 text-sm",children:[a.lastMaintenance&&e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Dernière maintenance"}),e.jsx("span",{className:"font-medium",children:P(a.lastMaintenance,"dd MMMM yyyy",{locale:F})})]}),a.nextMaintenance&&e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Prochaine maintenance"}),e.jsx("span",{className:"font-medium",children:P(a.nextMaintenance,"dd MMMM yyyy",{locale:F})})]})]})]}),e.jsx(q,{}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("h3",{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(ae,{className:"h-4 w-4"})," Missions"]}),p.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("span",{className:"text-xs font-medium text-warning flex items-center gap-1",children:[e.jsx(Ke,{className:"h-3 w-3"})," En cours aujourd'hui"]}),p.map(s=>e.jsxs("div",{className:"p-2 rounded-lg bg-warning/10 border border-warning/20 text-sm",children:[e.jsx("div",{className:"font-medium",children:s.title}),e.jsxs("div",{className:"text-xs text-muted-foreground flex items-center gap-2 mt-1",children:[e.jsx("span",{children:s.client}),s.location&&e.jsxs(e.Fragment,{children:[e.jsx("span",{children:"•"}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(Ne,{className:"h-3 w-3"}),s.location]})]})]})]},s.id))]}),y.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:"À venir"}),y.map(s=>e.jsxs("div",{className:"p-2 rounded-lg bg-muted/50 text-sm",children:[e.jsxs("div",{className:"flex justify-between items-start",children:[e.jsx("span",{className:"font-medium",children:s.title}),e.jsx("span",{className:"text-xs text-muted-foreground",children:P(new Date(s.date),"dd MMM",{locale:F})})]}),e.jsx("div",{className:"text-xs text-muted-foreground",children:s.client})]},s.id))]}),u.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:"Récentes"}),u.map(s=>e.jsxs("div",{className:"p-2 rounded-lg bg-muted/30 text-sm opacity-70",children:[e.jsxs("div",{className:"flex justify-between items-start",children:[e.jsx("span",{className:"font-medium",children:s.title}),e.jsx("span",{className:"text-xs text-muted-foreground",children:P(new Date(s.date),"dd MMM",{locale:F})})]}),e.jsx("div",{className:"text-xs text-muted-foreground",children:s.client})]},s.id))]}),d.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground text-center py-2",children:"Aucune mission assignée"})]}),e.jsx(q,{}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("label",{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(Be,{className:"h-4 w-4"})," Chauffeur assigné"]}),e.jsxs(M,{value:a.assignedDriverId||"__none__",onValueChange:s=>g(a.id,s==="__none__"?void 0:s),children:[e.jsx(A,{children:e.jsx(E,{placeholder:"Aucun chauffeur assigné"})}),e.jsxs(T,{children:[e.jsx(x,{value:"__none__",children:"Aucun"}),h.filter(s=>!s.archived).map(s=>e.jsx(x,{value:s.id,children:s.name},s.id))]})]})]})]}),e.jsx(X,{value:"documents",className:"flex-1 overflow-y-auto p-4 mt-0",children:e.jsx(Ge,{vehicleId:a.id})})]}),e.jsxs("div",{className:"p-4 border-t border-border space-y-2",children:[e.jsx(Re,{vehicle:a,drivers:h,onEditVehicle:r,trigger:e.jsxs(f,{variant:"outline",className:"w-full",children:[e.jsx(he,{className:"h-4 w-4 mr-2"})," Modifier le véhicule"]})}),e.jsxs(ne,{children:[e.jsx(ie,{asChild:!0,children:e.jsxs(f,{variant:"destructive",className:"w-full",children:[e.jsx(re,{className:"h-4 w-4 mr-2"})," Supprimer le véhicule"]})}),e.jsxs(le,{children:[e.jsxs(ce,{children:[e.jsx(de,{children:"Supprimer ce véhicule ?"}),e.jsxs(oe,{children:["Êtes-vous sûr de vouloir supprimer ",e.jsx("strong",{children:a.name})," (",a.licensePlate,") ? Cette action est irréversible."]})]}),e.jsxs(me,{children:[e.jsx(ue,{children:"Annuler"}),e.jsx(xe,{onClick:()=>N(a.id),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"Supprimer"})]})]})]})]})]})})}export{Ye as F,Oe as G,hs as V,ee as v};

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.