PageSourceSearch

https://invitation-web.com/assets/AdminImages-DmaTRqwi.js

js invitation-web.com collected 2026-10-07 06:29:11 UTC 7,652 bytes, 1 lines download raw bytes

1import{r as e,j as s}from"./react-vendor-CiWvozff.js";import{m as a,B as t}from"./index-BNLV_yk1.js";import{I as r}from"./input-SQdJ3rbe.js";import{O as l,aB as i,bq as n,L as o,ba as c,a$ as d,D as m}from"./icons-vendor-BN5R48s7.js";import"./data-i18n-V-oYJZvx.js";import"./ui-vendor-DuRgyo6V.js";import"./animation-vendor-CQShIHH6.js";function x(e){if(!e||e<1024)return`${e||0} B`;const s=e/1024;return s<1024?`${s.toFixed(1)} KB`:`${(s/1024).toFixed(2)} MB`}function h(e){try{return new Date(e).toLocaleString("es-MX",{day:"numeric",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return""}}function u({onBack:u}){const[g,w]=e.useState([]),[p,b]=e.useState(!0),[f,j]=e.useState(""),[v,N]=e.useState(""),[y,k]=e.useState(""),[C,S]=e.useState(1),[_,z]=e.useState(!1),[B,L]=e.useState({}),[$,T]=e.useState(null),[D,E]=e.useState(null),F=e.useCallback(async({reset:e=!1,folderOverride:s=null}={})=>{try{e&&b(!0);const t=new URLSearchParams,r=null!=s?s:y;r&&t.set("folder",r);const l=e?1:C+1;t.set("page",String(l)),t.set("per_page","200");const i=await a(`/api/admin/images?${t.toString()}`),n=await i.json();if(!i.ok||!1===n?.success)throw new Error(n?.error||n?.detail||`HTTP ${i.status}`);const o=n?.images||[];w(s=>e?o:[...s,...o]),S(l),z(!!n?.truncated),e&&L(n?.folderStats||{})}catch(t){j(t?.message||"Error cargando imágenes")}finally{b(!1)}},[C,y]);e.useEffect(()=>{F({reset:!0})},[]);const M=e.useMemo(()=>{const e=v.trim().toLowerCase();return e?g.filter(s=>[s.filename,s.user_name,s.user_email,s.user_id,s.folder].filter(Boolean).join(" ").toLowerCase().includes(e)):g},[g,v]),P=e.useMemo(()=>g.reduce((e,s)=>e+(s.size||0),0),[g]),q=async e=>{try{const s=/^https?:\/\//.test(e)?e:window.location.origin+e;await navigator.clipboard.writeText(s),T(e),setTimeout(()=>T(null),1500)}catch{}};return s.jsxs("div",{className:"min-h-screen bg-gradient-to-br from-slate-900 via-purple-950 to-slate-900 text-white",children:[s.jsxs("header",{className:"sticky top-0 z-20 bg-black/40 backdrop-blur-xl border-b border-white/10 px-4 md:px-8 py-4",children:[s.jsxs("div",{className:"max-w-7xl mx-auto flex items-center gap-4",children:[s.jsxs(t,{variant:"outline",size:"sm",onClick:()=>{u?u():window.location.hash="#admin"},className:"border-white/30 text-white bg-white/10 hover:bg-white/20",children:[s.jsx(l,{className:"w-4 h-4 mr-2"}),"Volver"]}),s.jsxs("div",{className:"flex-1 min-w-0",children:[s.jsx("h1",{className:"text-lg md:text-2xl font-bold truncate",children:"🖼️ Imágenes subidas"}),s.jsxs("p",{className:"text-xs text-white/60",children:[M.length," de ",g.length," · ",x(P)," total",_&&' · hay más (clica "Cargar más")']})]})]}),s.jsx("div",{className:"max-w-7xl mx-auto mt-3 flex flex-col sm:flex-row gap-2",children:s.jsxs("div",{className:"relative flex-1",children:[s.jsx(i,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-white/40"}),s.jsx(r,{value:v,onChange:e=>N(e.target.value),placeholder:"Buscar por nombre de archivo, usuario, email, carpeta…",className:"pl-9 bg-white/10 border-white/20 text-white placeholder:text-white/40"})]})}),s.jsx("div",{className:"max-w-7xl mx-auto mt-2 flex flex-wrap gap-1.5",children:["","gallery","hero","story","avatars","details","general"].map(e=>s.jsxs("button",{onClick:()=>(e=>{k(e),S(1),w([]),F({reset:!0,folderOverride:e})})(e),className:"text-xs px-3 py-1 rounded-full border transition-colors flex items-center gap-1 "+(y===e?"bg-white/20 border-white/40 text-white":"bg-white/5 border-white/10 text-white/50 hover:bg-white/10 hover:text-white/80"),children:[s.jsx(n,{className:"w-3 h-3"}),e||"Todas",null!=B[e||"general"]&&""===y&&""!==e&&s.jsxs("span",{className:"text-white/40",children:["· ",B[e]||0]})]},e||"all"))})]}),s.jsx("main",{className:"max-w-7xl mx-auto p-4 md:p-8",children:p&&0===g.length?s.jsxs("div",{className:"flex items-center justify-center py-24 text-white/50",children:[s.jsx(o,{className:"w-6 h-6 animate-spin mr-2"})," Cargando imágenes…"]}):f?s.jsx("div",{className:"bg-red-500/10 border border-red-500/30 text-red-200 rounded-lg p-4",children:f}):0===M.length?s.jsx("div",{className:"text-center py-24 text-white/50",children:"No hay imágenes que coincidan."}):s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 gap-3",children:M.map(e=>s.jsxs("div",{className:"group bg-white/5 border border-white/10 rounded-lg overflow-hidden hover:border-white/30 transition-all",children:[s.jsxs("button",{onClick:()=>E(e),className:"relative block aspect-square w-full bg-black/30 overflow-hidden",children:[s.jsx("img",{src:e.url,alt:e.filename,loading:"lazy",className:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-105",onError:e=>{e.currentTarget.style.opacity="0.2"}}),s.jsx("span",{className:"absolute top-1 left-1 text-[9px] px-1.5 py-0.5 rounded-full bg-black/70 border border-white/20 text-white/80 uppercase tracking-wider",children:e.folder})]}),s.jsxs("div",{className:"p-2 text-[10px] text-white/60 space-y-1",children:[s.jsx("div",{className:"truncate text-white/90 font-medium",title:e.filename,children:e.filename}),s.jsx("div",{className:"truncate",title:e.user_email||"",children:e.user_name||e.user_email||e.user_id||"—"}),s.jsxs("div",{className:"flex items-center justify-between gap-1",children:[s.jsx("span",{children:e.size?x(e.size):e.uploaded?h(e.uploaded):""}),s.jsxs("div",{className:"flex gap-1",children:[s.jsx("button",{onClick:()=>q(e.url),className:"p-1 rounded hover:bg-white/10",title:"Copiar URL",children:$===e.url?s.jsx(c,{className:"w-3 h-3 text-emerald-400"}):s.jsx(d,{className:"w-3 h-3"})}),s.jsx("a",{href:e.url,download:e.filename,className:"p-1 rounded hover:bg-white/10",title:"Descargar",onClick:e=>e.stopPropagation(),children:s.jsx(m,{className:"w-3 h-3"})})]})]})]})]},e.id||e.key))}),_&&s.jsx("div",{className:"flex justify-center mt-6",children:s.jsx(t,{onClick:()=>F({reset:!1}),disabled:p,className:"bg-white/10 border border-white/20 hover:bg-white/20",children:p?s.jsxs(s.Fragment,{children:[s.jsx(o,{className:"w-4 h-4 animate-spin mr-2"})," Cargando…"]}):"Cargar más"})})]})}),D&&s.jsx("div",{className:"fixed inset-0 z-50 bg-black/90 backdrop-blur-sm flex items-center justify-center p-4",onClick:()=>E(null),children:s.jsxs("div",{className:"max-w-5xl w-full max-h-[90vh] flex flex-col",onClick:e=>e.stopPropagation(),children:[s.jsx("img",{src:D.url,alt:D.filename,className:"max-h-[75vh] w-auto mx-auto rounded-lg shadow-2xl"}),s.jsxs("div",{className:"mt-3 bg-black/60 border border-white/10 rounded-lg p-3 text-xs text-white/80 flex flex-wrap items-center justify-between gap-2",children:[s.jsxs("div",{className:"min-w-0",children:[s.jsx("div",{className:"font-semibold truncate",children:D.filename}),s.jsxs("div",{className:"text-white/50 truncate",children:[D.user_name||D.user_email||D.user_id||"—"," · ",D.folder,D.size?` · ${x(D.size)}`:""," · ",h(D.uploaded)]})]}),s.jsxs("div",{className:"flex gap-2",children:[s.jsxs("button",{onClick:()=>q(D.url),className:"px-3 py-1.5 rounded bg-white/10 hover:bg-white/20 flex items-center gap-1",children:[$===D.url?s.jsx(c,{className:"w-3.5 h-3.5 text-emerald-400"}):s.jsx(d,{className:"w-3.5 h-3.5"}),$===D.url?"Copiado":"Copiar URL"]}),s.jsxs("a",{href:D.url,download:D.filename,className:"px-3 py-1.5 rounded bg-white/10 hover:bg-white/20 flex items-center gap-1",children:[s.jsx(m,{className:"w-3.5 h-3.5"}),"Descargar"]}),s.jsx("button",{onClick:()=>E(null),className:"px-3 py-1.5 rounded bg-white/10 hover:bg-white/20",children:"Cerrar"})]})]})]})})]})}export{u 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.