1import{c as J,r as l,s as j,j as e,L as Ss,B as d,a as Q,X as ks,t as p}from"./index-CowhCOWN.js";import{I as m}from"./input-D2OO1sCJ.js";import{L as k}from"./label-CQeSIlgo.js";import{S as Ye}from"./switch-DSveKqAg.js";import{D as ve,a as _e,b as Ne,c as be,e as we}from"./dialog-DuVWCFQP.js";import{A as Ds,a as As,b as Fs,c as Es,d as Ms,e as Ts,f as Ps,g as qs}from"./alert-dialog-D7RhGaIx.js";import{T as ye,a as Ce,b as E,c as f,d as Se,e as u}from"./table-D66sLowB.js";import{B as Ue}from"./badge-DUOqbc8O.js";import{S as w,a as y,b as C,c as S,d as c}from"./select-BrmKvK-X.js";import{C as Is,b as Ls}from"./ChangePasswordDialog-2fCx9UCz.js";import{Q as $s}from"./qr-code-DyteQFR4.js";import{D as Qe}from"./download-DuHTK8xI.js";import{P as Bs}from"./plus-Brwqy4y8.js";import{S as Os}from"./search-Bk70yWaV.js";import{C as Vs}from"./crown-C-pCEeeS.js";import{P as Rs}from"./pencil-BlgVpXJc.js";import{T as Hs}from"./trash-2-D9kxAHen.js";import{C as zs,a as Ys}from"./chevron-right-BiYsk9NG.js";import{T as Us}from"./trophy-AEjWAohW.js";import"./index-Bl2K_kVK.js";import"./index-CuHniv-8.js";import"./index-CvFYP4_A.js";import"./index-BDJ43p2d.js";import"./index-DNauxUwX.js";import"./index-R4QDO2ZY.js";import"./index-DRz5Di7l.js";import"./index-DmKQT1G3.js";import"./index-C5FsXfzk.js";import"./chevron-down-DFXQwo6o.js";import"./useServerFn-D2gARKP5.js";import"./auth-middleware-BzIwszNl.js";import"./key-round-CqfN_knV.js";const Qs=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]],Gs=J("funnel",Qs);const Js=[["line",{x1:"6",x2:"10",y1:"11",y2:"11",key:"1gktln"}],["line",{x1:"8",x2:"8",y1:"9",y2:"13",key:"qnk9ow"}],["line",{x1:"15",x2:"15.01",y1:"12",y2:"12",key:"krot7o"}],["line",{x1:"18",x2:"18.01",y1:"10",y2:"10",key:"1lcuu1"}],["path",{d:"M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z",key:"mfqc10"}]],ke=J("gamepad-2",Js);const Ws=[["path",{d:"m10 17 5-5-5-5",key:"1bsop3"}],["path",{d:"M15 12H3",key:"6jk70r"}],["path",{d:"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4",key:"u53s6r"}]],Ks=J("log-in",Ws);const Xs=[["path",{d:"M16 3h5v5",key:"1806ms"}],["path",{d:"m21 3-6.75 6.75",key:"pv0uzu"}],["circle",{cx:"10",cy:"14",r:"6",key:"1qwbdc"}]],Zs=J("mars",Xs);const et=[["path",{d:"M12 15v7",key:"t2xh3l"}],["path",{d:"M9 19h6",key:"456am0"}],["circle",{cx:"12",cy:"9",r:"6",key:"1nw4tq"}]],st=J("venus",et),Ge={email:"",first_name:"",last_name:"",phone:"",birth_date:"",address:"",postal_code:"",city:"",gender:"",vip_card_number:"",vip_card_active:!1,newsletter_opt_in:!0,source:"",notes:""},G=50;function qt(){const[W,ae]=l.useState([]),[D,Je]=l.useState(0),[R,De]=l.useState(!0),[N,H]=l.useState(0),[le,We]=l.useState(""),[z,Ke]=l.useState(""),[A,Ae]=l.useState("all"),[M,Fe]=l.useState("all"),[T,Ee]=l.useState("all"),[F,Me]=l.useState("all"),[P,Te]=l.useState("all"),[q,Pe]=l.useState(""),[I,qe]=l.useState(""),[L,Ie]=l.useState(""),[$,Le]=l.useState(""),[$e,Xe]=l.useState(!1),[Ze,es]=l.useState([]),[K,ss]=l.useState([]),[ts,Y]=l.useState(!1),[X,Be]=l.useState(null),[t,x]=l.useState(Ge),[Oe,Ve]=l.useState(!1),[ne,re]=l.useState(null),[Z,ie]=l.useState(!1),[as,ce]=l.useState(!1),[ee,ls]=l.useState(null),[ns,Re]=l.useState(!1),[oe,rs]=l.useState([]),[de,is]=l.useState([]),[cs,se]=l.useState(!1),[me,os]=l.useState(""),[xe,ds]=l.useState(""),[he,ms]=l.useState("34"),[ue,xs]=l.useState("all"),[je,hs]=l.useState("no"),[pe,us]=l.useState("all");l.useEffect(()=>{const s=setTimeout(()=>Ke(le.trim()),300);return()=>clearTimeout(s)},[le]),l.useEffect(()=>{H(0)},[z,A,M,T,F,P,q,I,L,$]),l.useEffect(()=>{(async()=>{const[{data:s},{data:a}]=await Promise.all([j.from("adherents").select("source").not("source","is",null).limit(1e3),j.from("push_subscriptions").select("user_id").eq("enabled",!0)]),n=Array.from(new Set((s??[]).map(h=>
1h.source).filter(Boolean)));es(n.sort()),ss(Array.from(new Set((a??[]).map(h=>h.user_id).filter(Boolean))))})()},[]);const js=(s,a)=>{let n=j.from("adherents").select(s,a?{count:a.count}:void 0);A==="none"?n=n.or("gender.is.null,gender.eq."):A!=="all"&&(n=n.eq("gender",A)),M!=="all"&&(n=n.eq("vip_card_active",M==="yes")),T!=="all"&&(n=n.eq("newsletter_opt_in",T==="yes")),F!=="all"&&(K.length===0?F==="yes"&&(n=n.eq("id","00000000-0000-0000-0000-000000000000")):F==="yes"?n=n.in("user_id",K):n=n.not("user_id","in",`(${K.map(r=>`"${r}"`).join(",")})`)),P!=="all"&&(n=n.eq("source",P)),q.trim()&&(n=n.ilike("city",`%${q.trim()}%`)),I.trim()&&(n=n.ilike("postal_code",`%${I.trim()}%`));const h=new Date,g=r=>r.toISOString().slice(0,10),_=L.trim()?parseInt(L,10):null,v=$.trim()?parseInt($,10):null;if(_!=null&&!Number.isNaN(_)){const r=new Date(h);r.setFullYear(r.getFullYear()-_),n=n.lte("birth_date",g(r))}if(v!=null&&!Number.isNaN(v)){const r=new Date(h);r.setFullYear(r.getFullYear()-v-1),r.setDate(r.getDate()+1),n=n.gte("birth_date",g(r))}if(z){const r=z.replace(/[%,]/g," ");n=n.or(`email.ilike.%${r}%,first_name.ilike.%${r}%,last_name.ilike.%${r}%,vip_card_number.ilike.%${r}%`)}return n},ge=async()=>{De(!0);const s=N*G,a=s+G-1,{data:n,count:h,error:g}=await js("*",{count:"exact"}).order("registered_at",{ascending:!1}).range(s,a);g&&p.error(g.message),ae(n??[]),Je(h??0),De(!1)};l.useEffect(()=>{ge()},[N,z,A,M,T,F,P,q,I,L,$,K]);const U=Math.max(1,Math.ceil(D/G)),te=l.useMemo(()=>{let s=0;return A!=="all"&&s++,M!=="all"&&s++,T!=="all"&&s++,F!=="all"&&s++,P!=="all"&&s++,q.trim()&&s++,I.trim()&&s++,L.trim()&&s++,$.trim()&&s++,s},[A,M,T,F,P,q,I,L,$]),ps=()=>{Ae("all"),Fe("all"),Ee("all"),Me("all"),Te("all"),Pe(""),qe(""),Ie(""),Le("")},gs=async s=>{if(confirm(`Se connecter en tant que ${s} ? 2 3Votre session admin sera remplacée.`))try{const{actionLink:a}=await Ls({data:{email:s,redirectTo:`${window.location.origin}/espace`}});await j.auth.signOut(),window.location.href=a}catch(a){p.error(a instanceof Error?a.message:"Impossible de se connecter")}},fs=()=>{Be(null),x(Ge),Y(!0)},vs=s=>{Be(s),x({email:s.email,first_name:s.first_name??"",last_name:s.last_name??"",phone:s.phone??"",birth_date:s.birth_date??"",address:s.address??"",postal_code:s.postal_code??"",city:s.city??"",gender:s.gender??"",vip_card_number:s.vip_card_number??"",vip_card_active:s.vip_card_active,newsletter_opt_in:s.newsletter_opt_in,source:s.source??"",notes:s.notes??""}),Y(!0)},_s=async()=>{if(!t.email.trim()){p.error("Email obligatoire");return}Ve(!0);const s={email:t.email.trim().toLowerCase(),first_name:t.first_name.trim()||null,last_name:t.last_name.trim()||null,phone:t.phone.trim()||null,birth_date:t.birth_date||null,address:t.address.trim()||null,postal_code:t.postal_code.trim()||null,city:t.city.trim()||null,gender:t.gender||null,vip_card_number:t.vip_card_number.trim()||null,vip_card_active:t.vip_card_active,newsletter_opt_in:t.newsletter_opt_in,source:t.source.trim()||null,notes:t.notes.trim()||null},{error:a}=X?await j.from("adherents").update(s).eq("id",X.id):await j.from("adherents").insert(s);if(Ve(!1),a){p.error(a.message);return}p.success(X?"Adhérent mis à jour":"Adhérent ajouté"),Y(!1),ge()},Ns=async()=>{if(!ne)return;const{error:s}=await j.from("adherents").delete().eq("id",ne);s?p.error(s.message):(p.success("Adhérent supprimé"),ge()),re(null)},bs=async s=>{ls(s),ce(!0),Re(!0);try{const{data:a}=await j.from("participations").select("contest_id, created_at").or(`adherent_id.eq.${s.id},email.eq.${s.email}`).order("created_at",{ascending:!1}).limit(200),n=Array.from(new Set((a??[]).map(r=>r.contest_id).filter(Boolean)));let h={};if(n.length>0){const{data:r}=await j.from("contests").select("id, title").in("id",n);h=Object.fromEntries((r??[]).map(b=>[b.id,b.title]))}rs((a??[]).map(r=>({contest_title:h[r.contest_id]??"â",created_at:r.created_at})));const{data:g}=await j.from("winners").select("contest_id, rank, drawn_at").or(`adherent_id.eq.${s.id},email.eq.${s.email}`).order("drawn_at",{ascending:!1}).limit(200),_=Array.from(new Set((g??[]).map(r=>
3r.contest_id).filter(Boolean)));let v={};if(_.length>0){const{data:r}=await j.from("contests").select("id, title").in("id",_);v=Object.fromEntries((r??[]).map(b=>[b.id,b.title]))}is((g??[]).map(r=>({contest_title:v[r.contest_id]??"â",rank:r.rank,drawn_at:r.drawn_at})))}catch(a){p.error(a?.message??"Erreur de chargement")}finally{Re(!1)}},ws=async()=>{ie(!0);const s=p.loading("Export en coursâ¦");try{let a=j.from("adherents").select("*");he.trim()&&(a=a.ilike("postal_code",`${he.trim()}%`)),ue!=="all"&&(a=a.eq("gender",ue)),je!=="all"&&(a=a.eq("blacklisted",je==="yes"));const n=new Date,h=i=>i.toISOString().slice(0,10),g=me.trim()?parseInt(me,10):null,_=xe.trim()?parseInt(xe,10):null;if(g!=null&&!Number.isNaN(g)){const i=new Date(n);i.setFullYear(i.getFullYear()-g),a=a.lte("birth_date",h(i))}if(_!=null&&!Number.isNaN(_)){const i=new Date(n);i.setFullYear(i.getFullYear()-_-1),i.setDate(i.getDate()+1),a=a.gte("birth_date",h(i))}if(pe!=="all"){const{data:i,error:O}=await j.from("card_views").select("adherent_id");if(O)throw O;const B=Array.from(new Set((i??[]).map(V=>V.adherent_id).filter(Boolean)));if(pe==="yes"){if(B.length===0){p.success("0 adhérent(s) exporté(s)",{id:s}),ie(!1);return}a=a.in("id",B)}else B.length>0&&(a=a.not("id","in",`(${B.map(V=>`"${V}"`).join(",")})`))}const v=[],r=1e3;let b=0;for(;;){const i=b+r-1,{data:O,error:B}=await a.order("registered_at",{ascending:!1}).range(b,i);if(B)throw B;const V=O??[];if(v.push(...V),V.length<r)break;b+=r,p.loading(`Export en cours⦠${v.length}`,{id:s})}const He=[["email","civilite","prenom","nom","telephone","ville","code_postal","date_naissance","blacklist","carte_privilege","privilege_actif","newsletter","source","inscrit_le"]];v.forEach(i=>He.push([i.email,i.gender==="F"?"Femme":i.gender==="M"||i.gender==="H"?"Homme":"",i.first_name??"",i.last_name??"",i.phone??"",i.city??"",i.postal_code??"",i.birth_date??"",i.blacklisted?"oui":"non",i.vip_card_number??"",i.vip_card_active?"oui":"non",i.newsletter_opt_in?"oui":"non",i.source??"",new Date(i.registered_at).toISOString()]));const ys=He.map(i=>i.map(O=>`"${String(O).replace(/"/g,'""')}"`).join(",")).join(` 4`),Cs=new Blob(["\uFEFF"+ys],{type:"text/csv;charset=utf-8"}),ze=URL.createObjectURL(Cs),fe=document.createElement("a");fe.href=ze,fe.download=`adherents-${new Date().toISOString().slice(0,10)}.csv`,fe.click(),URL.revokeObjectURL(ze),p.success(`${v.length} adhérent(s) exporté(s)`,{id:s}),se(!1)}catch(a){p.error(a?.message??"Ãchec de l'export",{id:s})}finally{ie(!1)}};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold",children:"Adhérents"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[D.toLocaleString("fr-FR")," adhérent",D>1?"s":"",(z||te>0)&&" (filtré)"]})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Ss,{to:"/admin/scan",children:e.jsxs(d,{variant:"outline",children:[e.jsx($s,{className:"h-4 w-4"})," Scanner QR"]})}),e.jsxs(d,{variant:"outline",onClick:()=>se(!0),disabled:Z,children:[Z?e.jsx(Q,{className:"h-4 w-4 animate-spin"}):e.jsx(Qe,{className:"h-4 w-4"})," Export CSV"]}),e.jsxs(d,{onClick:fs,children:[e.jsx(Bs,{className:"h-4 w-4"})," Nouveau"]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs("div",{className:"relative min-w-[240px] flex-1",children:[e.jsx(Os,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(m,{value:le,onChange:s=>We(s.target.value),placeholder:"Email, nom, n° carte Privilègeâ¦",className:"pl-9"})]}),e.jsxs(d,{variant:$e?"default":"outline",onClick:()=>Xe(s=>!s),children:[e.jsx(Gs,{className:"h-4 w-4"})," Filtres",te>0&&e.jsx(Ue,{variant:"secondary",className:"ml-1",children:te})]}),te>0&&e.jsxs(d,{variant:"ghost",size:"sm",onClick:ps,children:[e.jsx(ks,{className:"h-4 w-4"})," Réinitialiser"]})]}),$e&&e.jsxs("div",{className:"grid gap-3 rounded-lg border border-border bg-surface p-4 sm:grid-cols-2 lg:grid-cols-4",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(k,{className:"text-xs",children:"Civilité"}),e.jsxs(w,{value:A,onValueChange:s=>Ae(s),children:[e.jsx(y,{children:e.jsx(C,{})}),e.jsxs(S,{children:[e.jsx(c,{value:"all",children:"Toutes"}),e.jsx(c,{value:"F",children:"Femmes"}),e.jsx(c,{value:"H",children:"Hommes"}),e.jsx(c,{value:"none",children:"Non renseigné"})]})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(k,{className:"text-xs",children:"Carte Privilège"}),e.jsxs(w,{value:M,onValueChange:s=>Fe(s),children:[e.jsx(y,{children:e.jsx(C,{})}),e.jsxs(S,{children:[e.jsx(c,{value:"all",children:"Tous"}),e.jsx(c,{value:"yes",children:"Privilège actif"}),e.jsx(c,{value:"no",children:"Sans Privilège"})]})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(k,{className:"text-xs",children:"Newsletter"}),e.jsxs(w,{value:T,onValueChange:s=>Ee(s),children:[e.jsx(y,{children:e.jsx(C,{})}),e.jsxs(S,{children:[e.jsx(c,{value:"all",children:"Tous"}),e.jsx(c,{value:"yes",children:"Inscrits"}),e.jsx(c,{value:"no",children:"Désinscrits"})]})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(k,{className:"text-xs",children:"Notifications push"}),e.jsxs(w,{value:F,onValueChange:s=>Me(s),children:[e.jsx(y,{children:e.jsx(C,{})}),e.jsxs(S,{children:[e.jsx(c,{value:"all",children:"Tous"}),e.jsx(c,{value:"yes",children:"Inscrits"}),e.jsx(c,{value:"no",children:"Non inscrits"})]})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(k,{className:"text-xs",children:"Source"}),e.jsxs(w,{value:P,onValueChange:Te,children:[e.jsx(y,{children:e.jsx(C,{})}),e.jsxs(S,{children:[e.jsx(c,{value:"all",children:"Toutes"}),Ze.map(s=>e.jsx(c,{value:s,children:s},s))]})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(k,{className:"text-xs",children:"Ville"}),e.jsx(m,{value:q,onChange:s=>Pe(s.target.value),placeholder:"ex: Toulouse"})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(k,{className:"text-xs",children:"Code postal"}),e.jsx(m,{value:I,onChange:s=>qe(s.target.value),placeholder:"ex: 34000"})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(k,{className:"text-xs",children:"Ãge (min â max)"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(m,{type:"number",min:0,max:120,value:L,onChange:s=>Ie(s.target.value),placeholder:"Min",className:"min-w-0"}),e.jsx(m,{type:"number",min:0,max:120,value:$,onChange:s=>Le(s.target.value),placeholder:"Max",className:"min-w-0"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border border-border bg-surface",children:[e.jsxs(ye,{children:[e.jsx(Ce,{children:e.jsxs(E,{children:[e.jsx(f,{className:"w-[40px]"}),e.jsx(f,{children:"Nom"}),e.jsx(f,{children:"Email"}),e.jsx(f,{children:"Ville"}),e.jsx(f,{children:"Privilège"}),e.jsx(f,{className:"w-[140px]",children:"Inscrit le"}),e.jsx(f,{className:"w-[100px]"})]})}),e.jsx(Se,{children:R?e.jsx(E,{children:e.jsx(u,{colSpan:7,className:"py-8 text-center",children:e.jsx(Q,{className:"mx-auto h-5 w-5 animate-spin text-muted-foreground"})})}):W.length===0?e.jsx(E,{children:e.jsx(u,{colSpan:7,className:"py-8 text-center text-sm text-muted-foreground",children:"Aucun adhérent"})}):W.map(s=>e.jsxs(E,{children:[e.jsx(u,{children:s.gender==="F"?e.jsx(st,{className:"h-4 w-4 text-pink-500"}):s.gender==="M"||s.gender==="H"?e.jsx(Zs,{className:"h-4 w-4 text-blue-500"}):e.jsx("span",{className:"text-xs text-muted-foreground",children:"â"})}),e.jsx(u,{className:"font-medium",children:[s.first_name,s.last_name].filter(
4Boolean).join(" ")||"â"}),e.jsx(u,{className:"text-muted-foreground",children:s.email}),e.jsx(u,{className:"text-muted-foreground",children:s.city??"â"}),e.jsx(u,{children:s.vip_card_active?e.jsxs(Ue,{className:"gap-1",children:[e.jsx(Vs,{className:"h-3 w-3"})," Privilège"]}):e.jsx("span",{className:"text-xs text-muted-foreground",children:"â"})}),e.jsx(u,{className:"text-xs text-muted-foreground",children:new Date(s.registered_at).toLocaleDateString("fr-FR")}),e.jsxs(u,{className:"text-right",children:[e.jsx(d,{variant:"ghost",size:"icon",title:"Jeux & Gains",onClick:()=>bs(s),children:e.jsx(ke,{className:"h-4 w-4"})}),e.jsx(d,{variant:"ghost",size:"icon",title:"Se connecter en tant que cet adhérent",onClick:()=>gs(s.email),children:e.jsx(Ks,{className:"h-4 w-4"})}),e.jsx(Is,{email:s.email,label:[s.first_name,s.last_name].filter(Boolean).join(" ")||s.email,variant:"ghost",size:"icon"}),e.jsx(d,{variant:"ghost",size:"icon",onClick:()=>vs(s),children:e.jsx(Rs,{className:"h-4 w-4"})}),e.jsx(d,{variant:"ghost",size:"icon",onClick:()=>re(s.id),children:e.jsx(Hs,{className:"h-4 w-4 text-destructive"})})]})]},s.id))})]}),D>0&&e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 border-t border-border p-3 text-sm",children:[e.jsxs("p",{className:"text-muted-foreground",children:[(N*G+1).toLocaleString("fr-FR"),"â",Math.min((N+1)*G,D).toLocaleString("fr-FR")," sur ",D.toLocaleString("fr-FR")]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(d,{variant:"outline",size:"sm",onClick:()=>H(0),disabled:N===0||R,children:"«"}),e.jsx(d,{variant:"outline",size:"sm",onClick:()=>H(s=>Math.max(0,s-1)),disabled:N===0||R,children:e.jsx(zs,{className:"h-4 w-4"})}),e.jsxs("span",{className:"px-2 text-muted-foreground",children:["Page ",N+1," / ",U]}),e.jsx(d,{variant:"outline",size:"sm",onClick:()=>H(s=>Math.min(U-1,s+1)),disabled:N>=U-1||R,children:e.jsx(Ys,{className:"h-4 w-4"})}),e.jsx(d,{variant:"outline",size:"sm",onClick:()=>H(U-1),disabled:N>=U-1||R,children:"»"})]})]})]}),e.jsx(ve,{open:ts,onOpenChange:Y,children:e.jsxs(_e,{className:"max-h-[90vh] max-w-2xl overflow-y-auto",children:[e.jsx(Ne,{children:e.jsx(be,{children:X?"Modifier l'adhérent":"Nouvel adhérent"})}),e.jsxs("div",{className:"grid gap-4 py-2 sm:grid-cols-2",children:[e.jsx(o,{label:"Email *",cls:"sm:col-span-2",children:e.jsx(m,{type:"email",value:t.email,onChange:s=>x({...t,email:s.target.value})})}),e.jsx(o,{label:"Civilité",children:e.jsxs(w,{value:t.gender||"none",onValueChange:s=>x({...t,gender:s==="none"?"":s}),children:[e.jsx(y,{children:e.jsx(C,{})}),e.jsxs(S,{children:[e.jsx(c,{value:"none",children:"Non renseigné"}),e.jsx(c,{value:"F",children:"Femme"}),e.jsx(c,{value:"H",children:"Homme"})]})]})}),e.jsx(o,{label:"Date de naissance",children:e.jsx(m,{type:"date",value:t.birth_date,onChange:s=>x({...t,birth_date:s.target.value})})}),e.jsx(o,{label:"Prénom",children:e.jsx(m,{value:t.first_name,onChange:s=>x({...t,first_name:s.target.value})})}),e.jsx(o,{label:"Nom",children:e.jsx(m,{value:t.last_name,onChange:s=>x({...t,last_name:s.target.value})})}),e.jsx(o,{label:"Téléphone",children:e.jsx(m,{value:t.phone,onChange:s=>x({...t,phone:s.target.value})})}),e.jsx(o,{label:"Adresse",cls:"sm:col-span-2",children:e.jsx(m,{value:t.address,onChange:s=>x({...t,address:s.target.value})})}),e.jsx(o,{label:"Code postal",children:e.jsx(m,{value:t.postal_code,onChange:s=>x({...t,postal_code:s.target.value})})}),e.jsx(o,{label:"Ville",children:e.jsx(m,{value:t.city,onChange:s=>x({...t,city:s.target.value})})}),e.jsx(o,{label:"N° carte Privilège",children:e.jsx(m,{value:t.vip_card_number,onChange:s=>x({...t,vip_card_number:s.target.value})})}),e.jsx(o,{label:"Source",children:e.jsx(m,{value:t.source,onChange:s=>x({...t,source:s.target.value}),placeholder:"ex: import-2024"})}),e.jsx(o,{label:"Carte Privilège active",children:e.jsx("div",{className:"flex h-9 items-center",children:e.jsx(Ye,{checked:t.vip_card_active,onCheckedChange:s=>x({...t,vip_card_active:s})})})}),e.jsx(o,{label:"Newsletter",children:e.jsx("div",{className:"flex h-9 items-center",children:e.jsx(Ye,{checked:t.newsletter_opt_in,onCheckedChange:s=>x({...t,newsletter_opt_in:s})})})})]}),e.jsxs(we,{children:[e.jsx(d,{variant:"outline",onClick:()=>Y(!1),children:"Annuler"}),e.jsx(d,{onClick:_s,disabled:Oe,children:Oe?e.jsx(Q,{className:"h-4 w-4 animate-spin"}):"Enregistrer"})]})]})}),e.jsx(ve,{open:cs,onOpenChange:se,children:e.jsxs(_e,{className:"max-w-lg",children:[e.jsx(Ne,{children:e.jsx(be,{children:"Exporter les adhérents (CSV)"})}),e.jsxs("div",{className:"space-y-3 py-2",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsx(o,{label:"Ãge min (ans)",children:e.jsx(m,{type:"number",min:0,max:120,value:me,onChange:s=>os(s.target.value),placeholder:"ex: 18"})}),e.jsx(o,{label:"Ãge max (ans)",children:e.jsx(m,{type:"number",min:0,max:120,value:xe,onChange:s=>ds(s.target.value),placeholder:"ex: 65"})})]}),e.jsx(o,{label:"Code postal (préfixe)",children:e.jsx(m,{value:he,onCh
4ange:s=>ms(s.target.value),placeholder:"ex: 34"})}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsx(o,{label:"Sexe",children:e.jsxs(w,{value:ue,onValueChange:s=>xs(s),children:[e.jsx(y,{children:e.jsx(C,{})}),e.jsxs(S,{children:[e.jsx(c,{value:"all",children:"Tous"}),e.jsx(c,{value:"F",children:"Féminins"}),e.jsx(c,{value:"H",children:"Masculins"})]})]})}),e.jsx(o,{label:"Blacklist",children:e.jsxs(w,{value:je,onValueChange:s=>hs(s),children:[e.jsx(y,{children:e.jsx(C,{})}),e.jsxs(S,{children:[e.jsx(c,{value:"all",children:"Tous"}),e.jsx(c,{value:"yes",children:"Blacklistés"}),e.jsx(c,{value:"no",children:"Non blacklistés"})]})]})}),e.jsx(o,{label:"Carte",children:e.jsxs(w,{value:pe,onValueChange:s=>us(s),children:[e.jsx(y,{children:e.jsx(C,{})}),e.jsxs(S,{children:[e.jsx(c,{value:"all",children:"Tous"}),e.jsx(c,{value:"yes",children:"Téléchargée"}),e.jsx(c,{value:"no",children:"Non téléchargée"})]})]})})]})]}),e.jsxs(we,{children:[e.jsx(d,{variant:"outline",onClick:()=>se(!1),children:"Annuler"}),e.jsxs(d,{onClick:ws,disabled:Z,children:[Z?e.jsx(Q,{className:"h-4 w-4 animate-spin"}):e.jsx(Qe,{className:"h-4 w-4"})," Exporter"]})]})]})}),e.jsx(Ds,{open:!!ne,onOpenChange:s=>!s&&re(null),children:e.jsxs(As,{children:[e.jsxs(Fs,{children:[e.jsx(Es,{children:"Supprimer cet adhérent ?"}),e.jsx(Ms,{children:"Cette action est irréversible."})]}),e.jsxs(Ts,{children:[e.jsx(Ps,{children:"Annuler"}),e.jsx(qs,{onClick:Ns,className:"bg-destructive text-destructive-foreground",children:"Supprimer"})]})]})}),e.jsx(ve,{open:as,onOpenChange:s=>!s&&ce(!1),children:e.jsxs(_e,{className:"max-h-[90vh] max-w-3xl overflow-y-auto",children:[e.jsx(Ne,{children:e.jsxs(be,{className:"flex items-center gap-2",children:[e.jsx(ke,{className:"h-5 w-5"}),"Jeux de ",ee?[ee.first_name,ee.last_name].filter(Boolean).join(" ")||ee.email:"â"]})}),ns?e.jsx("div",{className:"py-8 text-center",children:e.jsx(Q,{className:"mx-auto h-5 w-5 animate-spin text-muted-foreground"})}):e.jsxs("div",{className:"space-y-6 py-2",children:[e.jsxs("div",{children:[e.jsxs("h3",{className:"mb-2 flex items-center gap-2 text-sm font-semibold text-muted-foreground uppercase tracking-wider",children:[e.jsx(Us,{className:"h-4 w-4"})," Gains (",de.length,")"]}),de.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:"Aucun gain."}):e.jsx("div",{className:"rounded-lg border border-border bg-surface",children:e.jsxs(ye,{children:[e.jsx(Ce,{children:e.jsxs(E,{children:[e.jsx(f,{children:"Jeu"}),e.jsx(f,{className:"w-[80px]",children:"Rang"}),e.jsx(f,{className:"w-[160px]",children:"Tirage"})]})}),e.jsx(Se,{children:de.map((s,a)=>e.jsxs(E,{children:[e.jsx(u,{className:"font-medium",children:s.contest_title}),e.jsx(u,{className:"text-xs text-muted-foreground",children:s.rank}),e.jsx(u,{className:"text-xs text-muted-foreground",children:new Date(s.drawn_at).toLocaleDateString("fr-FR")})]},a))})]})})]}),e.jsxs("div",{children:[e.jsxs("h3",{className:"mb-2 flex items-center gap-2 text-sm font-semibold text-muted-foreground uppercase tracking-wider",children:[e.jsx(ke,{className:"h-4 w-4"})," Participations (",oe.length,")"]}),oe.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:"Aucune participation."}):e.jsx("div",{className:"rounded-lg border border-border bg-surface",children:e.jsxs(ye,{children:[e.jsx(Ce,{children:e.jsxs(E,{children:[e.jsx(f,{children:"Jeu"}),e.jsx(f,{className:"w-[160px]",children:"Date"})]})}),e.jsx(Se,{children:oe.map((s,a)=>e.jsxs(E,{children:[e.jsx(u,{className:"font-medium",children:s.contest_title}),e.jsx(u,{className:"text-xs text-muted-foreground",children:new Date(s.created_at).toLocaleDateString("fr-FR")})]},a))})]})})]})]}),e.jsx(we,{children:e.jsx(d,{variant:"outline",onClick:()=>ce(!1),children:"Fermer"})})]})})]})}function o({label:W,children:ae,cls:D}){return e.jsxs("div",{className:`space-y-1.5 ${D??""}`,children:[e.jsx(k,{className:"text-xs",children:W}),ae]})}export{qt as component};
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.