1import{p as C,r as m,j as e}from"./vendor-react-BD_epXGo.js";import{Q as O,g as z,T as U}from"./index-BM3TWaLK.js";import{B as d,P as B}from"./switch-Cz9yV3hT.js";import{u as Q}from"./i18n-c1FeT3Mo.js";import{aE as T,aF as P,aG as A,aH as q,aI as M,aJ as H,aK as J,aL as _,aM as $}from"./vendor-icons-CfCU8ITX.js";import"./vendor-parsing-CtQ6HmbH.js";import"./vendor-tanstack-CtE3CGcS.js";import"./vendor-validation-C7IuoilE.js";import"./vendor-forms-h8ybKdsJ.js";import"./vendor-ui-CWt54UKW.js";import"./bundle-mjs-CtRjYbyI.js";const G=({onRestore:j,onClear:h,storageKey:a="questionnaire-storage",showRestorePrompt:w=!0})=>{const{t:s}=C(),{formatDateTime:f}=Q(),[x,b]=m.useState(!1),[n,o]=m.useState(null),[c,u]=m.useState(!1),[g,N]=m.useState(!1);m.useEffect(()=>{y()},[a]);const y=()=>{try{const r=localStorage.getItem(a);if(r){const t=JSON.parse(r).state;t&&t.currentPhase>1&&(b(!0),o({phase:t.currentPhase||1,percentage:t.completionPercentage||0,lastSaved:t.lastSaved||s("questionnaire.shared.localProgress.unknown")}),w&&t.currentPhase>1&&u(!0))}}catch(r){console.error("Failed to check local progress:",r)}},p=()=>{u(!1),j==null||j()},E=()=>{u(!1)},L=()=>{try{const r=localStorage.getItem(a);if(!r){alert(s("questionnaire.shared.localProgress.noProgressToExport"));return}const l=new Blob([r],{type:"application/json"}),t=URL.createObjectURL(l),i=document.createElement("a");i.href=t,i.download=`questionnaire-backup-${new Date().toISOString().split("T")[0]}.json`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(t),alert(s("questionnaire.shared.localProgress.exportSuccess"))}catch(r){console.error("Failed to export progress:",r),alert(s("questionnaire.shared.localProgress.exportFailed"))}},I=()=>{const r=document.createElement("input");r.type="file",r.accept="application/json",r.onchange=l=>{var k;const t=(k=l.target.files)==null?void 0:k[0];if(!t)return;const i=new FileReader;i.onload=D=>{var F;try{const v=(F=D.target)==null?void 0:F.result,V=JSON.parse(v);localStorage.setItem(a,v),alert(s("questionnaire.shared.localProgress.importSuccess")),window.location.reload()}catch(v){console.error("Failed to import progress:",v),alert(s("questionnaire.shared.localProgress.importFailed"))}},i.readAsText(t)},r.click()},R=()=>{if(window.confirm(s("questionnaire.shared.localProgress.clearConfirm")))try{localStorage.removeItem(a),b(!1),o(null),h==null||h(),alert(s("questionnaire.shared.localProgress.clearSuccess"))}catch(l){console.error("Failed to clear progress:",l),alert(s("questionnaire.shared.localProgress.clearFailed"))}},S=r=>{try{const l=new Date(r);return f(l,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return r}};return e.jsxs(e.Fragment,{children:[c&&n&&e.jsx("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4",children:e.jsxs("div",{className:"bg-white rounded-lg shadow-2xl max-w-md w-full p-6 space-y-4",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(T,{className:"h-6 w-6 text-blue-600 flex-shrink-0 mt-1"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h3",{className:"text-lg font-semibold text-gray-900 mb-2",children:s("questionnaire.shared.localProgress.resumeTitle")}),e.jsx("p",{className:"text-sm text-gray-600 mb-4",children:s("questionnaire.shared.localProgress.resumeDescription")}),e.jsxs("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-4 space-y-2 text-sm",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-gray-700",children:s("questionnaire.shared.localProgress.phase")}),e.jsxs("span",{className:"font-semibold text-gray-900",children:[n.phase," / 11"]})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-gray-700",children:s("questionnaire.shared.localProgress.completion")}),e.jsxs("span",{className:"font-semibold text-gray-900",children:[n.percentage,"%"]})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-gray-700",children:s("questionnaire.shared.localProgress.lastSaved")}),e.jsx("span",{className:"font-semibold text-gray-900",children:S(n.lastSaved)})]})]})]})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(d,{variant:"outline",onClick:E,className:"flex-1",children:s("questionnaire.shared.localProgress.startFresh")}
1),e.jsxs(d,{onClick:p,className:"flex-1 bg-blue-600 hover:bg-blue-700 text-white",children:[e.jsx(T,{className:"mr-2 h-4 w-4"}),s("questionnaire.shared.localProgress.resume")]})]})]})}),e.jsxs("div",{className:"relative",children:[e.jsxs(d,{variant:"outline",size:"sm",onClick:()=>N(!g),className:"h-9 w-9 gap-0 p-0 sm:w-auto sm:gap-2 sm:px-3",title:s("questionnaire.shared.localProgress.manage"),children:[e.jsx(P,{className:"h-4 w-4"}),x&&e.jsx("span",{className:"absolute -top-1 -right-1 h-3 w-3 bg-green-500 rounded-full border-2 border-white"})]}),g&&e.jsxs("div",{className:"absolute right-0 z-40 mt-2 w-[calc(100vw-2rem)] max-w-80 rounded-lg border border-gray-200 bg-white p-4 shadow-xl",children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("h4",{className:"font-semibold text-gray-900 flex items-center gap-2",children:[e.jsx(P,{className:"h-4 w-4"}),s("questionnaire.shared.localProgress.title")]}),e.jsx("button",{onClick:()=>N(!1),className:"text-gray-400 hover:text-gray-600",children:"â"})]}),x&&n?e.jsxs("div",{className:"bg-green-50 border border-green-200 rounded-lg p-3 mb-4 text-sm",children:[e.jsxs("div",{className:"flex items-center gap-2 text-green-800 font-medium mb-2",children:[e.jsx(A,{className:"h-4 w-4"}),s("questionnaire.shared.localProgress.savedLocally")]}),e.jsxs("div",{className:"space-y-1 text-gray-700",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{children:s("questionnaire.shared.localProgress.phase")}),e.jsxs("span",{className:"font-semibold",children:[n.phase," / 11"]})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{children:s("questionnaire.shared.localProgress.progress")}),e.jsxs("span",{className:"font-semibold",children:[n.percentage,"%"]})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{children:s("questionnaire.shared.localProgress.lastSaved")}),e.jsx("span",{className:"font-semibold text-xs",children:S(n.lastSaved)})]})]})]}):e.jsx("div",{className:"bg-gray-50 border border-gray-200 rounded-lg p-3 mb-4 text-sm",children:e.jsxs("div",{className:"flex items-center gap-2 text-gray-600",children:[e.jsx(q,{className:"h-4 w-4"}),s("questionnaire.shared.localProgress.empty")]})}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(d,{variant:"outline",size:"sm",onClick:L,disabled:!x,className:"w-full justify-start",children:[e.jsx(M,{className:"mr-2 h-4 w-4"}),s("questionnaire.shared.localProgress.exportBackup")]}),e.jsxs(d,{variant:"outline",size:"sm",onClick:I,className:"w-full justify-start",children:[e.jsx(H,{className:"mr-2 h-4 w-4"}),s("questionnaire.shared.localProgress.importBackup")]}),e.jsx("div",{className:"border-t border-gray-200 my-2"}),e.jsxs(d,{variant:"outline",size:"sm",onClick:R,disabled:!x,className:"w-full justify-start text-red-600 hover:text-red-700 hover:bg-red-50",children:[e.jsx(J,{className:"mr-2 h-4 w-4"}),s("questionnaire.shared.localProgress.clear")]})]}),e.jsx("p",{className:"text-xs text-gray-500 mt-3 pt-3 border-t border-gray-200",children:s("questionnaire.shared.localProgress.hint")})]})]})]})},oe=({children:j,currentPhase:h})=>{const{t:a}=C(),w=O.map(p=>a(`questionnaire.shared.container.phaseNames.${p.i18nKey}`)),{completionPercentage:s,cloudSaved:f,saveToCloud:x,isLoading:b,reset:n}=z(),[o,c]=m.useState("idle"),[u,g]=m.useState(null),N=()=>{n(),window.location.reload()},y=async()=>{if(!(f||b)){c("saving"),g(null);try{await x(),c("success"),setTimeout(()=>{c("idle")},3e3)}catch(p){c("error"),g(p instanceof Error?p.message:a("questionnaire.shared.container.cloudSaveFailed")),setTimeout(()=>{c("idle"),g(null)},5e3)}}};return e.jsxs("div",{className:"min-h-full bg-white sm:min-h-screen sm:bg-muted/30",children:[e.jsx("div",{className:"border-b bg-[var(--secondary)] shadow-none sm:border-b-0 sm:shadow-md",children:e.jsxs("div",{className:"mx-auto max-w-4xl px-4 py-3 sm:px-6 sm:py-6 lg:px-8",children:[e.jsxs("div",{className:"mb-3 flex items-start justify-between gap-3 sm:mb-4 sm:items-center",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"truncate text-lg font-heading-semibold text-[var(--secondary-foreground)] sm:text-2xl",children:a("questionnaire.shared.container.title")}),e.jsx("p",{className:"mt-0.5 text-xs font-body text-[var(--secondary-foreground)]/90 sm:mt-1 sm:text-sm",children:a("questionnaire.shared.container.phaseLabel",{current:h,total:U,name:w[h-1]??a("questionnaire.shared.container.phase")})})]}),e.jsxs("div",{className:"flex shrink-0 flex-wrap items-center gap-2 sm:gap-4",children:[e.jsx(G,{onClear:N,storageKey:"questionnaire-storage",showRestorePrompt:!0}),!f&&s>=80&&e.jsx(d,{size:"sm",variant:"default",onClick:y,disabled:o==="saving",className:"font-body",title:a("questionnaire.shared.container.saveTitle"),children:o==="saving"?e.jsxs(e.Fragment,{children:[e.jsx(_,{className:"h-4 w-4 animate-spin"}),a("questionnaire.shared.container.saving")]}):o==="success"?e.jsxs(e.Fragment,{children:[e.jsx($,{className:"h-4 w-4"}),a("questionnaire.shared.container.saved")]}):o==="error"?e.jsxs(e.Fragment,{children:[e.jsx(q,{className:"h-4 w-4"}),a("questionnaire.shared.container.failed")]}):e.jsxs(e.Fragment,{children:[e.jsx(P,{className:"h-4 w-4"}),a("questionnaire.shared.container.save")]})})]})]}),e.jsxs("div",{className:"space-y-1.5 sm:space-y-2",children:[e.jsxs("div",{className:"flex justify-between text-xs text-white/80",children:[e.jsx("span",{children:a("questionnaire.shared.container.progress")}),e.jsxs("span",{children:[s,"%"]})]}),e.jsx(B,{value:s,className:"h-2"})]}),u&&o==="error"&&e.jsxs("div",{className:"mt-3 flex items-start gap-2 rounded-md bg-red-100 border border-red-300 p-3 text-red-800 text-sm",children:[e.jsx(q,{className:"h-4 w-4 mt-0.5 flex-shrink-0"}),e.jsxs("div",{children:[e.jsx("strong",{children:a("questionnaire.shared.container.cloudSaveFailed")})," ",u]})]})]})}),e.jsx("div",{className:"mx-auto max-w-4xl px-0 py-3 pb-8 sm:px-6 sm:py-8 sm:pb-32 lg:px-8",children:e.jsx("div",{className:"bg-white px-4 py-2 shadow-none sm:rounded-lg sm:border sm:border-gray-200 sm:p-8 sm:shadow-sm",children:j})}),e.jsx("div",{className:"fixed bottom-0 left-0 right-0 hidden border-t border-gray-200 bg-white px-4 py-3 sm:block",children:e.jsx("div",{className:"max-w-4xl mx-auto flex items-center justify-center text-sm",children:e.jsxs("span",{className:"text-gray-600",children:[a("questionnaire.shared.container.progressFooter",{percentage:s})," ",e.jsxs("strong",{children:[s,"%"]})]})})})]})};
1export{oe as QuestionnaireContainer};
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.