1"use strict";(self.webpackChunkmy_app=self.webpackChunkmy_app||[]).push([[4168],{3512:(e,s,t)=>{t.r(s),t.d(s,{default:()=>h});var n=t(9379),i=t(5043),a=t(3216),r=t(725),o=t(9879),l=t(6894),c=t(5452),d=t(4662),u=t(579);function m(e,s){if(c.A.debug("--- processInlineFeedback START ---"),c.A.debug("Original text input type:",typeof e),c.A.debug("Original text input value:",e),!e)return c.A.debug("Input text is empty, null, or undefined. Returning empty string."),c.A.debug("--- processInlineFeedback END ---"),"";if("string"!==typeof e)return c.A.warn("processInlineFeedback received non-string input after initial check:",e,"(Type:",typeof e,")"),'<span style="color: red;">[Invalid Feedback Format]</span>';const t=/\[\s*TEACHER\s*\]/i,n=t.test(e),i=n?'<span class="teacher-badge small">Teacher</span>':"";c.A.debug("Detected isTeacherFeedback:",n);let a=e.replace(t,"").trim();c.A.debug("Cleaned text:",a);let r=a.replace(/\n{3,}/g,"\n\n");const o={A:"#9b59b6",L:"#3498db",C:"#f39c12",M:"#e74c3c"};let l={P:"#2ecc71",C:"#e74c3c",L:"#3498db",M:"#f1c40f"},d="[PCLM]";(function(e){return!!e&&e.startsWith("GCSE_")})(s)&&(l=o,d="[ALCM]|AO\\d+");let u=!1;const m=new RegExp("\\{\\{(".concat(d,"):\\s*([^}]+?)\\}\\}"),"g");r=r.replace(m,(e,s,t)=>(c.A.debug("Applying {{...}} format for type: ".concat(s)),u=!0,'<span style="background-color: '.concat(l[s],"33; border-bottom: 2px solid ").concat(l[s],';">').concat(t.trim(),"</span>")));const h=new RegExp("\\{(".concat(d,"):\\s*(.*?)\\}"),"g");return r=r.replace(h,(e,s,t)=>{c.A.debug("Applying {...} format for type: ".concat(s)),u=!0;const n=t.trim();return'<div class="feedback-block" style="margin: 5px 0; padding: 8px; background-color: '.concat(l[s],"22; border-left: 4px solid ").concat(l[s],';">').concat(i).concat(n,"</div>")}),c.A.debug("Processed text after regex:",r),n&&!u&&(c.A.debug("Handling as plain teacher text."),r='<div class="feedback-block teacher-plain">'.concat(i).concat(r,"</div>")),c.A.debug("Final returned HTML:",r),c.A.debug("--- processInlineFeedback END ---"),r}const h=e=>{let{API_BASE_URL:s,authToken:t,userData:h,isCreating:x,setIsCreating:p=()=>{},initialSubmissionData:b,onBack:g}=e;const{submissionId:f}=(0,a.g)(),{authToken:v,API_BASE_URL:j,userData:N}=(0,i.useContext)(r.c),w=(0,a.Zp)(),y=v||t,k=j||s||"https://bkcpyvatsu.eu-west-1.awsapprunner.com",A=N||h,[_,S]=(0,i.useState)(b||null),[C,E]=(0,i.useState)(!b&&!!f),[q,F]=(0,i.useState)(null),[B,T]=(0,i.useState)([]),[P,D]=(0,i.useState)([]),[R,I]=(0,i.useState)([]),[U,O]=(0,i.useState)(null),[L,W]=(0,i.useState)("listComprehensions"),[Z,M]=(0,i.useState)(!1),[z,J]=(0,i.useState)(null),[Q,H]=(0,i.useState)(null),[Y,V]=(0,i.useState)(""),[$,K]=(0,i.useState)("P"),[G,X]=(0,i.useState)(null),[ee,se]=(0,i.useState)(null),[te,ne]=(0,i.useState)(""),[ie,ae]=(0,i.useState)(!1),[re,oe]=(0,i.useState)(null),[le,ce]=(0,i.useState)(!1),[de,ue]=(0,i.useState)(null),[me,he]=(0,i.useState)(!1),xe="boolean"===typeof x?x:me,pe=e=>{"function"===typeof p&&"boolean"===typeof x?p(e):he(e)};(0,i.useEffect)(()=>{b&&(c.A.debug("Setting submission data from initial prop"),S(b),E(!1),F(null))},[b]),(0,i.useEffect)(()=>{if(b)return c.A.debug("Using initialSubmissionData, setting isLoading=false"),S(b),E(!1),void F(null);if(f){const e=async()=>{c.A.info("Attempting fetch for submission ID: ".concat(f)),F(null);try{const e=await fetch("".concat(k,"/api/submissions/").concat(f,"/details"),{headers:{Authorization:y.startsWith("Bearer ")?y:"Bearer ".concat(y)}});if(c.A.debug("Fetch response status for ".concat(f,": ").concat(e.status)),!e.ok){if(403===e.status)throw c.A.warn("Access Denied (403) fetching submission ".concat(f)),new Error("Access Denied. You may not have permission to view this submission.");const s=await e.json().catch(()=>({error:"Failed to parse error response"}));throw c.A.error("Failed to fetch submission ".concat(f,": ").concat(e.status," - ").concat(s.error||e.statusText)),new Error(s.error||"Failed to fetch submission: ".concat(e.statusText))}const s=await e.json();c.A.info("Successfully fetched submission details for ID: ".concat(f)),S(s)}catch(e){c.A.error("Caught error during fetchSubmission execution:",e),F(e.message||"An error occurred while fetching submission details.")}finally{c.A.debug("fetchSubmission finally block reached for ".concat(f,", setting isLoading=false")),E(!1)}};y&&k?(c.A.info("Auth token present, starting fetch for ".concat(f)),E(!0),e()):c.A.warn("Auth token not yet available for ".concat(f," fetch, waiting... Current token state: ").concat(y?"Exists":"Missing"))}else c.A.debug("No urlSubmissionId and no initialData, setting isLoading=false"),E(!1),F(null)},[f,b,y,k]),(0,i.useEffect)(()=>
1{if("teacher"===(null===A||void 0===A?void 0:A.role)&&!_&&!C&&"listComprehensions"===L){ae(!0),oe(null);(async()=>{try{const e=await fetch("".concat(k,"/api/comprehensions/teacher"),{headers:{Authorization:y.startsWith("Bearer ")?y:"Bearer ".concat(y)}});if(!e.ok)throw new Error("Failed to fetch teacher comprehensions data");const s=await e.json(),t=(s.teacher_comprehensions||[]).map(e=>(0,n.A)((0,n.A)({},e),{},{questions:"string"===typeof e.questions?JSON.parse(e.questions):e.questions})).sort((e,s)=>new Date(e.created_at)-new Date(s.created_at));T(t);const i=(s.public_comprehensions||[]).map(e=>(0,n.A)((0,n.A)({},e),{},{questions:"string"===typeof e.questions?JSON.parse(e.questions):e.questions})).sort((e,s)=>s.title.localeCompare(e.title));D(i)}catch(e){oe(e.message)}finally{ae(!1)}})()}},[k,y,null===A||void 0===A?void 0:A.role,_,C,L,xe]),(0,i.useEffect)(()=>{if("teacher"===(null===A||void 0===A?void 0:A.role)&&"listSubmissions"===L&&U){M(!0),J(null);(async()=>{try{const e=await fetch("".concat(k,"/api/comprehensions/").concat(U.id,"/submissions"),{headers:{Authorization:y.startsWith("Bearer ")?y:"Bearer ".concat(y)}});if(!e.ok){const s=await e.json();throw new Error(s.error||"Failed to fetch submissions")}const s=await e.json();I(s)}catch(e){J(e.message)}finally{M(!1)}})()}else I([])},[L,U,k,y,null===A||void 0===A?void 0:A.role]);const be=async()=>{if(!Q||!_)return;const{qIndex:e,currentType:s}=Q,t=_.id,i=$;if(!t||!Y.trim())return void c.A.error("Cannot save feedback - missing submission ID or text");X("saving");const a=Y.trim().replace(/\s*\[TEACHER\]\s*/g,"").trim(),r="{".concat(i,": ").concat(a,"} [TEACHER]");try{const s=await fetch("".concat(k,"/api/submissions/").concat(t,"/feedback/").concat(e),{method:"POST",headers:{Authorization:y.startsWith("Bearer ")?y:"Bearer ".concat(y),"Content-Type":"application/json"},body:JSON.stringify({feedback_content:r})});if(!s.ok){(0,d.u4)("teacher_save_feedback_error",{submission_id:_.id,question_index:e,error:"API Error"});const t=await s.json().catch(()=>({}));throw new Error(t.error||"Failed to save feedback")}S(s=>{if(!s)return null;const t=[...s.feedback||[]];for(;t.length<=e;)t.push(null);return t[e]=r,(0,n.A)((0,n.A)({},s),{},{feedback:t})}),(0,d.u4)("teacher_save_feedback_success",{submission_id:_.id,question_index:e}),ge(),setTimeout(()=>X(null),2e3)}catch(o){(0,d.u4)("teacher_save_feedback_error",{submission_id:_.id,question_index:e,error:o.message}),c.A.error("Error saving feedback:",o),X("error")}},ge=()=>{H(null),V(""),K("P"),X(null)},fe=e=>{"teacher"===(null===A||void 0===A?void 0:A.role)&&((0,d.u4)("teacher_view_comprehension_submissions",{comprehension_id:e.id,comprehension_title:e.title,submission_count:e.student_submission_count}),O(e),W("listSubmissions"),S(null))},ve=e=>{"teacher"===(null===A||void 0===A?void 0:A.role)&&((0,d.u4)("teacher_start_comprehension_answer",{comprehension_id:e.id,comprehension_title:e.title}),ue(e),ce(!0),S(null),W("teacherAnswering"))},je=()=>{O(null),I([]),W("listComprehensions"),S(null)},Ne=()=>{W("listSubmissions"),S(null)},we=(e,s,t)=>{se({type:e,index:s}),ne((null===t||void 0===t?void 0:t.toString())||"")},ye=async function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(null!==_&&void 0!==_&&_.id)if("teacher"===(null===A||void 0===A?void 0:A.role))try{const t=null!==s?"".concat(k,"/api/submissions/").concat(_.id,"/score/").concat(s):"".concat(k,"/api/submissions/").concat(_.id,"/score");if(!(await fetch(t,{method:"POST",headers:{"Content-Type":"application/json",Authorization:y.startsWith("Bearer ")?y:"Bearer ".concat(y)},body:JSON.stringify({score:parseFloat(e)})})).ok)throw new Error("Failed to update score");S(t=>{if(!t)return null;if(null!==s){const i=[...t.question_scores||[]];for(;i.length<=s;)i.push(null);return i[s]=parseFloat(e),(0,n.A)((0,n.A)({},t),{},{question_scores:i})}return(0,n.A)((0,n.A)({},t),{},{score:parseFloat(e)})}),se(null),ne(""),(0,d.u4)("teacher_save_score_success",{submission_id:_.id,question_index:s,score:e})}catch(q){(0,d.u4)("teacher_save_score_error",{submission_id:_.id,question_index:s,error:q.message}),c.A.error("Error saving score:",q),F("Failed to save score. Please try again.")}else c.A.warn("Attempt to save score by non-teacher user.")};if(C)return(0,u.jsxs)("div",{className:"loading-container",children:[(0,u.jsx)("div",{className:"loading-spinner"}),"Loading submission details..."]});if(q)return(0,u.jsxs)("div",{className:"error-message",children:["Error: ",q]});if(_){const e=_,s=Array.isArray(e.comprehension_questions)?e.comprehension_questions:[],t=Array.isArray(e.answers
1)?e.answers:[],n=Array.isArray(e.feedback)?e.feedback:[],i=Array.isArray(e.question_scores)?e.question_scores:[],a=e.comprehension_title||"Submission Result";let r;return r=b&&g?g:"teacher"===(null===A||void 0===A?void 0:A.role)&&"viewSubmissionDetail"===L?Ne:()=>w("/my-submissions"),(0,u.jsxs)("div",{className:"comprehension-submissions-view styled-results single-submission",children:[(0,u.jsx)("button",{onClick:r,className:"back-button",children:"\u2190 Back"}),(0,u.jsxs)("h2",{children:[a," - ","teacher"===(null===A||void 0===A?void 0:A.role)?"".concat(e.student_name||"Unknown Student","'s Result"):"Your Result"]}),(0,u.jsxs)("p",{className:"disclaimer-note",children:[(0,u.jsx)("strong",{children:"Note: Pulc does not offer a grade for comprehensions right now. Teachers can manually set scores for each student submission."})," "]}),(0,u.jsxs)("div",{className:"submissions-list",children:[" ",(0,u.jsxs)("div",{className:"submission-details-card",children:[(0,u.jsxs)("div",{className:"submission-meta",children:["teacher"===(null===A||void 0===A?void 0:A.role)&&(0,u.jsxs)("span",{className:"student-name",children:["Student: ",e.student_name||"Unknown Student"]}),(0,u.jsxs)("span",{className:"submission-date",children:["Submitted: ",e.submitted_at?new Date(e.submitted_at).toLocaleString():"Unknown Date"]})]}),(0,u.jsxs)("div",{className:"grade-container mini-grade-box",children:[(0,u.jsx)("h4",{className:"grade-title",children:"Overall Score"}),"teacher"===(null===A||void 0===A?void 0:A.role)&&"overall"===(null===ee||void 0===ee?void 0:ee.type)?(0,u.jsxs)("div",{className:"score-edit-container",children:[(0,u.jsx)("input",{type:"number",min:"0",value:te,onChange:e=>ne(e.target.value),className:"score-input"}),(0,u.jsxs)("div",{className:"score-edit-actions",children:[(0,u.jsx)("button",{onClick:()=>ye(te),className:"save-score",children:"Save"}),(0,u.jsx)("button",{onClick:()=>se(null),className:"cancel-score",children:"Cancel"})]})]}):(0,u.jsxs)("div",{className:"score-display",children:[(0,u.jsx)("p",{className:"final-score",children:null!==e.score?"".concat(e.score," marks"):"Not scored"}),"teacher"===(null===A||void 0===A?void 0:A.role)&&(0,u.jsx)("button",{onClick:()=>we("overall",null,e.score),className:"edit-score-button",title:"Edit overall score",children:"\u270f\ufe0f"})]})]}),(0,u.jsxs)("div",{className:"qna-feedback-container",children:[(0,u.jsx)("h3",{className:"analysis-title",children:"Answers & Feedback"}),s.map((e,s)=>{var a,r,o,l;const c=null!==(a=t[s])&&void 0!==a?a:"[No Answer Provided]",d=null!==(r=n[s])&&void 0!==r?r:null,h="string"===typeof d?d:null!==(o=null===d||void 0===d?void 0:d.feedback)&&void 0!==o?o:null,x="string"===typeof e?e:null!==(l=null===e||void 0===e?void 0:e.text)&&void 0!==l?l:"Unknown Question",p="object"===typeof e?null===e||void 0===e?void 0:e.points:null,b=0===(null===Q||void 0===Q?void 0:Q.subIndex)&&(null===Q||void 0===Q?void 0:Q.qIndex)===s,g="question"===(null===ee||void 0===ee?void 0:ee.type)&&(null===ee||void 0===ee?void 0:ee.index)===s,f=i[s];return(0,u.jsxs)("div",{className:"qna-item paragraph-container",children:[(0,u.jsxs)("div",{className:"question-header",children:[(0,u.jsxs)("div",{className:"question-display",children:[(0,u.jsxs)("strong",{children:["Q",s+1,": ",x]}),p&&(0,u.jsxs)("span",{className:"points-display",children:[" (",p," points)"]})]}),(0,u.jsx)("div",{className:"question-score",children:"teacher"===(null===A||void 0===A?void 0:A.role)&&g?(0,u.jsxs)("div",{className:"score-edit-container",children:[(0,u.jsx)("input",{type:"number",min:"0",value:te,onChange:e=>ne(e.target.value),className:"score-input"}),(0,u.jsxs)("div",{className:"score-edit-actions",children:[(0,u.jsx)("button",{onClick:()=>ye(te,s),className:"save-score",children:"Save"}),(0,u.jsx)("button",{onClick:()=>se(null),className:"cancel-score",children:"Cancel"})]})]}):(0,u.jsxs)("div",{className:"score-display",children:[(0,u.jsxs)("span",{children:["Score: ",null!==f?"".concat(f," marks"):"Not scored"]}),"teacher"===(null===A||void 0===A?void 0:A.role)&&(0,u.jsx)("button",{onClick:()=>we("question",s,f),className:"edit-score-button",title:"Edit question score",children:"\u270f\ufe0f"})]})})]}),(0,u.jsx)("div",{className:"answer-display paragraph-text",children:(0,u.jsx)("p",{children:c})}),(0,u.jsxs)("div",{className:"feedback-display feedback-column",children:[(0,u.jsx)("strong",{children:"Feedback:"}),b&&"teacher"===(null===A||void 0===A?void 0:A.role)?(0,u.jsxs)("div",{className:"feedback-edit-container",children:[(0,u.jsx)("textarea",{value:Y,onChange:e=>V(e.target.value),rows:3}),(0,u.jsx)("button",{onClick:be,children:"Save"}),(0,u.jsx)("button",{onClick:ge,children:"Cancel"}),"saving"===G&&(0,u.jsx)("span",{children:" Saving..."}),"error"===G&&(0,u.jsx)("span",{style:{color:"red"},children:" Error!"})]}):(0,u.jsxs)(u.Fragment,{children:[null!==h?(0,u.jsx)("div",{dangerouslySetInnerHTML:{__html:m(h,"comprehension")}}):(0,u.jsx)("p",{className:"no-feedback",children:"No feedback provided yet."}),"teacher"===(null===A||void 0===A?void 0:A.role)&&(0,u.jsx)("button",{className:"add-edit-feedback-button small",title:null!==h?"Edit Feedback":"Add Feedback",children:null!==h?"\u270f\ufe0f Edit":"+ Add Feedback"})]})]})]},s)})]})]})]})]})}if("teacher"===(null===A||void 0===A?void 0:A.role)){if(xe)return(0,u.jsxs)("div",{className:"comprehension-selection-view teacher-variant",children:[(0,u.jsx)("button",{onClick:()=>pe(!1),className:"back-button",children:"\u2190 Back to Comprehensions"}),(0,u.jsx)("h2",{children:"Create New Comprehension"}),(0,u.jsx)(l.A,{API_BASE_URL:k,authToken:y,userData:A,onBack:()=>pe(!1)})]});if("viewSubmission"===L&&_)return(0,u.jsxs)("div",{className:"comprehension-results max-w-5xl mx-auto p-4 md:p-6",children:[(0,u.jsx)("button",{onClick:Ne,className:"back-button inline-flex items-center text-sm text-slate-600 hover:text-slate-900 hover:underline mb-3",children:"\u2190 Back to Submissions"}),(0,u.jsx)("h2",{className:"text-2xl font-semibold tracking-tight text-slate-900 mb-4",children:"Submission Details"}
1),(0,u.jsxs)("div",{className:"submission-details rounded-lg border border-slate-200 bg-white p-4",children:[(0,u.jsxs)("p",{className:"text-slate-700",children:[(0,u.jsx)("strong",{children:"Student:"})," ",_.student_name||"Unknown Student"]}),(0,u.jsxs)("p",{className:"text-slate-700",children:[(0,u.jsx)("strong",{children:"Score:"})," ",null!==_.score?_.score:"Pending"]})]})]});if("teacherAnswering"===L&&le&&de)return(0,u.jsxs)("div",{className:"comprehension-results max-w-5xl mx-auto p-4 md:p-6",children:[(0,u.jsx)("button",{onClick:je,className:"back-button",children:"\u2190 Back to Comprehensions"}),(0,u.jsx)("h2",{children:"Answer Comprehension"}),(0,u.jsx)(o.default,{API_BASE_URL:k,authToken:y,userData:A,initialComprehension:de,onBack:je,onSubmissionComplete:e=>{ce(!1),ue(null),W("listComprehensions")}})]});if("listSubmissions"===L&&U)return(0,u.jsxs)("div",{className:"comprehension-submissions-view",children:[(0,u.jsx)("button",{onClick:je,className:"back-button",children:"\u2190 Back to Comprehensions"}),(0,u.jsxs)("h2",{children:[U.title," - Submissions"]}),Z&&(0,u.jsx)("div",{className:"loading",children:"Loading submissions..."}),z&&(0,u.jsxs)("div",{className:"error-message",children:["Error: ",z]}),!Z&&!z&&(0===R.length?(0,u.jsx)("p",{className:"no-submissions",children:"No submissions yet for this comprehension."}):(0,u.jsx)("div",{className:"submissions-grid",children:R.map(e=>(0,u.jsxs)("div",{className:"submission-tile",onClick:()=>(e=>{if("teacher"!==(null===A||void 0===A?void 0:A.role))return;(0,d.u4)("teacher_view_submission_detail",{submission_id:e.id,student_name:e.student_name||"Unknown Student"}),(async e=>{M(!0),F(null);try{const s=await fetch("".concat(k,"/api/submissions/").concat(e,"/details"),{headers:{Authorization:y.startsWith("Bearer ")?y:"Bearer ".concat(y)}});if(!s.ok){if(403===s.status)throw new Error("Access Denied.");throw new Error("Failed to fetch submission details")}const t=await s.json();S(t),W("viewSubmissionDetail")}catch(s){F(s.message)}finally{M(!1)}})(e.id)})(e),children:[(0,u.jsx)("h4",{children:e.student_name||"Unknown Student"}),(0,u.jsxs)("p",{children:["Submitted: ",new Date(e.submitted_at).toLocaleDateString()]}),null!==e.score&&(0,u.jsxs)("p",{className:"score",children:["Score: ",e.score," marks"]})]},e.id))}
1))]});if("listComprehensions"===L)return(0,u.jsxs)("div",{className:"comprehension-selection-view teacher-variant max-w-6xl mx-auto p-4 md:p-6",children:[!xe&&(0,u.jsx)("div",{className:"mb-4 flex justify-center",children:(0,u.jsx)("button",{onClick:()=>pe(!0),className:"inline-flex items-center gap-2 rounded-full bg-gradient-to-r from-emerald-500 to-green-600 px-5 py-2.5 text-sm font-semibold text-white shadow-sm hover:shadow-md hover:from-emerald-600 hover:to-green-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2",children:(0,u.jsx)("span",{children:"+ Create New Comprehension"})})}),(0,u.jsx)("h2",{className:"text-2xl font-semibold tracking-tight text-slate-900 mb-2",children:"My Comprehension Management"}),ie&&(0,u.jsx)("p",{className:"loading-message full-width text-slate-600",children:"Loading comprehensions..."}),re&&(0,u.jsxs)("p",{className:"error-message full-width rounded-md border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700",children:["Error: ",re]}),(0,u.jsxs)("div",{className:"comprehension-panel mt-4",children:[(0,u.jsx)("h3",{className:"text-lg font-medium text-slate-900 mb-2",children:"My Comprehensions"}),ie||0!==B.length?(0,u.jsx)("div",{className:"comprehension-grid grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:B.map(e=>(0,u.jsxs)("div",{className:"comprehension-card teacher-card rounded-lg border border-slate-200 bg-white p-4 shadow-sm",children:[(0,u.jsx)("h4",{className:"font-medium text-slate-900 mb-1",children:e.title}),(0,u.jsxs)("p",{className:"detail text-sm text-slate-600",children:["Created: ",new Date(e.created_at).toLocaleDateString()]}),(0,u.jsxs)("p",{className:"detail submissions text-sm text-slate-700 mt-2",children:["My Student Submissions: ",(0,u.jsx)("strong",{className:"font-semibold",children:e.student_submission_count})]}),(0,u.jsxs)("div",{className:"mt-3 flex gap-2",children:[(0,u.jsx)("button",{onClick:()=>fe(e),className:"action-button inline-flex items-center rounded-md bg-blue-600 px-3 py-1.5 text-xs font-medium text-white hover:bg-blue-700 disabled:opacity-60",disabled:0===e.student_submission_count,children:"View Submissions"}),(0,u.jsx)("button",{onClick:()=>ve(e),className:"action-button try-button inline-flex items-center rounded-md bg-slate-800 px-3 py-1.5 text-xs font-medium text-white hover:bg-slate-900",children:"Submit Answer"})]})]},e.id))}):(0,u.jsx)("p",{className:"text-slate-600",children:"You haven't created any comprehensions yet."})]}),(0,u.jsxs)("div",{className:"comprehension-panel mt-6",children:[(0,u.jsx)("h3",{className:"text-lg font-medium text-slate-900 mb-2",children:"Public Comprehensions (Others)"}),ie||0!==P.length?(0,u.jsx)("div",{className:"comprehension-grid grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:P.map(e=>(0,u.jsxs)("div",{className:"comprehension-card teacher-card rounded-lg border border-slate-200 bg-white p-4 shadow-sm",children:[(0,u.jsx)("h4",{className:"font-medium text-slate-900 mb-1",children:e.title}),(0,u.jsxs)("p",{className:"detail submissions text-sm text-slate-700",children:["My Student Submissions: ",(0,u.jsx)("strong",{className:"font-semibold",children:e.student_submission_count})]}),(0,u.jsxs)("div",{className:"mt-3 flex gap-2",children:[(0,u.jsx)("button",{onClick:()=>fe(e),className:"action-button inline-flex items-center rounded-md bg-blue-600 px-3 py-1.5 text-xs font-medium text-white hover:bg-blue-700 disabled:opacity-60",disabled:0===e.student_submission_count,children:"View Submissions"}),(0,u.jsx)("button",{onClick:()=>ve(e),className:"action-button try-button inline-flex items-center rounded-md bg-slate-800 px-3 py-1.5 text-xs font-medium text-white hover:bg-slate-900",children:"Try This"})]})]},e.id))}):(0,u.jsx)("p",{className:"text-slate-600",children:"No relevant public comprehensions found."})]})]})}return c.A.warn("ComprehensionResults rendered in an unexpected state",{isLoading:C,error:q,submissionData:_,userData:A,urlSubmissionId:f}),(0,u.jsx)("div",{className:"error-message",children:"Could not display comprehension results. Please navigate back or contact support."})}},6894:(e,s,t)=>{t.d(s,{A:()=>a});var n=t(5043),i=t(579);const a=function(e){let{API_BASE_URL:s,authToken:t,userData:a,onBack:r}=e;
1const[o,l]=(0,n.useState)(""),[c,d]=(0,n.useState)(""),[u,m]=(0,n.useState)([{text:"",points:10}]),[h,x]=(0,n.useState)(!1),[p,b]=(0,n.useState)(!1),[g,f]=(0,n.useState)(null),[v,j]=(0,n.useState)(!1),N=(e,s,t)=>{const n=[...u];n[e][s]=t,m(n)};return"teacher"!==(null===a||void 0===a?void 0:a.role)?(0,i.jsx)("div",{className:"comprehension-upload error-message max-w-2xl mx-auto mt-6 p-4 rounded-md bg-red-50 text-red-700 border border-red-200",children:"This feature is only available for teachers."}):(0,i.jsxs)("div",{className:"comprehension-upload max-w-3xl mx-auto p-6 md:p-8 bg-white rounded-xl shadow-sm border border-slate-200",children:[(0,i.jsx)("button",{className:"back-button inline-flex items-center text-sm text-slate-600 hover:text-slate-900 hover:underline mb-4",onClick:r,children:"\u2190 Back"}),(0,i.jsx)("h2",{className:"text-2xl font-semibold tracking-tight text-slate-900 mb-2",children:"Create New Comprehension"}),(0,i.jsx)("p",{className:"text-slate-500 mb-6",children:"Write your passage and add questions with point values. You can make it public later if needed."}),g&&(0,i.jsx)("div",{className:"error-message mb-4 rounded-md border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700",children:g}),v&&(0,i.jsx)("div",{className:"success-message mb-4 rounded-md border border-emerald-200 bg-emerald-50 px-3 py-2 text-sm text-emerald-700",children:"Comprehension saved successfully!"}),(0,i.jsxs)("form",{onSubmit:async e=>{e.preventDefault(),b(!0),f(null),j(!1);
1try{const e=await fetch("".concat(s,"/api/comprehensions"),{method:"POST",headers:{Authorization:t.startsWith("Bearer ")?t:"Bearer ".concat(t),"Content-Type":"application/json"},body:JSON.stringify({title:o,text:c,questions:u,isPublic:h,teacherId:a.id})});let n;const i=e.headers.get("content-type");if(!i||!i.includes("application/json")){const s=await e.text();throw new Error("Server returned non-JSON response: ".concat(s.substring(0,100),"..."))}if(n=await e.json(),!e.ok)throw new Error(n.message||n.error||"Failed to save comprehension");j(!0),"function"===typeof r?r():(l(""),d(""),m([{text:"",points:10}]),x(!1))}catch(n){console.error("Error saving comprehension:",n),f(n.message||"An unexpected error occurred while saving the comprehension")}finally{b(!1)}},className:"space-y-6",children:[(0,i.jsxs)("div",{className:"form-group",children:[(0,i.jsx)("label",{htmlFor:"title",className:"block text-sm font-medium text-slate-700 mb-1",children:"Title"}),(0,i.jsx)("input",{type:"text",id:"title",value:o,onChange:e=>l(e.target.value),required:!0,placeholder:"Enter a title for this comprehension",className:"w-full rounded-md border border-slate-300 bg-white px-3 py-2 text-sm shadow-sm placeholder:text-slate-400 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})]}),(0,i.jsxs)("div",{className:"form-group",children:[(0,i.jsx)("label",{htmlFor:"text",className:"block text-sm font-medium text-slate-700 mb-1",children:"Text"}),(0,i.jsx)("textarea",{id:"text",value:c,onChange:e=>d(e.target.value),required:!0,placeholder:"Enter the text for students to read",rows:10,className:"w-full rounded-md border border-slate-300 bg-white px-3 py-2 text-sm shadow-sm placeholder:text-slate-400 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})]}),(0,i.jsxs)("div",{className:"questions-section",children:[(0,i.jsx)("h3",{className:"text-lg font-medium text-slate-900 mb-3",children:"Questions"}),u.map((e,s)=>(0,i.jsxs)("div",{className:"question-group rounded-lg border border-slate-200 p-4 mb-3 bg-slate-50",children:[(0,i.jsxs)("div",{className:"question-header flex items-center justify-between mb-2",children:[(0,i.jsxs)("h4",{className:"font-medium text-slate-800",children:["Question ",s+1]}),u.length>1&&(0,i.jsx)("button",{type:"button",onClick:()=>(e=>{m(u.filter((s,t)=>t!==e))})(s),className:"remove-question text-sm text-red-600 hover:text-red-700",children:"Remove"})]}),(0,i.jsx)("textarea",{value:e.text,onChange:e=>N(s,"text",e.target.value),placeholder:"Enter question text",required:!0,className:"w-full rounded-md border border-slate-300 bg-white px-3 py-2 text-sm shadow-sm placeholder:text-slate-400 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 mb-3"}),(0,i.jsxs)("div",{className:"points-input flex items-center gap-2",children:[(0,i.jsx)("label",{className:"text-sm text-slate-700",children:"Points"}),(0,i.jsx)("input",{type:"number",min:"1",max:"100",value:Number.isFinite(e.points)?e.points:"",onChange:e=>{const t=e.target.value,n=""===t?"":Number(t);N(s,"points",""===n?1:Number.isFinite(n)?n:1)},required:!0,className:"w-24 rounded-md border border-slate-300 bg-white px-3 py-2 text-sm shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})]})]},s)),(0,i.jsx)("button",{type:"button",onClick:()=>{m([...u,{text:"",points:10}])},className:"add-question inline-flex items-center rounded-md bg-slate-800 px-3 py-2 text-sm font-medium text-white hover:bg-slate-900",children:"Add Question"})]}),"cillian"===(null===a||void 0===a?void 0:a.username)&&(0,i.jsx)("div",{className:"form-group checkbox",children:(0,i.jsxs)("label",{className:"inline-flex items-center gap-2 text-sm text-slate-700",children:[(0,i.jsx)("input",{type:"checkbox",checked:h,onChange:e=>x(e.target.checked),className:"h-4 w-4 rounded border-slate-300 text-blue-600 focus:ring-blue-500"}),"Make this comprehension visible to all students"]})}),(0,i.jsx)("button",{type:"submit",className:"submit-button inline-flex items-center rounded-md bg-blue-600 px-4 py-2 text-sm font-medium text-white hover:bg-blue-700 disabled:opacity-60",disabled:p,children:p?"Saving...":"Save Comprehension"})]})]})}},9879:(e,s,t)=>{t.r(s),t.d(s,{default:()=>j});var n=t(9379),i=t(5043),a=(t(725),t(1097)),r=(t(3512),t(1429)),o=t(3364),l=t(1680),c=t(8326),d=t(5347),u=t(5469),m=t(614),h=t(797),x=t(1089),p=t(5452),b=t(1146),g=t(8117),f=t(4662),v=t(579);const j=function(e){let{API_BASE_URL:s,authToken:t,userData:j,onSubmit:N,initialComprehension:w,onBack:y,onSubmissionComplete:k}=e;const[A,_]=(0,i.useState)([]),[S,C]=(0,i.useState)(w||null),[E,q]=(0,i.useState)({}),[F,B]=(0,i.useState)(!w),[T,P]=(0,i.useState)(null),[D,R]=(0,i.useState)(!1),[I,U]=(0,i.useState)({}),[O,L]=(0,i.useState)({}),[W,Z]=(0,i.useState)(null),[M,z]=(0,i.useState)(null),[J,Q]=(0,i.useState)(""),[H,Y]=(0,i.useState)(!1),[V,$]=(0,i.useState)(!1),K="UK"===(null===j||void 0===j?void 0:j.country);if(p.A.debug("ComprehensionView - isUKUser:",K,"based on country:",null===j||void 0===j?void 0:j.country),(0,i.useEffect)(()=>
1{if(!w&&"teacher"!==(null===j||void 0===j?void 0:j.role)){(async()=>{B(!0),P(null);try{const e=await(0,a.Ud)("".concat(s,"/api/comprehensions/available"));if(!e.ok){const s=await e.json();throw new Error(s.error||"Failed to fetch comprehensions")}{const s=await e.json(),t=Array.isArray(s)?s:(null===s||void 0===s?void 0:s.comprehensions)||[];_(t)}}catch(e){p.A.error("Error fetching comprehensions:",e),P(e.message||"Failed to load comprehensions")}finally{B(!1)}})()}else B(!1)},[s,t,null===j||void 0===j?void 0:j.role,w]),(0,i.useEffect)(()=>{if(w&&w.questions){const e={};w.questions.forEach((s,t)=>{e[t]=""}),q(e)}},[w]),"teacher"===(null===j||void 0===j?void 0:j.role)&&!w)return p.A.warn("ComprehensionView rendered for teacher without initialComprehension data."),null;const G=e=>{(0,f.u4)("comprehension_selected",{comprehension_id:e.id,comprehension_title:e.title,is_public:e.isPublic});const s=(0,n.A)((0,n.A)({},e),{},{questions:"string"===typeof e.questions?JSON.parse(e.questions):e.questions});C(s);const t={};s.questions.forEach((e,s)=>{t[s]=""}),q(t)},X=async(e,t)=>{try{const i=await(0,a.Ud)("".concat(s,"/api/ocr-status/").concat(e));if(!i.ok){const e=await i.json();throw new Error(e.error||"Failed to check OCR status")}{const s=await i.json();if("SUCCESS"===s.state)q(e=>(0,n.A)((0,n.A)({},e),{},{[t]:s.result.response})),L(e=>{const s=(0,n.A)({},e);return delete s[t],s});else{if("FAILURE"===s.state)throw new Error("OCR processing failed");setTimeout(()=>X(e,t),2e3)}}}catch(i){p.A.error("Error polling OCR status:",i),P("Failed to process image. Please try again or enter text manually."),L(e=>{const s=(0,n.A)({},e);return delete s[t],s})}},ee=async e=>{try{const n=await(0,a.Ud)("".concat(s,"/api/submissions/").concat(e,"/status"));if(!n.ok){const e=await n.json();throw new Error(e.error||"Failed to check submission status")}if("completed"===(await n.json()).status){p.A.info("Status is completed, fetching full details...");try{const t=await(0,a.Ud)("".concat(s,"/api/submissions/").concat(e,"/details"));if(!t.ok){const e=await t.json();throw new Error(e.error||"Failed to fetch submission details")}{const e=await t.json();z(e),B(!1),R(!0),Q(""),k&&(p.A.info("Polling complete, calling onSubmissionComplete with full details:",e),k(e))}}catch(t){p.A.error("Error fetching submission details:",t),P("Failed to load submission results."),B(!1),Q("")}}else Q("Grading your answers..."),setTimeout(()=>ee(e),2e3)}catch(n){p.A.error("Error polling submission status:",n),P("Failed to check submission status. Please try again."),B(!1),Q("")}};if(M&&"complete"!==M&&"error"!==M)return(0,v.jsx)(b.A,{isUKUser:K});if(F&&!S)return(0,v.jsx)("div",{className:"comprehension-view loading-view",children:(0,v.jsx)(g.A,{})});if(T&&!S)return(0,v.jsx)("div",{className:"error-message",children:T});const se=A.filter(e=>e.isPublic).sort((e,s)=>s.title.localeCompare(e.title)),te=A.filter(e=>!e.isPublic).sort((e,s)=>new Date(e.createdAt)-new Date(s.createdAt));return S?(0,v.jsxs)("div",{className:"w-full max-w-4xl mx-auto p-6",children:[F&&(0,v.jsx)(b.A,{}),(0,v.jsxs)("div",{className:"space-y-6",children:[(0,v.jsx)("div",{className:"flex items-center space-x-4",children:(0,v.jsxs)(r.$,{variant:"ghost",onClick:()=>{y?y():(C(null),P(null),R(!1),U({}),q({}),Z(null),z(null),Q(""))},className:"flex items-center space-x-2",children:[(0,v.jsx)(u.A,{className:"w-4 h-4"}),(0,v.jsx)("span",{children:"Back to Comprehensions"})]})}),(0,v.jsxs)("div",{className:"text-center space-y-2",children:[(0,v.jsx)("h1",{className:"text-3xl font-bold text-foreground",children:S.title}),(0,v.jsx)("p",{className:"text-muted-foreground",children:"Read the passage and answer the questions below"})]}),T&&(0,v.jsx)(o.Zp,{className:"border-red-200 bg-red-50",children:(0,v.jsxs)(o.Wu,{className:"p-4",children:[(0,v.jsxs)("div",{className:"flex items-center space-x-2 text-red-800",children:[(0,v.jsx)(m.A,{className:"w-5 h-5"}),(0,v.jsx)("p",{className:"font-medium",children:"Error"})]}),(0,v.jsx)("p",{className:"text-red-700 mt-1",children:T})]})}),D&&M&&(0,v.jsx)(o.Zp,{className:"border-green-200 bg-green-50",children:(0,v.jsxs)(o.Wu,{className:"p-4",children:[(0,v.jsxs)("div",{className:"flex items-center space-x-2 text-green-800",children:[(0,v.jsx)(d.A,{className:"w-5 h-5"}),(0,v.jsx)("p",{className:"font-medium",children:"Submission Complete!"})]}),(0,v.jsxs)("p",{className:"text-green-700 mt-1",children:["Your score: ",M.score]})]})}),J&&(0,v.jsx)(o.Zp,{className:"border-blue-200 bg-blue-50",children:(0,v.jsx)(o.Wu,{className:"p-4",children:(0,v.jsxs)("div",{className:"flex items-center space-x-3",children:[(0,v.jsx)("div",{className:"animate-spin rounded-full h-5 w-5 border-b-2 border-blue-600"}),(0,v.jsx)("p",{className:"text-blue-800 font-medium",children:J})]})})}),(0,v.jsxs)(o.Zp,{children:[(0,v.jsx)(o.aR,{children:(0,v.jsxs)(o.ZB,{className:"flex items-center space-x-2",children:[(0,v.jsx)(l.A,{className:"w-5 h-5"}),(0,v.jsx)("span",{children:"Reading Passage"})]})}),(0,v.jsx)(o.Wu,{children:(0,v.jsx)("div",{className:"prose max-w-none text-foreground leading-relaxed space-y-4",children:S.text.split("\n").filter(e=>e.trim()).map((e,s)=>(0,v.jsx)("p",{className:"text-base leading-7",children:e.trim()},s))})})]}),(0,v.jsxs)(o.Zp,{children:[(0,v.jsxs)(o.aR,{children:[(0,v.jsx)(o.ZB,{children:"Questions"}),(0,v.jsx)(o.BT,{children:"Answer all questions based on the reading passage above"})]}),(0,v.jsx)(o.Wu,{children:(0,v.jsxs)("form",{onSubmit:async e=>{e.preventDefault(),(0,f.u4)("comprehension_submit_started",{comprehension_id:S.id,c
1omprehension_title:S.title,question_count:Object.keys(E).length}),B(!0),P(null),R(!1),Q("Submitting your answers...");try{const e=await(0,a.Ud)("".concat(s,"/api/comprehensions/").concat(S.id,"/submit"),{method:"POST",body:JSON.stringify({answers:Object.values(E)})});if(!e.ok){const s=await e.json();throw(0,f.u4)("comprehension_submit_error",{comprehension_id:S.id,error:s.error||"API Error",status:e.status}),new Error("Failed to submit answers")}{const s=await e.json();if(!s.submission_id)throw new Error("No submission ID received");(0,f.u4)("comprehension_submit_success",{comprehension_id:S.id,submission_id:s.submission_id}),Z(s.submission_id),ee(s.submission_id)}}catch(t){(0,f.u4)("comprehension_submit_error",{comprehension_id:S.id,error:t.message}),P(t.message),B(!1),Q("")}},className:"space-y-6",children:[S.questions.map((e,t)=>(0,v.jsxs)(o.Zp,{className:"border-muted",children:[(0,v.jsxs)(o.aR,{className:"pb-4",children:[(0,v.jsxs)("div",{className:"flex items-center justify-between",children:[(0,v.jsxs)(o.ZB,{className:"text-lg",children:["Question ",t+1]}),(0,v.jsxs)("span",{className:"px-3 py-1 bg-blue-100 text-blue-700 rounded-full text-sm font-medium",children:[e.points," points"]})]}),(0,v.jsx)(o.BT,{className:"text-base font-medium text-foreground",children:e.text})]}),(0,v.jsx)(o.Wu,{children:(0,v.jsxs)("div",{className:"space-y-4",children:[(0,v.jsx)("textarea",{value:E[t]||"",onChange:e=>{return s=t,i=e.target.value,void q(e=>(0,n.A)((0,n.A)({},e),{},{[s]:i}));var s,i},placeholder:"Write your answer here...",className:"w-full min-h-32 p-4 border border-muted rounded-lg resize-vertical focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all",disabled:O[t]}),(0,v.jsxs)("div",{className:"space-y-3",children:[(0,v.jsxs)("div",{className:"flex items-center space-x-3",children:[(0,v.jsx)("input",{type:"file",accept:"image/*",onChange:e=>(async(e,t)=>{const i=t.target.files[0];if(i){(0,f.u4)("comprehension_image_upload_started",{question_index:e,file_type:i.type});try{L(s=>(0,n.A)((0,n.A)({},s),{},{[e]:!0})),U(s=>(0,n.A)((0,n.A)({},s),{},{[e]:i}));const t=new FormData;t.append("images",i);const r=await(0,a.Ud)("".concat(s,"/api/ocr-images"),{method:"POST",body:t});if(!r.ok){const e=await r.json();throw new Error(e.error||"Failed to process image")}{const s=await r.json();(0,f.u4)("comprehension_image_upload_success",{question_index:e,task_id:s.task_id}),s.task_id&&X(s.task_id,e)}}catch(r){(0,f.u4)("comprehension_image_upload_error",{question_index:e,error:r.message}),p.A.error("Error processing image:",r),P("Failed to process image. Please try again or enter text manually."),L(s=>{const t=(0,n.A)({},s);return delete t[e],t})}}})(t,e),id:"image-upload-".concat(t),className:"hidden",disabled:O[t]}),(0,v.jsxs)(r.$,{type:"button",variant:"outline",onClick:()=>document.getElementById("image-upload-".concat(t)).click(),disabled:O[t],className:"flex items-center space-x-2",children:[(0,v.jsx)(h.A,{className:"w-4 h-4"}),(0,v.jsx)("span",{children:"Upload Image"})]}),(0,v.jsx)("span",{className:"text-sm text-muted-foreground",children:"or type your answer above"})]}),I[t]&&(0,v.jsx)(o.Zp,{className:"p-4",children:(0,v.jsxs)("div",{className:"flex items-start space-x-4",children:[(0,v.jsx)("img",{src:URL.createObjectURL(I[t]),alt:"Preview for question ".concat(t+1),className:"w-32 h-32 object-cover rounded-lg border"}),(0,v.jsxs)("div",{className:"flex-1",children:[(0,v.jsx)("p",{className:"text-sm font-medium mb-2",children:"Image uploaded"}),(0,v.jsxs)(r.$,{type:"button",variant:"outline",size:"sm",onClick:()=>{return e=t,void U(s=>{const t=(0,n.A)({},s);return delete t[e],t});var e},disabled:O[t],className:"flex items-center space-x-1",children:[(0,v.jsx)(m.A,{className:"w-3 h-3"}),(0,v.jsx)("span",{children:"Remove"})]})]})]})}),O[t]&&(0,v.jsx)(o.Zp,{className:"border-blue-200 bg-blue-50",children:(0,v.jsx)(o.Wu,{className:"p-4",children:(0,v.jsxs)("div",{className:"flex items-center space-x-3",children:[(0,v.jsx)("div",{className:"animate-spin rounded-full h-5 w-5 border-b-2 border-blue-600"}),(0,v.jsx)("span",{className:"text-blue-800 font-medium",children:"Processing image..."})]})})})]})]})})]},t)),(0,v.jsx)("div",{className:"flex justify-center pt-6",children:(0,v.jsx)(r.$,{type:"submit",size:"lg",disabled:F||Object.keys(O).length>0,className:"px-8 py-3 text-lg",children:J||(Object.keys(O).length>0?"Processing Images...":"Submit Answers")})})]})})]})]})]}):(0,v.jsx)("div",{className:"w-full max-w-6xl mx-auto p-6",children:(0,v.jsxs)("div",{className:"space-y-8",children:[(0,v.jsxs)("div",{className:"text-center space-y-4",children:[(0,v.jsx)("h1",{className:"text-3xl font-bold text-foreground",children:"Reading Comprehension"}),(0,v.jsx)("p",{className:"text-muted-foreground text-lg",children:"Choose a comprehension exercise to test your reading skills"})]}),(0,v.jsxs)(o.Zp,{className:"overflow-hidden",children:[(0,v.jsx)(o.aR,{className:"cursor-pointer hover:bg-muted/50 transition-colors",onClick:()=>Y(!H),children:(0,v.jsxs)("div",{className:"flex items-center justify-between",children:[(0,v.jsxs)("div",{className:"flex items-center space-x-3",children:[(0,v.jsx)("div",{className:"w-12 h-12 rounded-xl bg-gradient-to-br from-blue-500 to-blue-600 flex items-center justify-center text-white",children:(0,v.jsx)(l.A,{className:"w-6 h-6"})}),(0,v.jsxs)("div",{children:[(0,v.jsx)(o.ZB,{className:"text-xl",children:"Past Exams"}),(0,v.jsx)(o.BT,{children:"Practice with previous examination papers"})]})]}),(0,v.jsx)(c.A,{className:(0,x.cn)("w-5 h-5 transition-transform duration-200",H?"":"rotate-90")})]})}),!H&&(0,v.jsx)(o.Wu,{className:"pt-0",children:0===se.length?(0,v.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,v.jsx)(l.A,{className:"w-12 h-12 mx-auto mb-4 opacity-50"}),(0,v.jsx)("p",{children:"No past exams available at the moment."})]}):(0,v.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:se.map(e=>(0,v.jsx)(o.Zp,{className:"group cursor-pointer transition-all duration-300 hover:shadow-lg hover:scale-105 border-0 overflow-hidden",onClick:()=>G(e),children:(0,v.jsxs)("div",{className:"h-full bg-gradient-to-br from-blue-500 to-blue-600 text-white relative",children:[(0,v.jsxs)(o.Wu,{className:"p-6 text-center space-y-4 relative z-10",children:[(0,v.jsx)("div",{className:"w-16 h-16 mx-auto rounded-2xl bg-white/20 backdrop-blur-sm flex items-center justify-center text-2xl border border-white/30 group-hover:bg-white/30 transition-all duration-300",children:"\ud83d\udcd6"}),(0,v.jsxs)("div",{children:[(0,v.jsx)("h3",{className:"font-semibold text-white leading-tight mb-2",children:e.title}),(0,v.jsx)("p",{className:"text-white/80 text-sm mb-4",children:"Public Exam"}),(0,v.jsxs)("div",{className:"flex items-center justify-center space-x-2 text-white/80 group-hover:text-white transition-colors",children:[(0,v.jsx)("span",{className:"text-sm",children:"Start Reading"}),(0,v.jsx)(c.A,{className:"w-4 h-4 group-hover:translate-x-1 transition-transform duration-200"})]})]})]}),(0,v.jsx)("div",{className:"absolute top-3 right-3 w-12 h-12 rounded-full bg-white/10 -translate-y-6 translate-x-6"}),(0,v.jsx)("div",{className:"absolute bottom-3 left-3 w-8 h-8 rounded-full bg-white/10 translate-y-4 -translate-x-4"}),(0,v.jsx)("div",{className:"absolute inset-0 bg-black/0 group-hover:bg-black/10 transition-all duration-300"})]})},e.id))})})]}),(0,v.jsxs)(o.Zp,{className:"overflow-hidden",children:[(0,v.jsx)(o.aR,{className:"cursor-pointer hover:bg-muted/50 transition-colors",onClick:()=>$(!V),children:(0,v.jsxs)("div",{className:"flex items-center justify-between",children:[(0,v.jsxs)("div",{className:"flex items-center space-x-3",children:[(0,v.jsx)("div",{className:"w-12 h-12 rounded-xl bg-gradient-to-br from-green-500 to-green-600 flex items-center justify-center text-white",children:(0,v.jsx)(d.A,{className:"w-6 h-6"})}),(0,v.jsxs)("div",{children:[(0,v.jsx)(o.ZB,{className:"text-xl",children:"From My Teacher"}),(0,v.jsx)(o.BT,{children:"Assignments created by your teacher"})]})]}),(0,v.jsx)(c.A,{className:(0,x.cn)("w-5 h-5 transition-transform duration-200",V?"":"rotate-90")})]})}),!V&&(0,v.jsx)(o.Wu,{className:"pt-0",children:0===te.length?(0,v.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,v.jsx)(d.A,{className:"w-12 h-12 mx-auto mb-4 opacity-50"}),(0,v.jsx)("p",{children:"No assignments from your teacher yet."})]}):(0,v.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:te.map(e=>(0,v.jsx)(o.Zp,{className:"group cursor-pointer transition-all duration-300 hover:shadow-lg hover:scale-105 border-0 overflow-hidden",onClick:()=>G(e),children:(0,v.jsxs)("div",{className:"h-full bg-gradient-to-br from-green-500 to-green-600 text-white relative",children:[(0,v.jsxs)(o.Wu,{className:"p-6 text-center space-y-4 relative z-10",children:[(0,v.jsx)("div",{className:"w-16 h-16 mx-auto rounded-2xl bg-white/20 backdrop-blur-sm flex items-center justify-center text-2xl border border-white/30 group-hover:bg-white/30 transition-all duration-300",children:"\ud83c\udf93"}),(0,v.jsxs)("div",{children:[(0,v.jsx)("h3",{className:"font-semibold text-white leading-tight mb-2",children:e.title}),(0,v.jsxs)("p",{className:"text-white/80 text-sm mb-4",children:["By: ",e.teacherName]}),(0,v.jsxs)("div",{className:"flex items-center justify-center space-x-2 text-white/80 group-hover:text-white transition-colors",children:[(0,v.jsx)("span",{className:"text-sm",children:"Start Assignment"}),(0,v.jsx)(c.A,{className:"w-4 h-4 group-hover:translate-x-1 transition-transform duration-200"})]})]})]}),(0,v.jsx)("div",{className:"absolute top-3 right-3 w-12 h-12 rounded-full bg-white/10 -translate-y-6 translate-x-6"}),(0,v.jsx)("div",{className:"absolute bottom-3 left-3 w-8 h-8 rounded-full bg-white/10 translate-y-4 -translate-x-4"}),(0,v.jsx)("div",{className:"absolute inset-0 bg-black/0 group-hover:bg-black/10 transition-all duration-300"})]})},e.id))})})]})]})})}}}]); 2//# sourceMappingURL=4168.a499cb17.chunk.js.map
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.