1import{r as W,D as y,j as e,e as C,C as o,d as x,a as w,b as E,M as k,a3 as S,L as q,s as _}from"./index-DaxYHL_c.js";import{B as j}from"./badge-BgIO1kHT.js";import{S as f}from"./skeleton-BhNP70EB.js";import{S as O}from"./switch-KmY3AqC1.js";import{F as z}from"./filter-sxPHHD2h.js";const m=["North Wales","South Wales","Mid Wales","West Wales","North West England","West Midlands","Shropshire","Cheshire"],d=4,K=()=>{const[h,M]=W.useState(!1),{data:a,isLoading:F}=y({queryKey:["admin-categories"],queryFn:async()=>{const{data:t,error:s}=await _.from("categories").select("id, name, slug").order("name");if(s)throw s;return t}}),{data:n,isLoading:A}=y({queryKey:["admin-elite-suppliers"],queryFn:async()=>{const{data:t,error:s}=await _.from("suppliers").select("id, name, category_id, regions_covered").eq("is_elite_member",!0);if(s)throw s;return t}}),p=t=>t.split("-").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join(" "),b=()=>{const t={};return a==null||a.forEach(s=>{t[s.id]={},m.forEach(l=>{t[s.id][l]=0})}),n==null||n.forEach(s=>{s.category_id&&s.regions_covered&&s.regions_covered.forEach(l=>{var c;const r=p(l);((c=t[s.category_id])==null?void 0:c[r])!==void 0&&t[s.category_id][r]++})}),t},L=()=>{const t=b();let s=0,l=0,r=0;return a==null||a.forEach(c=>{m.forEach(i=>{var v;s+=d;const u=((v=t[c.id])==null?void 0:v[i])||0;l+=u,u>=d&&r++})}),{totalSlots:s,filledSlots:l,fullCells:r,totalCells:((a==null?void 0:a.length)||0)*m.length}},R=F||A,N=b(),g=L();return R?e.jsxs("div",{className:"space-y-6",children:[e.jsx(f,{className:"h-8 w-64"}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsx(f,{className:"h-24"}),e.jsx(f,{className:"h-24"}),e.jsx(f,{className:"h-24"})]}),e.jsx(f,{className:"h-96"})]}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-display text-foreground flex items-center gap-2",children:[e.jsx(C,{className:"w-6 h-6 text-gold"}),"Elite Capacity Management"]}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"Monitor elite membership counts per category and region (max 4 per slot)"})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[e.jsx(o,{children:e.jsx(x,{className:"pt-6",children:e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-3xl font-bold text-foreground",children:(n==null?void 0:n.length)||0}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Total Elite Members"})]})})}),e.jsx(o,{children:e.jsx(x,{className:"pt-6",children:e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-3xl font-bold text-foreground",children:g.filledSlots}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Slots Filled"})]})})}),e.jsx(o,{children:e.jsx(x,{className:"pt-6",children:e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-3xl font-bold text-foreground",children:g.totalSlots-g.filledSlots}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Slots Available"})]})})}),e.jsx(o,{children:e.jsx(x,{className:"pt-6",children:e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-3xl font-bold text-destructive",children:g.fullCells}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Full Cells"})]})})})]}),e.jsxs(o,{children:[e.jsx(w,{children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs(E,{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-5 h-5"}),"Capacity Matrix"]}),e.jsx(S,{children:"Elite member count by category and region"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(z,{className:"w-4 h-4 text-muted-foreground"}),e.jsx(O,{id:"available-filter",checked:h,onCheckedChange:M}),e.jsx(q,{htmlFor:"available-filter",className:"text-sm cursor-pointer",children:"Show only available slots"})]})]})}),e.jsxs(x,{children:[e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{className:"text-left p-3 bg-muted font-semibold text-sm sticky left-0 z-10",children:"Category"}),m.filter(t=>h?a==null?void 0:a.some(s=>{var r;return(((r=N[s.id])==null?void 0:r[t])||0)<d}):!0).map(t=>e.jsx("th",{className:"p-3 bg-muted font-semibold text-sm text-center min-w-[100px]",children:t},t))]})}),e.jsx("tbody",{children:a==null?void 0:a.filter(t=>h?m.some(s=>{var r;return(((r=N[t.id])==null?void 0:r[s])||0)<d}):!0).map(t=>{const s=m.filter(l=>h?a==null?void 0:a.some(r=>{var i;return(((i=N[r.id])==null?void 0:i[l])||0)<d}):!0);return e.jsxs("tr",{className:"border-t border-border",children:[e.jsx("td",{className:"p-3 font-medium sticky left-0 bg-background z-10",children:t.name}
1),s.map(l=>{var u;const r=((u=N[t.id])==null?void 0:u[l])||0,c=r>=d,i=r===d-1;return h&&c?e.jsx("td",{className:"p-3 text-center",children:e.jsx("span",{className:"text-muted-foreground text-xs",children:"â"})},l):e.jsx("td",{className:"p-3 text-center",children:e.jsxs(j,{variant:c?"destructive":i?"secondary":"outline",className:`min-w-[60px] justify-center ${c?"bg-destructive/10 text-destructive border-destructive":i?"bg-amber-100 text-amber-800 border-amber-300":r>0?"bg-green-50 text-green-700 border-green-200":""}`,children:[r,"/",d]})},l)})]},t.id)})})]})}),e.jsxs("div",{className:"flex items-center gap-6 mt-6 pt-4 border-t text-sm",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(j,{variant:"outline",className:"bg-green-50 text-green-700 border-green-200",children:"0-2"}),e.jsx("span",{className:"text-muted-foreground",children:"Available"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(j,{variant:"secondary",className:"bg-amber-100 text-amber-800 border-amber-300",children:"3/4"}),e.jsx("span",{className:"text-muted-foreground",children:"Near Capacity"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(j,{variant:"destructive",className:"bg-destructive/10 text-destructive border-destructive",children:"4/4"}),e.jsx("span",{className:"text-muted-foreground",children:"Full"})]})]})]})]}),e.jsxs(o,{children:[e.jsxs(w,{children:[e.jsx(E,{children:"Current Elite Members"}),e.jsx(S,{children:"All suppliers with elite membership status"})]}),e.jsx(x,{children:n&&n.length>0?e.jsx("div",{className:"space-y-3",children:n.map(t=>{var l;const s=a==null?void 0:a.find(r=>r.id===t.category_id);return e.jsxs("div",{className:"flex items-center justify-between p-3 rounded-lg border bg-card",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(C,{className:"w-5 h-5 text-gold"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:t.name}),e.jsx("p",{className:"text-sm text-muted-foreground",children:(s==null?void 0:s.name)||"No category"})]})]}),e.jsx("div",{className:"flex flex-wrap gap-1 justify-end max-w-[300px]",children:((l=t.regions_covered)==null?void 0:l.map(r=>e.jsx(j,{variant:"outline",className:"text-xs",children:p(r)},r)))||e.jsx("span",{className:"text-muted-foreground text-sm",children:"No regions"})})]},t.id)})}):e.jsx("p",{className:"text-center text-muted-foreground py-8",children:"No elite members yet"})})]})]})};export{K 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.