PageSourceSearch

https://compliance-news-hub.lovable.app/assets/AdminLibrary-DrNkUbsi.js

js compliance-news-hub.lovable.app collected 2026-10-03 03:28:20 UTC 12,561 bytes, 1 lines download raw bytes

1import{aH as ee,r as h,a as re,j as e,f as M,D as te,d as se,e as ie,g as ae,h as oe,z as ne}from"./index-BmPTT47H.js";import{u as le}from"./useQuery-Cz4Kh_60.js";import{u as T}from"./useMutation-BF4e9bd5.js";import{A as ce}from"./AdminPanel-C0Yxh5QZ.js";import{f as me,S}from"./Header-CQpcWalb.js";import{u as de}from"./useAdminAuth-SKLgLRs5.js";import{u as ue}from"./use-toast-C_emRBFr.js";import{a as pe,u as P,d as E,b as he,e as xe,g as je}from"./libraryService-FxH_7HaC.js";import{B as b}from"./button-yXLJi3ds.js";import{I as D}from"./input-C-BlsXNi.js";import{T as ge,a as ve,b as F,c as x,d as fe,e as m}from"./table-cbdByv4m.js";import{u as be,F as ye,a as d,b as u,c as n,d as j,h as p}from"./form-C0B-xAjs.js";import{S as V,a as z,b as Q,c as U,d as H}from"./select-CdoCU46v.js";import{T as _e}from"./textarea-CmqBd8nZ.js";import{o as Ne,s as g,d as De,t as we}from"./index-D8qOjckE.js";import{D as Ce}from"./date-picker-Coc_bGP_.js";import{themeOptions as Ae,documentTypeOptions as Te}from"./Library-CtJsld-m.js";import{P as Se}from"./plus-BC1B7Hoa.js";import{P as Ee}from"./pencil-BrkMxNS3.js";import{T as O}from"./trash-2-Bfa2AY1V.js";import"./card-CfjCoZ3J.js";import"./file-text-fRNbbiL7.js";import"./calendar-B_IDTxYX.js";import"./newspaper-CiAQcQwi.js";import"./shield-alert-84YveiI7.js";import"./book-open-BnaDvaQT.js";import"./briefcase-DkC-bbnP.js";import"./users-1eBGfZZi.js";import"./message-square-DG7dpMc-.js";import"./monitor-D83HH8Vo.js";import"./video-BTs_P0v9.js";import"./quote-D6RqrSeX.js";import"./scale-F382QNTF.js";import"./building-2--IbLwGF7.js";import"./external-link-eR5-a3X-.js";import"./index-BJMF_Vs4.js";import"./index-dl4Z3C0W.js";import"./tabs-DVYKU3o9.js";import"./check-ClzIKKXE.js";import"./use-mobile-CzZR2LPX.js";import"./partnerService-C0EyNiRu.js";import"./sheet-BDFY0CSD.js";import"./ComplianceLogo-ziaG9BCN.js";import"./scroll-area-ByCh8woV.js";import"./search-CYsk5-GD.js";import"./library-BvxbsTeb.js";import"./graduation-cap-LOjyd6ZU.js";import"./message-circle-c2dj1iBZ.js";import"./shield-C3P-DOpD.js";import"./circle-check-big-FrZf7WPr.js";import"./triangle-alert-6Xgor2AG.js";import"./trending-up-LM8gpViR.js";import"./clipboard-check-DUlSL_qw.js";import"./mail-D0iFUC8R.js";import"./arrow-right-BNwccK-f.js";import"./wrench-C-BxV5t0.js";import"./lock-CH38NGfC.js";import"./chevron-down-BBzHhxGF.js";import"./monitor-cog-D1XHH9bH.js";import"./map-ec2J03B_.js";import"./trophy-ByTObkXv.js";import"./star-Box5CnVY.js";import"./purify.es-CjvLbo03.js";import"./testimonialsService-BTFH8p1n.js";import"./chevron-left-DuBcPNcj.js";import"./heart-hKvkuTDF.js";import"./calendar-days-ol3l775w.js";import"./info-Qdn5uU52.js";import"./log-out-BrUlwzD6.js";import"./shopping-bag-DxAmBtQw.js";import"./label-BNiIlHx2.js";import"./index-D2Q_rCgd.js";import"./calendar-BTHvYjFj.js";import"./subDays-C9GUY8nL.js";import"./endOfMonth-BR-tHLez.js";import"./fr-bD_wHoP1.js";import"./popover-B4hWCZ22.js";import"./aspect-ratio-x3fItTVl.js";import"./arrow-left-CQB_U06f.js";import"./refresh-cw-DQ9qkHG_.js";import"./filter-COVw7n6h.js";const Fe=Ne({title:g().min(1,"Le titre est requis"),theme:g().min(1,"Le thème est requis"),document_type:g().min(1,"Le type de document est requis"),author:g().min(1,"L'auteur est requis"),link:g().url("Veuillez entrer une URL valide"),publication_date:De({required_error:"La date de publication est requise"}),description:g().optional()}),at=()=>{const w=ee(),[R,v]=h.useState(!1),[s,y]=h.useState(null),[C,f]=h.useState(null),[L,l]=h.useState(null),[k,q]=h.useState(!1),I=re(),{isAdmin:_,loading:N}=de(),{toast:a}=ue();h.useEffect(()=>{!N&&!_&&(a({title:"Accès refusé",description:"Vous devez être administrateur pour accéder à cette page",variant:"destructive"}),I("/admin/login"))},[_,N,I,a]);const{data:A=[],isLoading:B}=le({queryKey:["libraryDocuments"],queryFn:je,enabled:!N&&_}),i=be({resolver:we(Fe),defaultValues:{title:"",theme:"",document_type:"",author:"",link:"",description:""}}),K=T({mutationFn:pe,onSuccess:()=>{w.invalidateQueries({queryKey:["libraryDocuments"]}),a({title:"Document créé",description:"Le document a été ajouté à la bibliothèque"}),v(!1),i.reset(),f(null),l(null)},onError:r=>{a({title:"Erreur",description:`Erreur lors de la création du document: ${r}`,variant:"destructive"})}}),$=T({mutationFn:({id:r,data:t})=>P(r,t),onSuccess:()=>{w.invalidateQueries({queryKey:["libraryDocuments"]}),a({title:"Document mis à jour",description:"Le document a été mis à jour avec succès"}),v(!1),y(null),i.reset(),f(null),l(null)},onError:r=>{a({title:"Erreur",description:`Erreur lors de la mise à jour du document: ${r}`,variant:"destructive"})}}),J=T({mutationFn:async r=>{const t=A.find(c=>c.id===r);return t&&t.cover_image_url&&await E(t.cover_image_url),he(r)},onSuccess:()=>{w.invalidateQueries({queryKey:["libraryDocuments"]}),a({title:"Document supprimé",description:"Le document a été supprimé de la bibliothèque"})},onError:r=>{a({title:"Erreur",description:`Erreur lors de la suppression du document: ${r}`,variant:"destructive"})}}),G=r=>
1{y(r),i.reset({title:r.title,theme:r.theme,document_type:r.document_type,author:r.author,link:r.link,publication_date:new Date(r.publication_date),description:r.description||""}),r.cover_image_url?l(r.cover_image_url):l(null),v(!0)},W=async r=>{var c;const t=(c=r.target.files)==null?void 0:c[0];if(t){f(t);const o=new FileReader;o.onloadend=()=>{l(o.result)},o.readAsDataURL(t)}},X=async r=>{try{q(!0);let t=(s==null?void 0:s.cover_image_url)||void 0;if(C)try{t=await xe(C)}catch(o){console.error("Erreur lors de l'envoi de l'image:",o),a({title:"Erreur d'image",description:(o==null?void 0:o.message)??"L'image n'a pas pu être téléchargée. Le document sera enregistré sans image.",variant:"destructive"})}const c={title:r.title,theme:r.theme,document_type:r.document_type,author:r.author,link:r.link,publication_date:M(r.publication_date,"yyyy-MM-dd"),cover_image_url:t,description:r.description};s?(s.cover_image_url&&C&&t!==s.cover_image_url&&await E(s.cover_image_url),$.mutate({id:s.id,data:c})):K.mutate(c)}catch(t){console.error("Erreur lors de la soumission:",t),a({title:"Erreur",description:"Une erreur s'est produite lors de l'enregistrement du document",variant:"destructive"})}finally{q(!1)}},Y=async()=>{if(l(null),f(null),s&&s.cover_image_url)try{await E(s.cover_image_url),await P(s.id,{cover_image_url:null}),y({...s,cover_image_url:void 0}),a({title:"Image supprimée",description:"L'image de couverture a été supprimée avec succès."})}catch(r){console.error("Erreur lors de la suppression de l'image:",r),a({title:"Erreur",description:"Impossible de supprimer l'image de couverture.",variant:"destructive"})}},Z=()=>{y(null),i.reset({title:"",theme:"",document_type:"",author:"",link:"",description:""}),f(null),l(null),v(!0)};return N?e.jsx("div",{className:"min-h-screen bg-gray-50 flex items-center justify-center",children:e.jsx("div",{className:"animate-spin rounded-full h-12 w-12 border-t-2 border-b-2 border-compliance"})}):_?e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(me,{}),e.jsxs("main",{className:"container mx-auto px-4 py-8",children:[e.jsx("h1",{className:"text-3xl font-bold mb-6",children:"Administration de la Bibliothèque"}),e.jsx(ce,{activePage:"library"}),e.jsxs("div",{className:"bg-card shadow rounded-lg p-6 mb-8",children:[e.jsxs("div",{className:"flex justify-between items-center mb-6",children:[e.jsx("h2",{className:"text-2xl font-semibold",children:"Liste des documents"}),e.jsxs(b,{onClick:Z,className:"flex items-center gap-2",children:[e.jsx(Se,{className:"h-4 w-4"}),"Ajouter un document"]})]}),B?e.jsx("div",{className:"space-y-4",children:Array(5).fill(0).map((r,t)=>e.jsxs("div",{className:"flex items-center space-x-4",children:[e.jsx(S,{className:"h-12 w-12"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(S,{className:"h-4 w-[250px]"}),e.jsx(S,{className:"h-4 w-[200px]"})]})]},t))}):e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(ge,{children:[e.jsx(ve,{children:e.jsxs(F,{children:[e.jsx(x,{children:"Titre"}),e.jsx(x,{children:"Auteur"}),e.jsx(x,{children:"Thème"}),e.jsx(x,{children:"Type"}),e.jsx(x,{children:"Date"}),e.jsx(x,{className:"text-right",children:"Actions"})]})}),e.jsx(fe,{children:A.length===0?e.jsx(F,{children:e.jsx(m,{colSpan:6,className:"text-center py-6",children:"Aucun document dans la bibliothèque"})}):A.map(r=>e.jsxs(F,{children:[e.jsx(m,{className:"font-medium",children:r.title}),e.jsx(m,{children:r.author}),e.jsx(m,{children:r.theme}),e.jsx(m,{children:r.document_type}),e.jsx(m,{children:M(new Date(r.publication_date),"dd/MM/yyyy")}),e.jsx(m,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(b,{variant:"ghost",size:"sm",onClick:()=>G(r),children:e.jsx(Ee,{className:"h-4 w-4"})}),e.jsx(b,{variant:"ghost",size:"sm",onClick:()=>J.mutate(r.id),children:e.jsx(O,{className:"h-4 w-4 text-destructive"})})]})})]},r.id))})]})})]}),e.jsx(te,{open:R,onOpenChange:v,children:e.jsxs(se,{className:"max-w-3xl",children:[e.jsxs(ie,{children:[e.jsx(ae,{children:s?"Modifier un document":"Ajouter un document"}),e.jsx(oe,{children:"Complétez les informations du document à ajouter à la bibliothèque."})]}),e.jsx(ye,{...i,children:e.jsxs("form",{onSubmit:i.handleSubmit(X),className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"space-y-6",children:[e.jsx(d,{control:i.control,name:"title",render:({field:r})=>e.jsxs(u,{children:[e.jsx(n,{children:"Titre"}),e.jsx(j,{children:e.jsx(D,{placeholder:"Titre du document",...r})}),e.jsx(p,{})]})}),e.jsx(d,{control:i.control,name:"author",render:({field:r})=>e.jsxs(u,{children:[e.jsx(n,{children:"Auteur"}),e.jsx(j,{children:e.jsx(D,{placeholder:"Auteur du document",...r})}),e.jsx(p,{})]})}),e.jsx(d,{control:i.control,name:"theme",render:({field:r})=>e.jsxs(u,{children:[e.jsx(n,{children:"Thème"}),e.jsxs(V,{onValueChange:r.onChange,defaultValue:r.value,value:r.value,children:[e.jsx(j,{children:e.jsx(z,{children:e.jsx(Q,{placeholder:"Sélectionner un thème"})})}),e.jsx(U,{children:Ae.map(t=>e.jsx(H,{value:t,children:t},t))})]}),e.jsx(p,{})]})}),e.jsx(d,{control:i.control,name:"document_type",render:({field:r})=>e.jsxs(u,{children:[e.jsx(n,{children:"Type de document"}),e.jsxs(V,{onValueChange:r.onChange,defaultValue:r.value,value:r.value,children:[e.jsx(j,{children:e.jsx(z,{children:e.jsx(Q,{placeholder:"Sélectionner un type"})})}),e.jsx(U,{children:Te.map(t=>e.jsx(H,{value:t,children:t},t))})]}),e.jsx(p,{})]})})]}),e.jsxs("div",{className:"space-y-6",children:[e.jsx(d,{control:i.control,name:"publication_date",render:({field:r})=>e.jsxs(u,{className:"flex flex-col",children:[e.jsx(n,{children:"Date de publication"}),e.jsx(Ce,{date:r.value,setDate:r.onChange,manualInput:!0,placeholder:"JJ/MM/AAAA"}),e.jsx(p,{})]})}),e.jsx(d,{control:i.control,name:"link",render:({field:r})=>e.jsxs(u,{children:[e.jsx(n,{children:"Lien vers le document"}),e.jsx(j,{children:e.jsx(D,{placeholder:"https://...",...r})}),e.jsx(p,{})]})}),e.jsxs("div",{children:[e.jsx(n,{htmlFor:"coverImage",children:"Image de couverture"}),e.jsx("div",{className:"mt-1 flex items-center space-x-4",children:e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"sr-only",children:"Choisir un fichier"}),e.jsx(D,{id:"coverImage",type:"file",accept:"image/*",onChange:W,className:"block w-full text-sm text-gray-500 file:mr-4 file:py-2 file:px-4 file:rounded-md file:border-0 file:text-sm file:font-semibold file:bg-emerald-50 file:text-emerald-700 hover:file:bg-emerald-100"})]})}),L&&e.jsxs("div",{className:"mt-3 relative",children:[e.jsx("img",{src:L,alt:"Aperçu de la couverture",className:"h-32 object-cover rounded-md"}),e.jsx(b,{type:"button",variant:"destructive",size:"sm",className:"absolute top-1 right-1",onClick:Y,children:e.jsx(O,{className:"h-3 w-3"})})]})]})]})]}),e.jsx(d,{control:i.control,name:"description",render:({field:r})=>e.jsxs(u,{children:[e.jsx(n,{children:"Description"}),e.jsx(j,{children:e.jsx(_e,{placeholder:"Description du document (optionnel)",className:"min-h-24",...r})}),e.jsx(p,{})]})}),e.jsx(ne,{children:e.jsx(b,{type:"submit",className:"w-full md:w-auto",disabled:k,children:k?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"h-4 w-4 mr-2 rounded-full border-2 border-t-transparent border-compliance animate-spin"}),s?"Mise à jour...":"Ajout..."]}):s?"Mettre à jour":"Ajouter"})})]})})]})})]})]}):null};export{at 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.