1import{u as A,r as d,a as M,b as j,j as e,L as C,A as W,c as P,B,d as K,U as V,F as z,C as N,e as Q,f as T,I as F,g as x,X as $,h as I,V as O,P as X,i as G,k as H,l as J,m as o}from"./index-u0HMC9Vb.js";function Z(){const b=A(),[_,f]=d.useState(null),[g,v]=d.useState(null),[L,E]=d.useState({}),y=d.useRef({}),[D,u]=d.useState(null),[r,h]=d.useState({title:"",duration_minutes:""}),k=M({mutationFn:({id:t,data:a})=>o.entities.Lesson.update(t,a),onSuccess:()=>{b.invalidateQueries({queryKey:["lessons"]}),u(null)}}),{data:w=[]}=j({queryKey:["courses"],queryFn:()=>o.entities.Course.filter({},"order")}),[S,q]=d.useState(null),n=S||w[0],{data:m=[]}=j({queryKey:["modules",n==null?void 0:n.id],queryFn:()=>o.entities.Module.filter({course_id:n.id},"order"),enabled:!!(n!=null&&n.id)}),{data:R=[]}=j({queryKey:["lessons",m.map(t=>t.id).join(",")],queryFn:async()=>(await Promise.all(m.map(a=>o.entities.Lesson.filter({module_id:a.id},"order")))).flat(),enabled:m.length>0}),U=async(t,a)=>{var s;const l=(s=t.target.files)==null?void 0:s[0];if(!l)return;v(a);const{file_url:c}=await o.integrations.Core.UploadFile({file:l});await o.functions.invoke("uploadLessonVideo",{file_url:c,lessonId:a}),v(null),E(i=>({...i,[a]:!0})),b.invalidateQueries({queryKey:["lessons"]})};return e.jsxs("div",{className:"p-5 lg:px-10 max-w-3xl mx-auto",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs(C,{to:P("Studio"),className:"inline-flex items-center text-stone-500 hover:text-stone-700 mb-3 text-sm",children:[e.jsx(W,{className:"w-4 h-4 mr-1",strokeWidth:1.5}),"Back to Studio"]}),e.jsx("h1",{className:"text-2xl font-bold text-stone-900",children:"Admin"}),e.jsx("p",{className:"text-stone-500 text-sm mt-1",children:"Manage your school's content and data."})]}),e.jsx("div",{className:"grid grid-cols-4 gap-3 mb-8",children:[{label:"Courses",icon:B,to:"/AdminCourses"},{label:"Modules",icon:K,to:"/AdminModules"},{label:"Students",icon:V,to:"/AdminStudentProfiles"},{label:"Deliverables",icon:z,to:"/AdminDeliverableDetail"}].map(({label:t,icon:a,to:l})=>e.jsx(C,{to:l,children:e.jsxs(N,{className:"p-4 border-0 bg-[#ECE8DF] hover:bg-[#E0DDD4] transition-colors text-center cursor-pointer",style:{borderRadius:12},children:[e.jsx(a,{className:"w-5 h-5 text-stone-500 mx-auto mb-2",strokeWidth:1.5}),e.jsx("p",{className:"text-xs font-medium text-stone-700",children:t})]})},l))}),e.jsx("h2",{className:"text-sm font-semibold text-stone-900 mb-3",children:"Lesson Videos"}),e.jsx("div",{className:"flex gap-2 mb-6 flex-wrap",children:w.map(t=>e.jsxs("button",{onClick:()=>{q(t),f(null)},className:`px-4 py-1.5 rounded-full text-xs font-medium transition-colors ${(n==null?void 0:n.id)===t.id?"bg-stone-900 text-white":"bg-[#ECE8DF] text-stone-600 hover:bg-stone-200"}`,children:[t.code," â ",t.title]},t.id))}),e.jsx("div",{className:"space-y-2",children:m.map((t,a)=>{const l=R.filter(s=>s.module_id===t.id),c=_===t.id;return e.jsxs("div",{children:[e.jsx(N,{className:"p-4 border-0 bg-[#ECE8DF] cursor-pointer hover:bg-[#E6E2D8] transition-colors",style:{borderRadius:10},onClick:()=>f(c?null:t.id),children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-7 h-7 rounded-full bg-stone-200 flex items-center justify-center flex-shrink-0",children:e.jsx("span",{className:"text-xs font-medium text-stone-600",children:a+1})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"text-sm font-medium text-stone-900",children:t.title}),e.jsxs("p",{className:"text-xs text-stone-400",children:[l.length," lesson",l.length!==1?"s":""]})]}),c?e.jsx(Q,{className:"w-4 h-4 text-stone-400",strokeWidth:1.5}):e.jsx(T,{className:"w-4 h-4 text-stone-400",strokeWidth:1.5})]})}),c&&l.map(s=>e.jsx(N,{className:"mt-1 ml-4 p-4 border-0 bg-white",style:{borderRadius:10},children:D===s.id?e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] text-stone-400 mb-1 block",children:"Title"}),e.jsx(F,{value:r.title,onChange:i=>h(p=>({...p,title:i.target.value})),className:"h-8 text-sm",autoFocus:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] text-stone-400 mb-1 block",children:"Duration (min)"}),e.jsx(F,{type:"number",value:r.duration_minutes,onChange:i=>h(p=>({...p,duration_minutes:i.target.value})),className:"h-8 text-sm",placeholder:"e.g. 20"})]})]}),e.jsxs("div",{className:"flex gap-2 justify-end",children:[e.jsx(x,{size:"sm",variant:"outline",className:"text-xs h-7",onClick:()=>u(null),children:e.jsx($,{className:"w-3 h-3"})}),e.jsx(x,{size:"sm",className:"text-xs h-7 bg-stone-900 text-white",onClick:()=>k.mutate({id:s.id,data:{title:r.title,duration_minutes:r.duration_minutes?Number(r.duration_minutes):null}}),disabled:k.isPending,children:e.jsx(I,{className:"w-3 h-3"})})]})]}):e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(O,{className:"w-4 h-4 text-stone-300 flex-shrink-0",strokeWidth:1.5}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium text-stone-900",children:s.title}),e.jsxs("p",{className:"text-xs text-stone-400 mt-0.5",children:[s.duration_minutes?`${s.duration_minutes} min · `:"",s.video_url?e.jsx("span",{className:"text-lime-600",children:"â Video uploaded"}):"No video yet"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(x,{size:"icon",variant:"ghost",className:"w-7 h-7",onClick:()=>{u(s.id),h({title:s.title,duration_minutes:s.duration_minutes||""})},children:e.jsx(X,{className:"w-3.5 h-3.5 text-stone-400",strokeWidth:1.5})}),L[s.id]&&e.jsx(G,{className:"w-4 h-4 text-lime-500",strokeWidth:1.5}),e.jsxs(x,{size:"sm",variant:"outline",className:"text-xs",style:{borderRadius:8},disabled:g===s.id,onClick:()=>{var i;return(i=y.current[s.id])==null?void 0:i.click()},children:[g===s.id?e.jsx(H,{className:"w-3.5 h-3.5 animate-spin"}):e.jsx(J,{className:"w-3.5 h-3.5 mr-1",strokeWidth:1.5}),s.video_url?"Replace":"Upload"]}),e.jsx("input",{type:"file",accept:"video/*",className:"hidden",ref:i=>y.current[s.id]=i,onChange:i=>U(i,s.id)})]})]})},s.id))]},t.id)})})]})}export{Z 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.