1import{j as e}from"./vendor-query-gPAv4kG9.js";import{r,L as Z}from"./vendor-router-SMAsTmJe.js";import{P as ee}from"./PageHero-BC8ltVcW.js";import{B as l}from"./button-BrxAmvFc.js";import{C as D,a as B,b as I,d as M}from"./card-BC1CEkkP.js";import{I as o}from"./input-ChzWkteg.js";import{L as m}from"./label-DoPQhuAW.js";import{T as ae,a as se,b as N,c as y,d as te,e as h}from"./table-BgEqzetb.js";import{u as ie,C as re}from"./ConfirmDialog-CyK4OHGh.js";import{u as ne,a as le}from"./useAdminAcademics-BTCDLOLe.js";import{J as oe,c as x,P as ce,t as de,O as me,X as ge,Q as pe,g as ue}from"./vendor-icons-JBeLBwXY.js";import"./index-BDx-g-7z.js";import"./vendor-state-D5Aada9y.js";import"./vendor-http-BOeqtr82.js";import"./vendor-charts-B4fFN5bu.js";import"./index-DpSZzw0i.js";import"./useButton-P_ddH9pg.js";import"./useControlled-lAQ7N31z.js";import"./shadowDom-CzgMMIxu.js";import"./useRegisterFieldControl-B-9cYP8N.js";import"./createBaseUIEventDetails-BfMLEA8z.js";import"./DialogTitle-fm4ZgVoB.js";import"./InternalBackdrop-CnQ8qLt9.js";import"./inertValue-LcK7JeeQ.js";import"./useTimeout-B8K00sz9.js";import"./useTransitionStatus-CXPuUWyO.js";import"./useValueChanged-DU1FSvht.js";import"./vendor-editor-Dd7j_QQv.js";import"./useRole-D8zasiPP.js";import"./academics-BxwvGi9y.js";const n=[{label:"Highest Package",value:"â¹61+ LPA",icon:"trending",description:"National & Global Drives"},{label:"Average Package",value:"â¹5.12 LPA",icon:"award",description:"Consistent Growth Rate"},{label:"Placements Rate",value:"80%+",icon:"check",description:"Eligible B.Tech & M.Tech"},{label:"Recruiter Network",value:"100+",icon:"users",description:"Active Corporate Partners"}];function Qe(){const{data:c,isPending:G,isFetching:V,refetch:g}=ne(),{updateStats:p,createPartner:C,updatePartner:w,deletePartner:J,uploadPartnerLogo:j}=le(),{confirm:O,dialogProps:Q}=ie(),[v,A]=r.useState(n),[L,S]=r.useState(""),[T,z]=r.useState(null),[_,k]=r.useState(null),[E,f]=r.useState(""),[F,b]=r.useState(null),u=r.useMemo(()=>c?.partners??[],[c?.partners]),U=G||V,d=p.isPending||C.isPending||w.isPending||j.isPending;r.useEffect(()=>{const s=[...Array.isArray(c?.stats)&&c.stats.length?c.stats:n];for(;s.length<n.length;)s.push(n[s.length]);A(s.slice(0,n.length).map((t,i)=>({label:t.label||n[i]?.label||"Placement Stat",value:t.value||"",icon:t.icon||n[i]?.icon||"users",description:t.description||n[i]?.description||""})))},[c?.stats]);const P=(a,s,t)=>{A(i=>i.map((H,Y)=>Y===a?{...H,[s]:t}:H))},X=async()=>{await p.mutateAsync(v),await g()},$=async a=>{a.preventDefault();const s=L.trim();if(!s)return;const t=await C.mutateAsync({name:s,sort_order:u.length}),i=t?.id||t?.display_content_id;i&&T&&await j.mutateAsync({id:i,file:T}),S(""),z(null),a.currentTarget.reset(),await g()},q=async a=>{await O({title:"Remove partner?",description:`${a.name||a.label} will be removed from the homepage carousel.`,confirmLabel:"Remove",variant:"destructive",onConfirm:()=>J.mutateAsync(a.id)}),await g()},K=a=>{k(a.id),f(a.name||""),b(null)},R=()=>{k(null),f(""),b(null)},W=async a=>{const s=E.trim();s&&(await w.mutateAsync({id:a.id,data:{name:s,sort_order:a.sort_order||0}}),F&&await j.mutateAsync({id:a.id,file:F}),R(),await g())};return e.jsxs("div",{className:"space-y-6",children:[e.jsx(ee,{title:"Driving Careers Forward",description:"Manage placement highlight stats for the homepage and public placements page, plus recruiter partner logos.",badgeText:"Placements",icon:oe,stats:[{label:"Stats",value:v.length},{label:"Partners",value:u.length}],action:e.jsx(l,{asChild:!0,variant:"outline",size:"sm",children:e.jsx(Z,{to:"/placements",target:"_blank",rel:"noreferrer",children:"View placements page"})})}),e.jsxs(D,{children:[e.jsx(B,{children:e.jsx(I,{children:"Placement stats"})}),e.jsxs(M,{className:"space-y-4",children:[e.jsx("div",{className:"grid gap-4 lg:grid-cols-2 xl:grid-cols-4",children:v.map((a,s)=>e.jsxs("div",{className:"space-y-3 rounded-lg border bg-white p-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{children:"Label"}),e.jsx(o,{value:a.label,onChange:t=>P(s,"label",t.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{children:"Value"}),e.jsx(o,{value:a.value,onChange:t=>P(s,"value",t.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{children:"Description"}),e.jsx(o,{value:a.description||"",onChange:t=>P(s,"description",t.target.value)})]})]},s))}),e.jsxs(l,{onClick:X,disabled:p.isPending,children:[p.isPending?e.jsx(x,{className:"animate-spin",size:14}):null,"Save stats"]})]})]}),e.jsxs(D,{children:[e.jsx(B,{children:e.jsx(I,{children:"Recruiter partners"})}),e.jsxs(M,{className:"space-y-4",children:[e.jsxs("form",{onSubmit:$,className:"grid gap-3 md:grid-cols-[1fr_1fr_auto]",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"partner-name",children:"Partner name"}),e.jsx(o,{id:"partner-name",value:L,onChange:a=>S(a.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"partner-logo",children:"Logo"}),e.jsx(o,{id:"partner-logo",type:"file",accept:"image/*",onChange:a=>z(a.target.files?.[0]||null)})]}),e.jsx("div",{className:"flex items-end",children:e.jsxs(l,{type:"submit",disabled:d,children:[d?e.jsx(x,{className:"animate-spin",size:14}):e.jsx(ce,{size:14}),"Add partner"]})})]}),U?e.jsxs("div",{className:"flex items-center gap-2 py-8 text-sm text-muted-foreground",children:[e.jsx(x,{className:"animate-spin",size:18}),"Loading partners..."]}):e.jsxs(ae,{children:[e.jsx(se,{children:e.jsxs(N,{children:[e.jsx(y,{children:"Logo"}),e.jsx(y,{children:"Name"}),e.jsx(y,{className:"text-right",children:"Actions"})]})}),e.jsxs(te,{children:[u.map(a=>e.jsxs(N,{children:[e.jsx(h,{children:e.jsx("div",{className:"flex h-14 w-28 items-center justify-center rounded-lg border bg-muted",children:a.logo_url?e.jsx("img",{src:a.logo_url,alt:a.name,className:"max-h-10 w-full object-contain"}):e.jsx(de,{size:18,className:"text-muted-foreground"})})}),e.jsx(h,{className:"font-medium",children:_===a.id?e.jsxs("div",{className:"grid gap-2 md:grid-cols-[minmax(180px,1fr)_minmax(180px,1fr)]",children:[e.jsx(o,{value:E,onChange:s=>
1f(s.target.value),"aria-label":"Partner name"}),e.jsx(o,{type:"file",accept:"image/*",onChange:s=>b(s.target.files?.[0]||null),"aria-label":"Replace partner logo"})]}):a.name}),e.jsx(h,{className:"text-right",children:e.jsx("div",{className:"flex justify-end gap-2",children:_===a.id?e.jsxs(e.Fragment,{children:[e.jsx(l,{size:"icon-sm",onClick:()=>W(a),disabled:d,children:d?e.jsx(x,{className:"animate-spin",size:14}):e.jsx(me,{size:14})}),e.jsx(l,{size:"icon-sm",variant:"outline",onClick:R,disabled:d,children:e.jsx(ge,{size:14})})]}):e.jsxs(e.Fragment,{children:[e.jsx(l,{size:"icon-sm",variant:"outline",onClick:()=>K(a),children:e.jsx(pe,{size:14})}),e.jsx(l,{size:"icon-sm",variant:"destructive",onClick:()=>q(a),children:e.jsx(ue,{size:14})})]})})})]},a.id)),u.length?null:e.jsx(N,{children:e.jsx(h,{colSpan:3,className:"py-10 text-center text-muted-foreground",children:"No partner logos yet."})})]})]})]})]}),e.jsx(re,{...Q})]})}export{Qe 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.