1import{r as x,j as e,s as _}from"./index-grvql_R-.js";import{p as P}from"./imageCompress-BnBk1rWT.js";import{C as S}from"./card-CNOdyeQo.js";import{B as p}from"./button-BEEYPiu6.js";import{I as m}from"./input-BmdUR_ho.js";import{L as n}from"./label-GTUQNhw4.js";import{T as f}from"./textarea-CFmnFgJy.js";import{D as R,a as F,b as M,c as q,d as O,f as $}from"./dialog-C_0u_R25.js";import{A as B,a as G,b as H,c as Q,d as V,e as K,f as W,g as Y}from"./alert-dialog-BfcxgS2a.js";import{T as Z,a as J,b as k,c as T}from"./tabs-m1ZDDarp.js";import{t as c}from"./index-CFb8R-Fe.js";import{u as X,s as ee}from"./useActivities-RM1IORxS.js";import{S as se}from"./sparkles-gcrpbUy_.js";import{P as U}from"./plus-D2JNjiuG.js";import{L as E}from"./loader-circle-tXM_jetd.js";import{I as L}from"./image-lr_hUD41.js";import{P as ae}from"./pencil-BTbNvM3I.js";import{T as te}from"./trash-2-Dy5LmuLd.js";import{U as re}from"./upload-CKGhMmOB.js";import"./utils-BQHNewu7.js";import"./index-B7MjU4JX.js";import"./index-Brf2SyxW.js";import"./x-DeBkt7rZ.js";import"./createLucideIcon-D-ObpEcT.js";import"./index-pbkyVucM.js";const I={title_es:"",title_eu:"",short_title_es:"",short_title_eu:"",excerpt_es:"",excerpt_eu:"",description_es:"",description_eu:"",highlights_es:"",highlights_eu:"",dates:"",location:"",ages:"",price:"",signup_url:"",image_url:null};function Ue(){const{activities:o,loading:d}=X(),[r,g]=x.useState(!1),[a,l]=x.useState(null),[u,h]=x.useState(null),j=()=>{l(null),g(!0)},v=i=>{l(i),g(!0)},N=async i=>{const{error:w}=await _.from("activities").delete().eq("id",i.id);if(w){c.error("No se pudo eliminar",{description:w.message});return}c.success("Actividad eliminada"),h(null)};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("header",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("div",{className:"h-12 w-12 rounded-xl admin-icon-box flex items-center justify-center",children:e.jsx(se,{className:"h-6 w-6"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold tracking-tight",children:"Otras Actividades del club"}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"Campus, clinics y actividades. Los cambios aparecen en la web al instante, en euskera y castellano."})]})]}),e.jsxs(p,{onClick:j,className:"gap-2",children:[e.jsx(U,{className:"h-4 w-4"})," Nueva actividad"]})]}),d?e.jsxs("div",{className:"py-16 text-center text-muted-foreground flex items-center justify-center gap-2",children:[e.jsx(E,{className:"h-4 w-4 animate-spin"})," Cargandoâ¦"]}):o.length===0?e.jsxs(S,{className:"p-10 text-center border-dashed",children:[e.jsx("p",{className:"text-muted-foreground",children:"Aún no has publicado ninguna actividad."}),e.jsxs(p,{onClick:j,className:"mt-4 gap-2",children:[e.jsx(U,{className:"h-4 w-4"})," Crear la primera"]})]}):e.jsx("div",{className:"grid gap-4 sm:grid-cols-2 xl:grid-cols-3",children:o.map(i=>e.jsxs(S,{className:"p-4 flex flex-col gap-3",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"h-20 w-20 rounded-lg bg-muted border border-border grid place-items-center overflow-hidden shrink-0",children:i.image_url?e.jsx("img",{src:i.image_url,alt:i.title_es,className:"h-full w-full object-cover"}):e.jsx(L,{className:"h-6 w-6 text-muted-foreground"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-bold truncate",children:i.title_es||i.title_eu||"(sin tÃtulo)"}),i.title_eu&&i.title_es&&i.title_eu!==i.title_es&&e.jsxs("p",{className:"text-xs text-muted-foreground truncate",children:["EU: ",i.title_eu]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 truncate",children:i.dates}),e.jsx("p",{className:"text-xs text-muted-foreground truncate",children:i.location})]})]}),e.jsxs("div",{className:"flex gap-2 pt-2 border-t border-border",children:[e.jsxs(p,{variant:"outline",size:"sm",className:"flex-1 gap-1.5",onClick:()=>v(i),children:[e.jsx(ae,{className:"h-3.5 w-3.5"})," Editar"]}),e.jsxs(p,{variant:"outline",size:"sm",className:"text-destructive hover:text-destructive gap-1.5",onClick:()=>h(i),children:[e.jsx(te,{className:"h-3.5 w-3.5"})," Eliminar"]})]})]},i.id))}),e.jsx(ie,{open:r,onOpenChange:g,editing:a,allActivities:o}),e.jsx(B,{open:!!u,onOpenChange:i=>
1!i&&h(null),children:e.jsxs(G,{children:[e.jsxs(H,{children:[e.jsx(Q,{children:"¿Eliminar actividad?"}),e.jsxs(V,{children:["Se eliminará ",e.jsx("strong",{children:u?.title_es||u?.title_eu})," de la web. Esta acción no se puede deshacer."]})]}),e.jsxs(K,{children:[e.jsx(W,{children:"Cancelar"}),e.jsx(Y,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",onClick:()=>u&&N(u),children:"Eliminar"})]})]})})]})}function ie({open:o,onOpenChange:d,editing:r,allActivities:g}){const[a,l]=x.useState(I),[u,h]=x.useState(!1),[j,v]=x.useState(!1),N=x.useRef(null);x.useEffect(()=>{o&&l(r?{title_es:r.title_es,title_eu:r.title_eu,short_title_es:r.short_title_es,short_title_eu:r.short_title_eu,excerpt_es:r.excerpt_es,excerpt_eu:r.excerpt_eu,description_es:r.description_es,description_eu:r.description_eu,highlights_es:r.highlights_es,highlights_eu:r.highlights_eu,dates:r.dates??"",location:r.location??"",ages:r.ages??"",price:Number(r.price)>0?String(Number(r.price)):"",signup_url:r.signup_url??"",image_url:r.image_url}:I)},[o,r]);async function i(s){if(!s.type.startsWith("image/")){c.error("El archivo debe ser una imagen");return}const t=await P(s);if(!t)return;s=t.file,h(!0);const y=s.name.split(".").pop()??"jpg",C=`${Date.now()}-${Math.random().toString(36).slice(2,8)}.${y}`,{error:b}=await _.storage.from("activities").upload(C,s,{cacheControl:"3600",upsert:!1});if(b){c.error("No se pudo subir la imagen",{description:b.message}),h(!1);return}const{data:A,error:D}=await _.storage.from("activities").createSignedUrl(C,3600*24*365*100);if(D||!A){c.error("No se pudo generar la URL",{description:D?.message}),h(!1);return}l(z=>({...z,image_url:A.signedUrl})),h(!1)}async function w(){if(!a.title_es.trim()&&!a.title_eu.trim()){c.error("El tÃtulo es obligatorio (en al menos un idioma)");return}v(!0);const s={title_es:a.title_es.trim(),title_eu:a.title_eu.trim(),short_title_es:a.short_title_es.trim(),short_title_eu:a.short_title_eu.trim(),excerpt_es:a.excerpt_es,excerpt_eu:a.excerpt_eu,description_es:a.description_es,description_eu:a.description_eu,highlights_es:a.highlights_es,highlights_eu:a.highlights_eu,dates:a.dates.trim()||null,location:a.location.trim()||null,ages:a.ages.trim()||null,price:Math.max(0,Number(a.price)||0),signup_url:a.signup_url.trim()||null,image_url:a.image_url};if(r){const{error:t}=await _.from("activities").update(s).eq("id",r.id);if(t){c.error("No se pudo guardar",{description:t.message}),v(!1);return}c.success("Actividad actualizada")}else{const t=ee(a.title_es||a.title_eu),y=await le(t),C=g.length,{error:b}=await _.from("activities").insert({...s,slug:y,sort_order:C});if(b){c.error("No se pudo crear",{description:b.message}),v(!1);return}c.success("Actividad creada")}v(!1),d(!1)}return e.jsx(R,{open:o,onOpenChange:d,children:e.jsxs(F,{className:"max-w-3xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(M,{children:[e.jsx(q,{children:r?"Editar actividad":"Nueva actividad"}),e.jsx(O,{children:"Rellena los datos en castellano y euskera. Se publica automáticamente en la web."})]}),e.jsxs("div",{className:"space-y-5 py-2",children:[e.jsxs("div",{children:[e.jsx(n,{children:"Imagen principal"}),e.jsxs("div",{className:"mt-2 flex items-center gap-4",children:[e.jsx("div",{className:"h-28 w-40 rounded-xl bg-muted border border-border grid place-items-center overflow-hidden shrink-0",children:a.image_url?e.jsx("img",{src:a.image_url,alt:"Actividad",className:"h-full w-full object-cover"}):e.jsx(L,{className:"h-7 w-7 text-muted-foreground"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("input",{ref:N,type:"file",accept:"image/*",className:"hidden",onChange:s=>{const t=s.target.files?.[0];t&&i(t),s.target.value=""}}),e.jsxs(p,{type:"button",variant:"outline",size:"sm",onClick:()=>N.current?.click(),disabled:u,className:"gap-2",children:[u?e.jsx(E,{className:"h-4 w-4 animate-spin"}):e.jsx(re,{className:"h-4 w-4"}),"Subir foto"]}),a.image_url&&e.jsx(p,{type:"button",variant:"ghost",size:"sm",className:"ml-2 text-destructive",onClick:()=>l(s=>({...s,image_url:null})),children:"Quitar"})]})]})]}),e.jsxs(Z,{defaultValue:"es",className:"w-full",children:[e.jsxs(J,{children:[e.jsx(k,{value:"es",children:"Castellano"}),e.jsx(k,{value:"eu",children:"Euskera"})]}),e.jsxs(T,{value:"es",className:"space-y-4 pt-4",children:[e.jsxs("div",{children:[e.jsx(n,{children:"TÃtulo"}),e.jsx(m,{value:a.title_es,onChange:s=>l(t=>({...t,title_es:s.target.value})),placeholder:"Ej. Campamento de Baloncesto · Verano 2026"})]}),e.jsxs("div",{children:[e.jsx(n,{children:"TÃtulo corto (para tarjetas)"}),e.jsx(m,{value:a.short_title_es,onChange:s=>l(t=>({...t,short_title_es:s.target.value})),placeholder:"Ej. Campamento de verano"})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Resumen breve"}),e.jsx(f,{rows:2,value:a.excerpt_es,onChange:s=>l(t=>({...t,excerpt_es:s.target.value})),placeholder:"Una o dos frases que se ven en la tarjeta y en la cabecera."})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Texto largo (descripción)"}),e.jsx(f,{rows:7,value:a.description_es,onChange:s=>l(t=>({...t,description_es:s.target.value})),placeholder:"Separa los párrafos con una lÃnea en blanco."})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Qué incluye (un elemento por lÃnea)"}),e.jsx(f,{rows:5,value:a.highlights_es,onChange:s=>l(t=>({...t,highlights_es:s.target.value})),placeholder:`Entrenamientos diarios con técnicos titulados 2Actividades complementarias y juegos 3...`})]})]}),e.jsxs(T,{value:"eu",className:"space-y-4 pt-4",children:[e.jsxs("div",{children:[e.jsx(n,{children:"Izenburua"}),e.jsx(m,{value:a.title_eu,onChange:s=>l(t=>({...t,title_eu:s.target.value})),placeholder:"Adib. Saskibaloi Kanpamentua · Uda 2026"})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Izenburu laburra"}),e.jsx(m,{value:a.short_title_eu,onChange:s=>l(t=>({...t,short_title_eu:s.target.value}))})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Laburpena"}),e.jsx(f,{rows:2,value:a.excerpt_eu,onChange:s=>l(t=>({...t,excerpt_eu:s.target.value}))})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Deskribapena"}),e.jsx(f,{rows:7,value:a.description_eu,onChange:s=>l(t=>({...t,description_eu:s.target.value})),placeholder:"Bereiztu paragrafoak lerro huts batekin."})]}),e.jsxs("div",{children:[e.jsx(n,{children:"Zer barne (elementu bat lerroko)"}),e.jsx(f,{rows:5,value:a.highlights_eu,onChange:s=>l(t=>({...t,highlights_eu:s.target.value}))})]})]})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsxs(n,{children:["Fechas ",e.jsx("span",{className:"text-muted-foreground font-normal",children:"(opcional)"})]}),e.jsx(m,{value:a.dates,onChange:s=>l(t=>({...t,dates:s.target.value})),placeholder:"Del 29 de junio al 24 de julio de 2026"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Si lo de
3jas vacÃo, no se muestra en la web."})]}),e.jsxs("div",{children:[e.jsxs(n,{children:["Lugar ",e.jsx("span",{className:"text-muted-foreground font-normal",children:"(opcional)"})]}),e.jsx(m,{value:a.location,onChange:s=>l(t=>({...t,location:s.target.value})),placeholder:"Polideportivo Maloste · Gernika-Lumo"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Si lo dejas vacÃo, no se muestra en la web."})]}),e.jsxs("div",{children:[e.jsxs(n,{children:["Edades ",e.jsx("span",{className:"text-muted-foreground font-normal",children:"(opcional)"})]}),e.jsx(m,{value:a.ages,onChange:s=>l(t=>({...t,ages:s.target.value})),placeholder:"De 7 a 16 años"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Si lo dejas vacÃo, no se muestra en la web."})]}),e.jsxs("div",{children:[e.jsxs(n,{children:["Precio (â¬) ",e.jsx("span",{className:"text-muted-foreground font-normal",children:"(0 = gratis)"})]}),e.jsx(m,{type:"number",min:0,step:"0.01",inputMode:"decimal",value:a.price,placeholder:"0",onChange:s=>l(t=>({...t,price:s.target.value}))})]}),e.jsxs("div",{className:"sm:col-span-2",children:[e.jsxs(n,{children:['Enlace del botón "Inscribirse" ',e.jsx("span",{className:"text-muted-foreground font-normal",children:"(opcional)"})]}),e.jsx(m,{type:"url",value:a.signup_url,onChange:s=>l(t=>({...t,signup_url:s.target.value})),placeholder:"https://â¦"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Si lo dejas vacÃo, se usa el enlace general de actividades (Editar web â Enlaces)."})]})]})]}),e.jsxs($,{children:[e.jsx(p,{variant:"outline",onClick:()=>d(!1),disabled:j,children:"Cancelar"}),e.jsxs(p,{onClick:w,disabled:j||u,className:"gap-2",children:[j&&e.jsx(E,{className:"h-4 w-4 animate-spin"}),r?"Guardar cambios":"Crear actividad"]})]})]})})}async function le(o){let d=o,r=2;for(;;){const{data:g}=await _.from("activities").select("id").eq("slug",d).maybeSingle();if(!g)return d;d=`${o}-${r++}`}}export{Ue 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.