import{d as N,c as f,a as e,t as l,u as n,b as a,o as b,j as B,k as H,e as w,w as T,v as k,m as J,f as A,g as K,p as Q,n as C,F as R,q as W,x as U,r as h,y as x,z as X,A as Y,B as P,C as Z,D as ee,_ as te}from"./index-BJLwFBib.js";const ae={class:"pagination"},le=["disabled"],se=["disabled"],oe=N({__name:"PaginationControl",props:{page:{},pageSize:{},total:{}},emits:["next","prev"],setup(c,{emit:y}){const p=y;return(v,t)=>(b(),f("div",ae,[e("button",{class:"btn",disabled:c.page<=1,onClick:t[0]||(t[0]=_=>p("prev"))},l(n(a)("previous")),9,le),e("span",null,l(n(a)("page"))+" "+l(c.page)+" / "+l(Math.max(Math.ceil(c.total/c.pageSize),1)),1),e("button",{class:"btn",disabled:c.page>=Math.ceil(c.total/c.pageSize),onClick:t[1]||(t[1]=_=>p("next"))},l(n(a)("next")),9,se)]))}}),ne={class:"modal"},ie={value:1},ue={value:2},de={value:3},re=["placeholder"],ce={class:"modal-actions"},pe=N({__name:"TodoEditorModal",props:{modelValue:{type:Boolean},editingTask:{}},emits:["update:modelValue","submit"],setup(c,{emit:y}){const p=c,v=y,t=K({title:"",description:"",due_at:"",priority:2,tags:""});B(()=>p.editingTask,s=>{var i;t.title=(s==null?void 0:s.title)??"",t.description=(s==null?void 0:s.description)??"",t.due_at=m((s==null?void 0:s.due_at)??""),t.priority=(s==null?void 0:s.priority)??2,t.tags=((i=s==null?void 0:s.tags)==null?void 0:i.join(", "))??""},{immediate:!0}),B(()=>p.modelValue,s=>{!s&&!p.editingTask&&(t.title="",t.description="",t.due_at="",t.priority=2,t.tags="")});function _(){v("update:modelValue",!1)}function g(){v("submit",{title:t.title,description:t.description,due_at:t.due_at?new Date(t.due_at).toISOString():"",priority:Number(t.priority),tags:t.tags.split(",").map(s=>s.trim()).filter(Boolean)})}function m(s){if(!s)return"";const i=new Date(s);if(Number.isNaN(i.getTime()))return"";const r=i.getTimezoneOffset()*6e4;return new Date(i.getTime()-r).toISOString().slice(0,16)}return(s,i)=>c.modelValue?(b(),f("div",{key:0,class:"modal-mask",onClick:H(_,["self"])},[e("section",ne,[e("header",null,[e("h3",null,l(c.editingTask?n(a)("edit_todo"):n(a)("create_todo")),1)]),e("label",null,[w(l(n(a)("title"))+" ",1),T(e("input",{"onUpdate:modelValue":i[0]||(i[0]=r=>t.title=r),type:"text",required:""},null,512),[[k,t.title]])]),e("label",null,[w(l(n(a)("due_at"))+" ",1),T(e("input",{"onUpdate:modelValue":i[1]||(i[1]=r=>t.due_at=r),type:"datetime-local"},null,512),[[k,t.due_at]])]),e("label",null,[w(l(n(a)("priority"))+" ",1),T(e("select",{"onUpdate:modelValue":i[2]||(i[2]=r=>t.priority=r)},[e("option",ie,l(n(a)("high")),1),e("option",ue,l(n(a)("medium")),1),e("option",de,l(n(a)("low")),1)],512),[[J,t.priority]])]),e("label",null,[w(l(n(a)("tags"))+" ",1),T(e("input",{"onUpdate:modelValue":i[3]||(i[3]=r=>t.tags=r),type:"text",placeholder:n(a)("tags_placeholder")},null,8,re),[[k,t.tags]])]),e("label",null,[w(l(n(a)("description"))+" ",1),T(e("textarea",{"onUpdate:modelValue":i[4]||(i[4]=r=>t.description=r),rows:"4"},null,512),[[k,t.description]])]),e("div",ce,[e("button",{class:"btn",onClick:_},l(n(a)("cancel")),1),e("button",{class:"btn primary",onClick:g},l(n(a)("save")),1)])])])):A("",!0)}}),ve={class:"page"},me={class:"page-head"},_e={class:"page-actions"},ge={class:"filter-group"},fe={key:0,class:"cards"},be={key:0,class:"empty-state"},ye={class:"task-row-main"},he=["checked","onChange","aria-label"],we={class:"task-row-content"},Te={class:"task-row-meta"},ke={class:"task-meta"},Ce={class:"task-row-actions"},xe=["onClick"],Ve=["onClick"],$e={key:1},Se=N({__name:"TodoView",setup(c){const{success:y,error:p}=Y(),v=h([]),t=h(!1),_=h(!1),g=h(null),m=h(1),s=h(6),i=h("all"),r=x(()=>i.value==="all"?v.value:v.value.filter(o=>o.status===i.value)),D=x(()=>r.value.length),V=x(()=>Math.max(Math.ceil(D.value/s.value),1)),M=x(()=>{const o=(m.value-1)*s.value;return r.value.slice(o,o+s.value)});async function $(){t.value=!0;try{const o=await X();v.value=o.sort((d,u)=>Number(new Date(u.updated_at))-Number(new Date(d.updated_at))),m.value>V.value&&(m.value=V.value)}catch{p(a("load_tasks_failed"))}finally{t.value=!1}}function E(){g.value=null,_.value=!0}function O(o){g.value=o,_.value=!0}async function F(o){var d;try{(d=g.value)!=null&&d.id?(await P(g.value.id,o),y(a("task_updated_success")||"Task updated")):(await Z({...o,status:"todo"}),y(a("task_created_success")||"Task created")),_.value=!1,g.value=null,await $()}catch{p(a("save_task_failed"))}}async function I(o){const d=o.status,u=o.status==="done"?"todo":"done";o.status=u;try{await P(o.id,{status:u})}catch{o.status=d,p(a("update_task_failed"))}}async function L(o){if(!confirm(a("confirm_delete")||"Are you sure?"))return;const d=[...v.value];v.value=v.value.filter(u=>u.id!==o);try{await ee(o),y(a("task_deleted_success")||"Task deleted")}catch{v.value=d,p(a("delete_task_failed"))}}function j(){m.value1&&(m.value-=1)}function G(o){return o?new Date(o).toLocaleString():a("due_empty")}function S(o){i.value=o,m.value=1}return Q($),(o,d)=>(b(),f("section",ve,[e("header",me,[e("div",null,[e("h2",null,l(n(a)("todo_title")),1),e("p",null,l(n(a)("todo_subtitle")),1)]),e("div",_e,[e("div",ge,[e("button",{class:C(["btn sm",{primary:i.value==="all"}]),onClick:d[0]||(d[0]=u=>S("all"))},"All",2),e("button",{class:C(["btn sm",{primary:i.value==="todo"}]),onClick:d[1]||(d[1]=u=>S("todo"))},"Active",2),e("button",{class:C(["btn sm",{primary:i.value==="done"}]),onClick:d[2]||(d[2]=u=>S("done"))},"Done",2)]),e("button",{class:"btn",onClick:$},l(n(a)("refresh")),1),e("button",{class:"btn primary",onClick:E},l(n(a)("new_todo")),1)])]),t.value?(b(),f("p",$e,l(n(a)("loading_tasks")),1)):(b(),f("div",fe,[M.value.length===0?(b(),f("div",be,[...d[4]||(d[4]=[e("p",null,"No tasks found.",-1)])])):A("",!0),(b(!0),f(R,null,W(M.value,u=>(b(),f("article",{key:u.id,class:C(["task-row",{done:u.status==="done"}])},[e("div",ye,[e("input",{class:"task-check",type:"checkbox",checked:u.status==="done",onChange:z=>I(u),"aria-label":u.title},null,40,he),e("div",we,[e("h3",null,l(u.title),1),e("p",null,l(u.description||n(a)("no_description")),1)])]),e("div",Te,[e("div",ke,[e("small",null,l(n(a)("priority"))+" P"+l(u.priority||2),1),e("small",null,l(n(a)("due_at"))+" "+l(G(u.due_at)),1)])]),e("div",Ce,[e("button",{class:"btn",onClick:z=>O(u)},l(n(a)("edit")),9,xe),e("button",{class:"btn danger",onClick:z=>L(u.id)},l(n(a)("delete")),9,Ve)])],2))),128))])),U(oe,{page:m.value,"page-size":s.value,total:D.value,onNext:j,onPrev:q},null,8,["page","page-size","total"]),U(pe,{modelValue:_.value,"onUpdate:modelValue":d[3]||(d[3]=u=>_.value=u),"editing-task":g.value,onSubmit:F},null,8,["modelValue","editing-task"])]))}}),De=te(Se,[["__scopeId","data-v-23b5de78"]]);export{De as default};