1import{j as e,m,g as j,u as v,r as c,h as C,i as y,G as N,k,l as M,n as B,F as L,U as S,o as F,p as z,R as A,q as E,H as R,L as u,B as d,s as U,t as D,v as O,e as T}from"./index-Dz3YklIO.js";const H=()=>e.jsx(m.p,{className:"text-sm text-white leading-5 w-full",initial:{opacity:0},animate:{opacity:1},transition:{duration:.5,delay:.8},children:"Write in the chat what you want to create."}),P=({title:s,description:i,icon:t,to:r,colorClass:n,count:a})=>e.jsx(m.div,{whileHover:{scale:1.02,y:-4},transition:{type:"spring",stiffness:300},className:`relative overflow-hidden rounded-2xl shadow-md hover:shadow-xl transition-all duration-300 ${n} text-white flex flex-col h-full`,children:e.jsxs("div",{className:"p-6 md:p-8 flex-1 flex flex-col",children:[e.jsx("div",{className:"absolute top-0 right-0 p-4 opacity-10 transform translate-x-4 -translate-y-4 pointer-events-none",children:e.jsx(t,{className:"w-32 h-32"})}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full justify-between",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between items-start mb-6",children:[e.jsx("div",{className:"bg-white/20 w-12 h-12 rounded-xl flex items-center justify-center backdrop-blur-md shadow-inner border border-white/20",children:e.jsx(t,{className:"w-6 h-6 text-white"})}),a!==void 0&&e.jsxs("div",{className:"bg-white/20 px-3 py-1 rounded-full text-sm font-bold backdrop-blur-md border border-white/20",children:[a," Records"]})]}),e.jsx("h3",{className:"text-xl md:text-2xl font-bold mb-3 tracking-tight",children:s}),e.jsx("p",{className:"text-white/80 text-sm md:text-base font-medium leading-snug max-w-[90%] mb-8",children:i})]}),e.jsxs(u,{to:r,className:"mt-auto inline-flex items-center justify-center w-full bg-white/20 hover:bg-white/30 backdrop-blur-md py-3 px-4 rounded-xl font-bold text-sm uppercase tracking-wider transition-all group border border-white/20",children:["Manage ",s," ",e.jsx(O,{className:"ml-2 w-4 h-4 group-hover:translate-x-1 transition-transform"})]})]})]})}),I=()=>{const{signOut:s}=j(),i=v(),[t,r]=c.useState({});c.useEffect(()=>{(async()=>{const o=async b=>{const{count:f,error:w}=await T.from(b).select("*",{count:"exact",head:!0});return w?0:f},[g,x,h,p]=await Promise.all([o("cities"),o("attractions"),o("countries"),o("tours")]);r({cities:g,attractions:x,countries:h,tours:p})})()},[]);const n=async()=>{await s(),i("/login")},a=[{title:"Tours",description:"Manage tour packages, pricing, itineraries, and categories.",icon:C,to:"/admin/tours",colorClass:"bg-gradient-to-br from-blue-600 to-blue-800",count:t.tours},{title:"Excursions",description:"Update optional day trips, activities, and local experiences.",icon:y,to:"/admin/excursions",colorClass:"bg-gradient-to-br from-emerald-600 to-emerald-800"},{title:"Countries",description:"Control overarching country info and landing pages.",icon:N,to:"/admin/countries",colorClass:"bg-gradient-to-br from-indigo-600 to-indigo-800",count:t.countries},{title:"Cities",description:"Manage destination cities, descriptions, and regional info.",icon:k,to:"/admin/cities",colorClass:"bg-gradient-to-br from-purple-600 to-purple-800",count:t.cities},{title:"Attractions",description:"Curate museums, parks, monuments, and points of interest.",icon:M,to:"/admin/attractions",colorClass:"bg-gradient-to-br from-teal-600 to-teal-800",count:t.attractions},{title:"Image Library",description:"Upload and organize photos for tours, blogs, and destinations.",icon:B,to:"/admin/image-library",colorClass:"bg-gradient-to-br from-amber-500 to-amber-700"},{title:"Blog Posts",description:"Create and edit travel articles, news, and updates.",icon:L,to:"/admin/blog",colorClass:"bg-gradient-to-br from-rose-600 to-rose-800"},{title:"Users",description:"Manage administrators, editors, and user permissions.",icon:S,to:"/admin/users",colorClass:"bg-gradient-to-br from-cyan-600 to-cyan-800"},{title:"Pages",description:"Manage website pages, SEO metadata, and generic content.",icon:F,to:"/admin/pages",colorClass:"bg-gradient-to-br from-violet-600 to-violet-800"},{title:"Navigation",description:"Configure website menu links and structure.",icon:z,to:"/admin/navigation",colorClass:"bg-gradient-to-br from-orange-500 to-orange-700"},{title:"Content Backups",description:"Restore previous versions of content columns. 30-day history.",icon:A,to:"/admin/content-backups",colorClass:"bg-gradient-to-br from-slate-600 to-slate-800"},{title:"Image Compression",description:"One-off batch compression for oversized bucket images. Dry run by default.",icon:E,to:"/admin/image-compression",colorClass:"bg-gradient-to-br from-fuchsia-600 to-fuchsia-800"}];return e.jsxs("div",{className:"min-h-screen bg-[#F9FAFB] flex flex-col",children:[e.jsx(R,{children:e.jsx("title",{children:"CMS Dashboard - Baltic Tours"})}),e.jsx("header",{className:"bg-white border-b border-gray-200 py-4 px-6 sticky top-0 z-50",children:e.jsxs("div",{className:"max-w-[1600px] mx-auto flex justify-between items-center",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"bg-[var(--primary-blue)] text-white p-2 rounded-lg",children:e.jsx(W,{className:"w-6 h-6"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl font-bold text-gray-900 tracking-tight leading-none",children:"Control Center"}),e.jsx("p",{className:"text-xs text-gray-500 mt-1 font-semibold uppercase tracking-widest",children:"Baltic Tours CMS"})]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(u,{to:"/",children:e.jsxs(d,{variant:"outline",size:"sm",className:"hidden sm:flex items-center gap-2 border-gray-200 hover:bg-gray-50 rounded-xl",children:[e.jsx(U,{className:"w-4 h-4"})," View Site"]})}),e.jsxs(d,{variant:"ghost",size:"sm",onClick:n,className:"text-red-600 hover:text-red-700 hover:bg-red-50 font-bold flex items-center gap-2 rounded-xl",children:[e.jsx(D,{className:"w-4 h-4"})," Logout"]})]})]})}),e.jsx("main",{className:"flex-1 p-6 md:p-10",children:e.jsxs("div",{className:"max-w-[1600px] mx-auto
1space-y-8",children:[e.jsx(H,{}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6",children:a.map((l,o)=>e.jsx(P,{...l},o))})]})}),e.jsx("footer",{className:"bg-white border-t border-gray-200 py-6 px-6 text-center text-sm text-gray-500",children:e.jsxs("p",{children:["© ",new Date().getFullYear()," Baltic Tours CMS. All rights reserved."]})})]})},W=s=>e.jsxs("svg",{...s,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10"}),e.jsx("path",{d:"m9 12 2 2 4-4"})]});export{I 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.