PageSourceSearch

https://www.getsyllavo.com/assets/PlanDetail-Zn4Xb1xW.js

js getsyllavo.com collected 2026-10-02 01:31:24 UTC 7,360 bytes, 1 lines download raw bytes

1import{j as e,h as j,B as c,f as g,e as w,S as l}from"./index-M0tRxxsp.js";import{B as i}from"./badge-JKyFBreg.js";import{C as x,a as f}from"./card-Cy23akvE.js";import{E as u}from"./empty-state-2q5teHwP.js";import{E as N}from"./error-state-BqCmJVXp.js";import"./index.esm-CFqn1pp7.js";import{u as y}from"./usePlanSession-BBRNk0kU.js";import{u as v}from"./useDocumentTitle-CmeMPrRl.js";import{a as b}from"./time-vzfztzdR.js";import{C as h}from"./calendar-clock-C-BkTR_P.js";import{T as k}from"./trending-up-SRw2_IJY.js";import{I as C}from"./InviteCourseCta-CM6suEmk.js";import{M as S}from"./MinutesInput-DYiO9lyr.js";import{P as $}from"./play-BXok1MAW.js";import{L as P}from"./list-checks-CqzNQIzP.js";import{C as E}from"./circle-check-C7RR3DHm.js";import"./useFirstRun-Be6EZFJS.js";import"./useInvites-Petebij5.js";import"./check-D5tU9ax3.js";import"./copy-sKQf5MQG.js";import"./link-2-BVX7rfsS.js";import"./clock-BWqIV31M.js";function M(s){if(!s)return null;switch(s.kind){case"exam_passed":return"This exam date has passed. The remaining sessions are still yours to finish.";case"increase_daily_minutes":return s.perDayMinutes?`Finishing everything means about ${s.perDayMinutes} min a day until the exam.`:null;case"drop_sessions":return s.keepSessions!=null&&s.dropSessions!=null?`About ${s.keepSessions} of your sessions fit before the exam. Dropping ${s.dropSessions} keeps the rest realistic.`:null;default:return null}}function D({plan:s,examDate:n,onCatchUp:a}){const r=Math.min(100,Math.round((Number.isFinite(s.pressure)?s.pressure:0)*100)),o=s.estimated?"roughly ":"",t=M(s.catchUpOption);return e.jsx(x,{children:e.jsxs(f,{className:"flex flex-col gap-3 p-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[e.jsxs("p",{className:"inline-flex items-center gap-1.5 text-sm font-medium text-foreground",children:[e.jsx(h,{className:"h-4 w-4 text-muted-foreground","aria-hidden":"true"}),s.daysLeft===0?"Exam day":`${s.daysLeft} day${s.daysLeft===1?"":"s"} to the exam`,n?e.jsxs("span",{className:"font-normal text-muted-foreground",children:["· ",new Date(n).toLocaleDateString()]}):null]}),e.jsx(i,{variant:s.onTrack?"success":"warning",children:s.onTrack?"On track":"Behind"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s.sessionsLeft===0?"Every session is done.":`${s.sessionsLeft} session${s.sessionsLeft===1?"":"s"} left · ${o}${s.requiredMinutes} min of work in ${s.availableMinutes} min of study time.`}),e.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-muted",role:"img","aria-label":`Remaining work uses ${r}% of the study time before the exam`,children:e.jsx("div",{className:j("h-full rounded-full transition-[width] duration-300 motion-reduce:transition-none",s.onTrack?"bg-success":"bg-warning"),style:{width:`${r}%`}})}),!s.onTrack&&t?e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 border-t border-border pt-3",children:[e.jsx("p",{className:"min-w-0 flex-1 text-sm text-muted-foreground",children:t}),a?e.jsxs(c,{type:"button",variant:"secondary",size:"sm",className:"min-h-[44px]",onClick:a,children:[e.jsx(k,{className:"mr-1.5 h-3.5 w-3.5","aria-hidden":"true"}),"Catch up"]}):null]}):null]})})}function I(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}const m="plan-quick-session",p=new Set(["ready","in_progress","completed"]);function T(s){const n=s.sessions.find(a=>a.status==="in_progress");return n||(s.sessions.find(a=>p.has(a.status)&&a.status!=="completed")??null)}function L(s){return s==="completed"?e.jsx(i,{variant:"success",children:"Done"}):s==="in_progress"?e.jsx(i,{variant:"info",children:"In progress"}):s==="ready"?e.jsx(i,{variant:"neutral",children:"Ready"}):s==="generating"?e.jsx(i,{variant:"warning",children:"Preparing"}):s==="skipped"?e.jsx(i,{variant:"success",children:"Already known"}):e.jsx(i,{variant:"neutral",children:"Not prepared"})}function te(){const{planId:s}=g(),n=w(),a=y(s);if(v(a.data?a.data.name:"Study plan"),a.isPending)return e.jsxs("div",{className:"mx-auto flex w-full max-w-2xl flex-col gap-4 p-4",children:[e.jsx(l,{className:"h-6 w-56"}),e.jsx(l,{className:"h-4 w-40"}),e.jsx(l,{className:"h-14 w-full"}),e.jsx(l,{className:"h-20 w-full"}),e.jsx(l,{className:"h-20 w-full"})]});if(a.isError)return e.jsx("div",{className:"mx-auto w-full max-w-2xl p-4",children:e.jsx(N,{title:"We couldn't load this plan",error:a.error,onRetry:()=>void a.refetch()})});if(!a.data)return e.jsx("div",{className:"mx-auto w-full max-w-2xl p-4",children:e.jsx(u,{title:"Plan not found",description:"This plan may have been removed."})});const r=T(a.data),o=a.data.sessions;return e.jsxs("div",{className:"mx-auto flex w-full max-w-2xl flex-col gap-5 p-4",children:[e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("h1",{className:"text-xl font-semibold text-foreground",children:a.data.name}),a.data.goal?e.jsx("p",{className:"text-sm text-muted-foreground",children:a.data.goal}
1):null,a.data.examDate&&!a.data.examPlan?e.jsxs("p",{className:"inline-flex items-center gap-1.5 text-sm text-muted-foreground",children:[e.jsx(h,{className:"h-3.5 w-3.5","aria-hidden":"true"}),"Exam ",new Date(a.data.examDate).toLocaleDateString()]}):null]}),a.data.examPlan?e.jsx(D,{plan:a.data.examPlan,examDate:a.data.examDate,onCatchUp:()=>{var t,d;(t=document.getElementById(m))==null||t.scrollIntoView({behavior:I()?"auto":"smooth",block:"center"}),(d=document.querySelector(`#${m} input[type="number"]`))==null||d.focus()}}):null,a.data.examPlan&&a.data.courseId?e.jsx(C,{courseId:a.data.courseId,variant:"inline"}):null,a.data.courseId?e.jsx("div",{id:m,children:e.jsx(S,{courseId:a.data.courseId,layout:"block"})}):null,r?e.jsxs(c,{className:"min-h-[48px] w-full",onClick:()=>n(`/plans/${a.data.id}/sessions/${r.id}`),children:[e.jsx($,{className:"mr-2 h-4 w-4","aria-hidden":"true"}),r.status==="in_progress"?`Resume session ${r.sequence}`:`Start session ${r.sequence}`]}):null,o.length===0?e.jsx(u,{icon:e.jsx(P,{className:"mx-auto h-6 w-6 text-muted-foreground","aria-hidden":"true"}),title:"This plan has no sessions yet",description:"Sessions appear here once the plan has been built from your materials."}):e.jsx("ul",{className:"flex flex-col gap-2",children:o.map(t=>{const d=p.has(t.status);return e.jsx("li",{children:e.jsx(x,{children:e.jsxs(f,{className:"flex items-center justify-between gap-3 p-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"text-sm font-medium text-foreground",children:["Session ",t.sequence]}),L(t.status)]}),e.jsx("p",{className:"mt-0.5 truncate text-sm text-muted-foreground",children:t.title}),t.plannedMinutes?e.jsxs("p",{className:"text-xs text-muted-foreground",children:["about ",b(t.plannedMinutes)]}):null]}),d?e.jsx(c,{variant:"secondary",size:"sm",className:"shrink-0",onClick:()=>n(`/plans/${a.data.id}/sessions/${t.id}`),children:t.status==="completed"?e.jsxs(e.Fragment,{children:[e.jsx(E,{className:"mr-1.5 h-3.5 w-3.5","aria-hidden":"true"}),"Summary"]}):t.status==="in_progress"?"Resume":"Start"}):e.jsx(c,{variant:"ghost",size:"sm",className:"shrink-0",disabled:!0,children:"Not ready"})]})})},t.id)})})]})}export{te as default,T as nextActionSession};

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.