From 83fd53a1ea3e761f6d65ca99ee2935c4b5e2ed6e Mon Sep 17 00:00:00 2001 From: OpenClaw Date: Thu, 12 Mar 2026 20:04:43 +0000 Subject: [PATCH] feat: Complete partnerships UI - Overview tab with stats & partner lists - Shared orders tab (send/receive/respond) - Partnership timesheets with approval flow - Invoices listing - Invite modal with org search - Rate management in detail modal - Share order modal --- ...bJi1.js => AdminDashboardView-B1X380mB.js} | 2 +- dist/assets/AppLayout-BRNeJZ9j.js | 1 - dist/assets/AppLayout-Dn1Dax5w.js | 1 + ...b2J76b.js => AvailabilityView-B7DXJOIF.js} | 2 +- ...-BW8VodPh.js => DashboardView-Dm3JX8-R.js} | 2 +- ...pView-BR-Y2gYt.js => HelpView-D57TqZOy.js} | 2 +- ...View-CeGTfWRI.js => LoginView-Do3PQjab.js} | 2 +- ...ew-BttIuruo.js => ModulesView-FSR3_RHO.js} | 2 +- dist/assets/ObjectsView-CqpXdUlY.js | 1 + ...2j_NZNO.js => OrderDetailView-BOsK7PdF.js} | 2 +- ...iew-BVBJaCj6.js => OrdersView-mynFcmCT.js} | 2 +- dist/assets/PartnershipsView-B4wJavhc.js | 1 + dist/assets/PartnershipsView-VpZWV3sV.js | 1 - dist/assets/QualificationsView-HIWg4xhg.js | 1 + ...m_uvfRR.js => RegisterOrgView-BLP8qTxS.js} | 2 +- ...w-CiueANf-.js => SettingsView-Dui31Esj.js} | 2 +- ...DD5Ozo6b.js => TimesheetsView-icu2yWhU.js} | 2 +- ...View-BzAufK3M.js => UsersView-D-cYRxCO.js} | 2 +- dist/assets/index-CA5dNQfW.css | 1 + dist/assets/index-CVUlgynU.js | 29 + dist/assets/index-DjccJ3o_.css | 1 - dist/assets/index-Dox4jtA_.js | 29 - dist/index.html | 4 +- src/views/PartnershipsView.vue | 1366 ++++++++++++----- 24 files changed, 1066 insertions(+), 394 deletions(-) rename dist/assets/{AdminDashboardView-B-imbJi1.js => AdminDashboardView-B1X380mB.js} (99%) delete mode 100644 dist/assets/AppLayout-BRNeJZ9j.js create mode 100644 dist/assets/AppLayout-Dn1Dax5w.js rename dist/assets/{AvailabilityView-DWb2J76b.js => AvailabilityView-B7DXJOIF.js} (97%) rename dist/assets/{DashboardView-BW8VodPh.js => DashboardView-Dm3JX8-R.js} (98%) rename dist/assets/{HelpView-BR-Y2gYt.js => HelpView-D57TqZOy.js} (99%) rename dist/assets/{LoginView-CeGTfWRI.js => LoginView-Do3PQjab.js} (98%) rename dist/assets/{ModulesView-BttIuruo.js => ModulesView-FSR3_RHO.js} (98%) create mode 100644 dist/assets/ObjectsView-CqpXdUlY.js rename dist/assets/{OrderDetailView-B2j_NZNO.js => OrderDetailView-BOsK7PdF.js} (98%) rename dist/assets/{OrdersView-BVBJaCj6.js => OrdersView-mynFcmCT.js} (99%) create mode 100644 dist/assets/PartnershipsView-B4wJavhc.js delete mode 100644 dist/assets/PartnershipsView-VpZWV3sV.js create mode 100644 dist/assets/QualificationsView-HIWg4xhg.js rename dist/assets/{RegisterOrgView-Cm_uvfRR.js => RegisterOrgView-BLP8qTxS.js} (99%) rename dist/assets/{SettingsView-CiueANf-.js => SettingsView-Dui31Esj.js} (97%) rename dist/assets/{TimesheetsView-DD5Ozo6b.js => TimesheetsView-icu2yWhU.js} (98%) rename dist/assets/{UsersView-BzAufK3M.js => UsersView-D-cYRxCO.js} (98%) create mode 100644 dist/assets/index-CA5dNQfW.css create mode 100644 dist/assets/index-CVUlgynU.js delete mode 100644 dist/assets/index-DjccJ3o_.css delete mode 100644 dist/assets/index-Dox4jtA_.js diff --git a/dist/assets/AdminDashboardView-B-imbJi1.js b/dist/assets/AdminDashboardView-B1X380mB.js similarity index 99% rename from dist/assets/AdminDashboardView-B-imbJi1.js rename to dist/assets/AdminDashboardView-B1X380mB.js index 74de858..44f4660 100644 --- a/dist/assets/AdminDashboardView-B-imbJi1.js +++ b/dist/assets/AdminDashboardView-B1X380mB.js @@ -1 +1 @@ -import{d as $,q as F,m as g,c as o,a as t,i as I,j as P,t as a,b as C,s as T,v as R,F as S,x as B,e as D,f as q,r,l as K,o as l,p as A,n as W}from"./index-Dox4jtA_.js";const Z={class:"min-h-screen bg-gray-100 dark:bg-gray-900"},G={class:"bg-white dark:bg-gray-800 shadow"},H={class:"max-w-7xl mx-auto px-4 py-4 flex items-center justify-between"},J={class:"max-w-7xl mx-auto px-4 py-8"},Q={key:0,class:"text-center py-12"},X={key:1,class:"card bg-red-50 text-red-700 text-center"},Y={key:2,class:"space-y-6"},tt={class:"grid grid-cols-1 md:grid-cols-4 gap-4"},et={class:"card"},st={class:"text-3xl font-bold text-primary-600"},at={class:"card"},nt={class:"text-3xl font-bold text-green-600"},ot={class:"card"},lt={class:"text-3xl font-bold text-blue-600"},rt={class:"card"},it={class:"text-3xl font-bold text-purple-600"},dt={class:"card"},ct={class:"flex gap-4"},ut=["disabled"],gt={class:"card"},xt={class:"overflow-x-auto"},vt={class:"w-full"},mt={class:"divide-y dark:divide-gray-700"},yt={class:"py-3 font-medium text-gray-900 dark:text-white"},_t={class:"py-3 text-gray-500"},pt={class:"py-3"},ft={class:"py-3 text-gray-500"},bt={class:"py-3 text-gray-500"},ht={class:"py-3 text-gray-500"},kt={class:"py-3"},wt=["onClick"],zt={key:0,class:"fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4"},Ct={class:"bg-white dark:bg-gray-800 rounded-xl shadow-xl max-w-2xl w-full max-h-[80vh] overflow-y-auto"},St={class:"p-6"},Bt={class:"flex items-center justify-between mb-6"},Dt={class:"text-xl font-bold text-gray-900 dark:text-white"},At={key:0,class:"space-y-6"},Et={class:"grid grid-cols-3 gap-4"},Ot={class:"bg-gray-50 dark:bg-gray-700 rounded-lg p-4 text-center"},Ut={class:"text-2xl font-bold"},Vt={class:"bg-gray-50 dark:bg-gray-700 rounded-lg p-4 text-center"},Lt={class:"text-2xl font-bold"},Nt={class:"bg-gray-50 dark:bg-gray-700 rounded-lg p-4 text-center"},jt={class:"text-2xl font-bold"},Mt={class:"space-y-2"},$t={class:"font-medium text-gray-900 dark:text-white"},Ft={key:0,class:"text-red-500 text-sm"},It={class:"text-sm text-gray-500"},Pt=["onClick"],Tt={key:1,class:"text-center py-8 text-gray-500"},Wt=$({__name:"AdminDashboardView",setup(Rt){const E=q(),v=r(!0),c=r(""),u=r({org_count:0,user_count:0,order_count:0,timesheet_count:0}),p=r([]),f=r(null),i=r(null),m=r(!1),d=r(""),y=r("info"),x=r(!1);F(async()=>{await O()});async function O(){v.value=!0,c.value="";try{const[n,e]=await Promise.all([g.get("/admin/dashboard"),g.get("/admin/organizations")]);u.value=n.data.stats,p.value=e.data.organizations}catch(n){c.value=n instanceof Error?n.message:"Laden fehlgeschlagen",c.value.includes("Super-Admin")&&E.push("/")}finally{v.value=!1}}async function U(n){f.value=n,m.value=!0;try{const e=await g.get(`/admin/organizations/${n.id}`);i.value=e.data}catch(e){console.error("Load org details failed:",e)}}async function V(n){if(confirm("Als dieser User einloggen?"))try{const e=await g.post(`/admin/impersonate/${n}`);localStorage.setItem("accessToken",e.data.token),localStorage.setItem("impersonating","true"),window.location.href="/"}catch(e){alert("Impersonation fehlgeschlagen: "+(e instanceof Error?e.message:"Unbekannter Fehler"))}}async function L(){if(d.value.trim()&&confirm("Nachricht an alle Organisationen senden?")){x.value=!0;try{await g.post("/admin/broadcast",{message:d.value,type:y.value}),alert("Broadcast gesendet!"),d.value=""}catch(n){alert("Fehler: "+(n instanceof Error?n.message:"Unbekannt"))}finally{x.value=!1}}}function N(n){return new Date(n).toLocaleDateString("de-DE",{day:"2-digit",month:"2-digit",year:"numeric"})}function j(n){const e={free:"badge bg-gray-100 text-gray-800",starter:"badge bg-blue-100 text-blue-800",business:"badge bg-purple-100 text-purple-800",enterprise:"badge bg-yellow-100 text-yellow-800"};return e[n]||e.free}return(n,e)=>{var b,h,k,w;const M=K("router-link");return l(),o("div",Z,[t("header",G,[t("div",H,[e[4]||(e[4]=t("div",{class:"flex items-center gap-3"},[t("span",{class:"text-2xl"},"🛡️"),t("h1",{class:"text-xl font-bold text-gray-900 dark:text-white"}," SeCu Admin Panel ")],-1)),I(M,{to:"/",class:"btn btn-secondary text-sm"},{default:P(()=>[...e[3]||(e[3]=[A(" ← Zurück zur App ",-1)])]),_:1})])]),t("main",J,[v.value?(l(),o("div",Q,[...e[5]||(e[5]=[t("p",{class:"text-gray-500"},"Lädt...",-1)])])):c.value?(l(),o("div",X,a(c.value),1)):(l(),o("div",Y,[t("div",tt,[t("div",et,[t("div",st,a(u.value.org_count),1),e[6]||(e[6]=t("div",{class:"text-sm text-gray-500"},"Organisationen",-1))]),t("div",at,[t("div",nt,a(u.value.user_count),1),e[7]||(e[7]=t("div",{class:"text-sm text-gray-500"},"Benutzer",-1))]),t("div",ot,[t("div",lt,a(u.value.order_count),1),e[8]||(e[8]=t("div",{class:"text-sm text-gray-500"},"Aufträge",-1))]),t("div",rt,[t("div",it,a(u.value.timesheet_count),1),e[9]||(e[9]=t("div",{class:"text-sm text-gray-500"},"Stundenzettel",-1))])]),t("div",dt,[e[11]||(e[11]=t("h2",{class:"text-lg font-semibold text-gray-900 dark:text-white mb-4"}," 📢 Broadcast an alle Kunden ",-1)),t("div",ct,[C(t("select",{"onUpdate:modelValue":e[0]||(e[0]=s=>y.value=s),class:"input w-32"},[...e[10]||(e[10]=[t("option",{value:"info"},"Info",-1),t("option",{value:"warning"},"Warnung",-1),t("option",{value:"success"},"Erfolg",-1)])],512),[[T,y.value]]),C(t("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>d.value=s),type:"text",class:"input flex-1",placeholder:"Nachricht eingeben..."},null,512),[[R,d.value]]),t("button",{onClick:L,disabled:x.value||!d.value.trim(),class:"btn btn-primary"},a(x.value?"Sendet...":"Senden"),9,ut)])]),t("div",gt,[e[13]||(e[13]=t("h2",{class:"text-lg font-semibold text-gray-900 dark:text-white mb-4"}," 🏢 Organisationen ",-1)),t("div",xt,[t("table",vt,[e[12]||(e[12]=t("thead",{class:"text-left text-sm text-gray-500 border-b dark:border-gray-700"},[t("tr",null,[t("th",{class:"pb-3 font-medium"},"Organisation"),t("th",{class:"pb-3 font-medium"},"Slug"),t("th",{class:"pb-3 font-medium"},"Plan"),t("th",{class:"pb-3 font-medium"},"Users"),t("th",{class:"pb-3 font-medium"},"Aufträge"),t("th",{class:"pb-3 font-medium"},"Erstellt"),t("th",{class:"pb-3 font-medium"})])],-1)),t("tbody",mt,[(l(!0),o(S,null,B(p.value,s=>{var _,z;return l(),o("tr",{key:s.id,class:"hover:bg-gray-50 dark:hover:bg-gray-800"},[t("td",yt,a(s.name),1),t("td",_t,a(s.slug),1),t("td",pt,[t("span",{class:W(j(((_=s.settings)==null?void 0:_.plan)||"free"))},a(((z=s.settings)==null?void 0:z.plan)||"free"),3)]),t("td",ft,a(s.user_count),1),t("td",bt,a(s.order_count),1),t("td",ht,a(N(s.created_at)),1),t("td",kt,[t("button",{onClick:qt=>U(s),class:"text-primary-600 hover:text-primary-800 text-sm"}," Details → ",8,wt)])])}),128))])])])])]))]),m.value?(l(),o("div",zt,[t("div",Ct,[t("div",St,[t("div",Bt,[t("h2",Dt,a((b=f.value)==null?void 0:b.name),1),t("button",{onClick:e[2]||(e[2]=s=>m.value=!1),class:"text-gray-400 hover:text-gray-600"}," ✕ ")]),i.value?(l(),o("div",At,[t("div",Et,[t("div",Ot,[t("div",Ut,a(((h=i.value.users)==null?void 0:h.length)||0),1),e[14]||(e[14]=t("div",{class:"text-sm text-gray-500"},"Benutzer",-1))]),t("div",Vt,[t("div",Lt,a(((k=i.value.stats)==null?void 0:k.order_count)||0),1),e[15]||(e[15]=t("div",{class:"text-sm text-gray-500"},"Aufträge",-1))]),t("div",Nt,[t("div",jt,a(((w=i.value.stats)==null?void 0:w.timesheet_count)||0),1),e[16]||(e[16]=t("div",{class:"text-sm text-gray-500"},"Stundenzettel",-1))])]),t("div",null,[e[17]||(e[17]=t("h3",{class:"font-semibold text-gray-900 dark:text-white mb-3"},"Benutzer",-1)),t("div",Mt,[(l(!0),o(S,null,B(i.value.users,s=>(l(),o("div",{key:s.id,class:"flex items-center justify-between p-3 bg-gray-50 dark:bg-gray-700 rounded-lg"},[t("div",null,[t("div",$t,[A(a(s.first_name)+" "+a(s.last_name)+" ",1),s.active?D("",!0):(l(),o("span",Ft,"(inaktiv)"))]),t("div",It,a(s.email)+" • "+a(s.role),1)]),t("button",{onClick:_=>V(s.id),class:"text-sm text-primary-600 hover:text-primary-800"}," Als User einloggen ",8,Pt)]))),128))])])])):(l(),o("div",Tt," Lädt... "))])])])):D("",!0)])}}});export{Wt as default}; +import{d as $,q as F,m as g,c as o,a as t,i as I,j as P,t as a,b as C,s as T,v as R,F as S,x as B,e as D,f as q,r,l as K,o as l,p as A,n as W}from"./index-CVUlgynU.js";const Z={class:"min-h-screen bg-gray-100 dark:bg-gray-900"},G={class:"bg-white dark:bg-gray-800 shadow"},H={class:"max-w-7xl mx-auto px-4 py-4 flex items-center justify-between"},J={class:"max-w-7xl mx-auto px-4 py-8"},Q={key:0,class:"text-center py-12"},X={key:1,class:"card bg-red-50 text-red-700 text-center"},Y={key:2,class:"space-y-6"},tt={class:"grid grid-cols-1 md:grid-cols-4 gap-4"},et={class:"card"},st={class:"text-3xl font-bold text-primary-600"},at={class:"card"},nt={class:"text-3xl font-bold text-green-600"},ot={class:"card"},lt={class:"text-3xl font-bold text-blue-600"},rt={class:"card"},it={class:"text-3xl font-bold text-purple-600"},dt={class:"card"},ct={class:"flex gap-4"},ut=["disabled"],gt={class:"card"},xt={class:"overflow-x-auto"},vt={class:"w-full"},mt={class:"divide-y dark:divide-gray-700"},yt={class:"py-3 font-medium text-gray-900 dark:text-white"},_t={class:"py-3 text-gray-500"},pt={class:"py-3"},ft={class:"py-3 text-gray-500"},bt={class:"py-3 text-gray-500"},ht={class:"py-3 text-gray-500"},kt={class:"py-3"},wt=["onClick"],zt={key:0,class:"fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4"},Ct={class:"bg-white dark:bg-gray-800 rounded-xl shadow-xl max-w-2xl w-full max-h-[80vh] overflow-y-auto"},St={class:"p-6"},Bt={class:"flex items-center justify-between mb-6"},Dt={class:"text-xl font-bold text-gray-900 dark:text-white"},At={key:0,class:"space-y-6"},Et={class:"grid grid-cols-3 gap-4"},Ot={class:"bg-gray-50 dark:bg-gray-700 rounded-lg p-4 text-center"},Ut={class:"text-2xl font-bold"},Vt={class:"bg-gray-50 dark:bg-gray-700 rounded-lg p-4 text-center"},Lt={class:"text-2xl font-bold"},Nt={class:"bg-gray-50 dark:bg-gray-700 rounded-lg p-4 text-center"},jt={class:"text-2xl font-bold"},Mt={class:"space-y-2"},$t={class:"font-medium text-gray-900 dark:text-white"},Ft={key:0,class:"text-red-500 text-sm"},It={class:"text-sm text-gray-500"},Pt=["onClick"],Tt={key:1,class:"text-center py-8 text-gray-500"},Wt=$({__name:"AdminDashboardView",setup(Rt){const E=q(),v=r(!0),c=r(""),u=r({org_count:0,user_count:0,order_count:0,timesheet_count:0}),p=r([]),f=r(null),i=r(null),m=r(!1),d=r(""),y=r("info"),x=r(!1);F(async()=>{await O()});async function O(){v.value=!0,c.value="";try{const[n,e]=await Promise.all([g.get("/admin/dashboard"),g.get("/admin/organizations")]);u.value=n.data.stats,p.value=e.data.organizations}catch(n){c.value=n instanceof Error?n.message:"Laden fehlgeschlagen",c.value.includes("Super-Admin")&&E.push("/")}finally{v.value=!1}}async function U(n){f.value=n,m.value=!0;try{const e=await g.get(`/admin/organizations/${n.id}`);i.value=e.data}catch(e){console.error("Load org details failed:",e)}}async function V(n){if(confirm("Als dieser User einloggen?"))try{const e=await g.post(`/admin/impersonate/${n}`);localStorage.setItem("accessToken",e.data.token),localStorage.setItem("impersonating","true"),window.location.href="/"}catch(e){alert("Impersonation fehlgeschlagen: "+(e instanceof Error?e.message:"Unbekannter Fehler"))}}async function L(){if(d.value.trim()&&confirm("Nachricht an alle Organisationen senden?")){x.value=!0;try{await g.post("/admin/broadcast",{message:d.value,type:y.value}),alert("Broadcast gesendet!"),d.value=""}catch(n){alert("Fehler: "+(n instanceof Error?n.message:"Unbekannt"))}finally{x.value=!1}}}function N(n){return new Date(n).toLocaleDateString("de-DE",{day:"2-digit",month:"2-digit",year:"numeric"})}function j(n){const e={free:"badge bg-gray-100 text-gray-800",starter:"badge bg-blue-100 text-blue-800",business:"badge bg-purple-100 text-purple-800",enterprise:"badge bg-yellow-100 text-yellow-800"};return e[n]||e.free}return(n,e)=>{var b,h,k,w;const M=K("router-link");return l(),o("div",Z,[t("header",G,[t("div",H,[e[4]||(e[4]=t("div",{class:"flex items-center gap-3"},[t("span",{class:"text-2xl"},"🛡️"),t("h1",{class:"text-xl font-bold text-gray-900 dark:text-white"}," SeCu Admin Panel ")],-1)),I(M,{to:"/",class:"btn btn-secondary text-sm"},{default:P(()=>[...e[3]||(e[3]=[A(" ← Zurück zur App ",-1)])]),_:1})])]),t("main",J,[v.value?(l(),o("div",Q,[...e[5]||(e[5]=[t("p",{class:"text-gray-500"},"Lädt...",-1)])])):c.value?(l(),o("div",X,a(c.value),1)):(l(),o("div",Y,[t("div",tt,[t("div",et,[t("div",st,a(u.value.org_count),1),e[6]||(e[6]=t("div",{class:"text-sm text-gray-500"},"Organisationen",-1))]),t("div",at,[t("div",nt,a(u.value.user_count),1),e[7]||(e[7]=t("div",{class:"text-sm text-gray-500"},"Benutzer",-1))]),t("div",ot,[t("div",lt,a(u.value.order_count),1),e[8]||(e[8]=t("div",{class:"text-sm text-gray-500"},"Aufträge",-1))]),t("div",rt,[t("div",it,a(u.value.timesheet_count),1),e[9]||(e[9]=t("div",{class:"text-sm text-gray-500"},"Stundenzettel",-1))])]),t("div",dt,[e[11]||(e[11]=t("h2",{class:"text-lg font-semibold text-gray-900 dark:text-white mb-4"}," 📢 Broadcast an alle Kunden ",-1)),t("div",ct,[C(t("select",{"onUpdate:modelValue":e[0]||(e[0]=s=>y.value=s),class:"input w-32"},[...e[10]||(e[10]=[t("option",{value:"info"},"Info",-1),t("option",{value:"warning"},"Warnung",-1),t("option",{value:"success"},"Erfolg",-1)])],512),[[T,y.value]]),C(t("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>d.value=s),type:"text",class:"input flex-1",placeholder:"Nachricht eingeben..."},null,512),[[R,d.value]]),t("button",{onClick:L,disabled:x.value||!d.value.trim(),class:"btn btn-primary"},a(x.value?"Sendet...":"Senden"),9,ut)])]),t("div",gt,[e[13]||(e[13]=t("h2",{class:"text-lg font-semibold text-gray-900 dark:text-white mb-4"}," 🏢 Organisationen ",-1)),t("div",xt,[t("table",vt,[e[12]||(e[12]=t("thead",{class:"text-left text-sm text-gray-500 border-b dark:border-gray-700"},[t("tr",null,[t("th",{class:"pb-3 font-medium"},"Organisation"),t("th",{class:"pb-3 font-medium"},"Slug"),t("th",{class:"pb-3 font-medium"},"Plan"),t("th",{class:"pb-3 font-medium"},"Users"),t("th",{class:"pb-3 font-medium"},"Aufträge"),t("th",{class:"pb-3 font-medium"},"Erstellt"),t("th",{class:"pb-3 font-medium"})])],-1)),t("tbody",mt,[(l(!0),o(S,null,B(p.value,s=>{var _,z;return l(),o("tr",{key:s.id,class:"hover:bg-gray-50 dark:hover:bg-gray-800"},[t("td",yt,a(s.name),1),t("td",_t,a(s.slug),1),t("td",pt,[t("span",{class:W(j(((_=s.settings)==null?void 0:_.plan)||"free"))},a(((z=s.settings)==null?void 0:z.plan)||"free"),3)]),t("td",ft,a(s.user_count),1),t("td",bt,a(s.order_count),1),t("td",ht,a(N(s.created_at)),1),t("td",kt,[t("button",{onClick:qt=>U(s),class:"text-primary-600 hover:text-primary-800 text-sm"}," Details → ",8,wt)])])}),128))])])])])]))]),m.value?(l(),o("div",zt,[t("div",Ct,[t("div",St,[t("div",Bt,[t("h2",Dt,a((b=f.value)==null?void 0:b.name),1),t("button",{onClick:e[2]||(e[2]=s=>m.value=!1),class:"text-gray-400 hover:text-gray-600"}," ✕ ")]),i.value?(l(),o("div",At,[t("div",Et,[t("div",Ot,[t("div",Ut,a(((h=i.value.users)==null?void 0:h.length)||0),1),e[14]||(e[14]=t("div",{class:"text-sm text-gray-500"},"Benutzer",-1))]),t("div",Vt,[t("div",Lt,a(((k=i.value.stats)==null?void 0:k.order_count)||0),1),e[15]||(e[15]=t("div",{class:"text-sm text-gray-500"},"Aufträge",-1))]),t("div",Nt,[t("div",jt,a(((w=i.value.stats)==null?void 0:w.timesheet_count)||0),1),e[16]||(e[16]=t("div",{class:"text-sm text-gray-500"},"Stundenzettel",-1))])]),t("div",null,[e[17]||(e[17]=t("h3",{class:"font-semibold text-gray-900 dark:text-white mb-3"},"Benutzer",-1)),t("div",Mt,[(l(!0),o(S,null,B(i.value.users,s=>(l(),o("div",{key:s.id,class:"flex items-center justify-between p-3 bg-gray-50 dark:bg-gray-700 rounded-lg"},[t("div",null,[t("div",$t,[A(a(s.first_name)+" "+a(s.last_name)+" ",1),s.active?D("",!0):(l(),o("span",Ft,"(inaktiv)"))]),t("div",It,a(s.email)+" • "+a(s.role),1)]),t("button",{onClick:_=>V(s.id),class:"text-sm text-primary-600 hover:text-primary-800"}," Als User einloggen ",8,Pt)]))),128))])])])):(l(),o("div",Tt," Lädt... "))])])])):D("",!0)])}}});export{Wt as default}; diff --git a/dist/assets/AppLayout-BRNeJZ9j.js b/dist/assets/AppLayout-BRNeJZ9j.js deleted file mode 100644 index 8974c03..0000000 --- a/dist/assets/AppLayout-BRNeJZ9j.js +++ /dev/null @@ -1 +0,0 @@ -import{d as k,u as _,c as g,n as w,a as t,F as M,x as z,t as o,y as i,k as A,o as d,z as L,j as C,l as $,g as N,r as h,i as x,e as S,p as B,f as E}from"./index-Dox4jtA_.js";const V={class:"mt-6 px-3"},j={class:"text-xl"},D={class:"font-medium"},F={class:"absolute bottom-0 left-0 right-0 p-4 border-t border-gray-200 dark:border-gray-700"},H={class:"flex items-center gap-3"},I={class:"w-10 h-10 rounded-full bg-primary-100 dark:bg-primary-900 flex items-center justify-center"},O={class:"text-primary-600 dark:text-primary-300 font-medium"},R={class:"flex-1 min-w-0"},T={class:"text-sm font-medium text-gray-900 dark:text-white truncate"},U={class:"text-xs text-gray-500 dark:text-gray-400 capitalize"},W=k({__name:"AppSidebar",props:{open:{type:Boolean}},emits:["close"],setup(v){const n=N(),r=_(),a=A(()=>{const s=[{name:"Dashboard",href:"/",icon:"📊"},{name:"Aufträge",href:"/orders",icon:"📋"}];return r.canManageUsers&&s.push({name:"Mitarbeiter",href:"/users",icon:"👥"}),s.push({name:"Verfügbarkeit",href:"/availability",icon:"📅"},{name:"Stundenzettel",href:"/timesheets",icon:"⏱️"}),r.isChef&&s.push({name:"Module",href:"/modules",icon:"⚙️"}),s.push({name:"Einstellungen",href:"/settings",icon:"🔧"},{name:"Hilfe",href:"/help",icon:"📚"}),s});function m(s){return s==="/"?n.path==="/":n.path.startsWith(s)}return(s,e)=>{var l,p,b,f,u;const c=$("router-link");return d(),g("aside",{class:w(["fixed inset-y-0 left-0 z-50 w-64 bg-white dark:bg-gray-800 border-r border-gray-200 dark:border-gray-700 transform transition-transform lg:translate-x-0",v.open?"translate-x-0":"-translate-x-full"])},[e[1]||(e[1]=t("div",{class:"h-16 flex items-center px-6 border-b border-gray-200 dark:border-gray-700"},[t("span",{class:"text-2xl font-bold text-primary-600"},"🔐 SeCu")],-1)),t("nav",V,[(d(!0),g(M,null,z(a.value,y=>(d(),L(c,{key:y.href,to:y.href,class:w(["flex items-center gap-3 px-3 py-2 rounded-lg mb-1 transition-colors",m(y.href)?"bg-primary-100 text-primary-700 dark:bg-primary-900 dark:text-primary-200":"text-gray-600 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-700"]),onClick:e[0]||(e[0]=re=>s.$emit("close"))},{default:C(()=>[t("span",j,o(y.icon),1),t("span",D,o(y.name),1)]),_:2},1032,["to","class"]))),128))]),t("div",F,[t("div",H,[t("div",I,[t("span",O,o((p=(l=i(r).user)==null?void 0:l.first_name)==null?void 0:p[0])+o((f=(b=i(r).user)==null?void 0:b.last_name)==null?void 0:f[0]),1)]),t("div",R,[t("p",T,o(i(r).fullName),1),t("p",U,o((u=i(r).user)==null?void 0:u.role),1)])])])],2)}}}),q={class:"h-16 bg-white dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 flex items-center justify-between px-4 lg:px-6"},G={class:"flex items-center gap-2"},J={class:"text-xl"},K={class:"relative"},P={class:"w-8 h-8 rounded-full bg-primary-100 dark:bg-primary-900 flex items-center justify-center"},Q={class:"text-primary-600 dark:text-primary-300 text-sm font-medium"},X={class:"hidden sm:block text-sm font-medium text-gray-700 dark:text-gray-200"},Y=k({__name:"AppHeader",emits:["toggle-sidebar","logout"],setup(v){const n=_(),r=h(localStorage.getItem("darkMode")==="true"),a=h(!1);function m(){r.value=!r.value,localStorage.setItem("darkMode",String(r.value)),document.documentElement.classList.toggle("dark",r.value)}return r.value&&document.documentElement.classList.add("dark"),(s,e)=>{var l,p,b,f;const c=$("router-link");return d(),g("header",q,[t("button",{class:"lg:hidden p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700",onClick:e[0]||(e[0]=u=>s.$emit("toggle-sidebar"))},[...e[4]||(e[4]=[t("span",{class:"text-2xl"},"☰",-1)])]),e[7]||(e[7]=t("div",{class:"flex-1 lg:ml-0"},[t("h1",{class:"text-lg font-semibold text-gray-900 dark:text-white hidden lg:block"}," Mitarbeiterverwaltung ")],-1)),t("div",G,[t("button",{class:"p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700",onClick:m},[t("span",J,o(r.value?"☀️":"🌙"),1)]),t("div",K,[t("button",{class:"flex items-center gap-2 p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700",onClick:e[1]||(e[1]=u=>a.value=!a.value)},[t("div",P,[t("span",Q,o((p=(l=i(n).user)==null?void 0:l.first_name)==null?void 0:p[0])+o((f=(b=i(n).user)==null?void 0:b.last_name)==null?void 0:f[0]),1)]),t("span",X,o(i(n).fullName),1)]),a.value?(d(),g("div",{key:0,class:"absolute right-0 mt-2 w-48 bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 py-1 z-50",onClick:e[3]||(e[3]=u=>a.value=!1)},[x(c,{to:"/settings",class:"block px-4 py-2 text-sm text-gray-700 dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-700"},{default:C(()=>[...e[5]||(e[5]=[B(" ⚙️ Einstellungen ",-1)])]),_:1}),e[6]||(e[6]=t("hr",{class:"my-1 border-gray-200 dark:border-gray-700"},null,-1)),t("button",{class:"w-full text-left px-4 py-2 text-sm text-red-600 hover:bg-red-50 dark:hover:bg-red-900/20",onClick:e[2]||(e[2]=u=>s.$emit("logout"))}," 🚪 Abmelden ")])):S("",!0)])])])}}}),Z={class:"min-h-screen bg-gray-50 dark:bg-gray-900"},ee={class:"lg:pl-64"},te={class:"p-6"},ae=k({__name:"AppLayout",setup(v){const n=_(),r=E(),a=h(!1);async function m(){await n.logout(),r.push("/login")}return(s,e)=>{const c=$("router-view");return d(),g("div",Z,[a.value?(d(),g("div",{key:0,class:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:e[0]||(e[0]=l=>a.value=!1)})):S("",!0),x(W,{open:a.value,onClose:e[1]||(e[1]=l=>a.value=!1)},null,8,["open"]),t("div",ee,[x(Y,{onToggleSidebar:e[2]||(e[2]=l=>a.value=!a.value),onLogout:m}),t("main",te,[x(c)])])])}}});export{ae as default}; diff --git a/dist/assets/AppLayout-Dn1Dax5w.js b/dist/assets/AppLayout-Dn1Dax5w.js new file mode 100644 index 0000000..36bc847 --- /dev/null +++ b/dist/assets/AppLayout-Dn1Dax5w.js @@ -0,0 +1 @@ +import{d as v,u as _,c as g,n as w,a as t,F as M,x as z,t as o,y as i,k as A,o as d,z as j,j as C,l as $,g as L,r as k,i as x,e as S,p as N,f as B}from"./index-CVUlgynU.js";const E={class:"mt-6 px-3"},V={class:"text-xl"},D={class:"font-medium"},O={class:"absolute bottom-0 left-0 right-0 p-4 border-t border-gray-200 dark:border-gray-700"},F={class:"flex items-center gap-3"},H={class:"w-10 h-10 rounded-full bg-primary-100 dark:bg-primary-900 flex items-center justify-center"},I={class:"text-primary-600 dark:text-primary-300 font-medium"},R={class:"flex-1 min-w-0"},T={class:"text-sm font-medium text-gray-900 dark:text-white truncate"},q={class:"text-xs text-gray-500 dark:text-gray-400 capitalize"},Q=v({__name:"AppSidebar",props:{open:{type:Boolean}},emits:["close"],setup(h){const n=L(),r=_(),a=A(()=>{const s=[{name:"Dashboard",href:"/",icon:"📊"},{name:"Aufträge",href:"/orders",icon:"📋"}];return r.canManageUsers&&s.push({name:"Mitarbeiter",href:"/users",icon:"👥"}),s.push({name:"Verfügbarkeit",href:"/availability",icon:"📅"},{name:"Stundenzettel",href:"/timesheets",icon:"⏱️"},{name:"Qualifikationen",href:"/qualifications",icon:"🎓"},{name:"Objekte",href:"/objects",icon:"🏢"}),r.isChef&&s.push({name:"Module",href:"/modules",icon:"⚙️"}),s.push({name:"Einstellungen",href:"/settings",icon:"🔧"},{name:"Hilfe",href:"/help",icon:"📚"}),s});function m(s){return s==="/"?n.path==="/":n.path.startsWith(s)}return(s,e)=>{var l,p,f,b,u;const c=$("router-link");return d(),g("aside",{class:w(["fixed inset-y-0 left-0 z-50 w-64 bg-white dark:bg-gray-800 border-r border-gray-200 dark:border-gray-700 transform transition-transform lg:translate-x-0",h.open?"translate-x-0":"-translate-x-full"])},[e[1]||(e[1]=t("div",{class:"h-16 flex items-center px-6 border-b border-gray-200 dark:border-gray-700"},[t("span",{class:"text-2xl font-bold text-primary-600"},"🔐 SeCu")],-1)),t("nav",E,[(d(!0),g(M,null,z(a.value,y=>(d(),j(c,{key:y.href,to:y.href,class:w(["flex items-center gap-3 px-3 py-2 rounded-lg mb-1 transition-colors",m(y.href)?"bg-primary-100 text-primary-700 dark:bg-primary-900 dark:text-primary-200":"text-gray-600 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-700"]),onClick:e[0]||(e[0]=re=>s.$emit("close"))},{default:C(()=>[t("span",V,o(y.icon),1),t("span",D,o(y.name),1)]),_:2},1032,["to","class"]))),128))]),t("div",O,[t("div",F,[t("div",H,[t("span",I,o((p=(l=i(r).user)==null?void 0:l.first_name)==null?void 0:p[0])+o((b=(f=i(r).user)==null?void 0:f.last_name)==null?void 0:b[0]),1)]),t("div",R,[t("p",T,o(i(r).fullName),1),t("p",q,o((u=i(r).user)==null?void 0:u.role),1)])])])],2)}}}),U={class:"h-16 bg-white dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 flex items-center justify-between px-4 lg:px-6"},W={class:"flex items-center gap-2"},G={class:"text-xl"},J={class:"relative"},K={class:"w-8 h-8 rounded-full bg-primary-100 dark:bg-primary-900 flex items-center justify-center"},P={class:"text-primary-600 dark:text-primary-300 text-sm font-medium"},X={class:"hidden sm:block text-sm font-medium text-gray-700 dark:text-gray-200"},Y=v({__name:"AppHeader",emits:["toggle-sidebar","logout"],setup(h){const n=_(),r=k(localStorage.getItem("darkMode")==="true"),a=k(!1);function m(){r.value=!r.value,localStorage.setItem("darkMode",String(r.value)),document.documentElement.classList.toggle("dark",r.value)}return r.value&&document.documentElement.classList.add("dark"),(s,e)=>{var l,p,f,b;const c=$("router-link");return d(),g("header",U,[t("button",{class:"lg:hidden p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700",onClick:e[0]||(e[0]=u=>s.$emit("toggle-sidebar"))},[...e[4]||(e[4]=[t("span",{class:"text-2xl"},"☰",-1)])]),e[7]||(e[7]=t("div",{class:"flex-1 lg:ml-0"},[t("h1",{class:"text-lg font-semibold text-gray-900 dark:text-white hidden lg:block"}," Mitarbeiterverwaltung ")],-1)),t("div",W,[t("button",{class:"p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700",onClick:m},[t("span",G,o(r.value?"☀️":"🌙"),1)]),t("div",J,[t("button",{class:"flex items-center gap-2 p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700",onClick:e[1]||(e[1]=u=>a.value=!a.value)},[t("div",K,[t("span",P,o((p=(l=i(n).user)==null?void 0:l.first_name)==null?void 0:p[0])+o((b=(f=i(n).user)==null?void 0:f.last_name)==null?void 0:b[0]),1)]),t("span",X,o(i(n).fullName),1)]),a.value?(d(),g("div",{key:0,class:"absolute right-0 mt-2 w-48 bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 py-1 z-50",onClick:e[3]||(e[3]=u=>a.value=!1)},[x(c,{to:"/settings",class:"block px-4 py-2 text-sm text-gray-700 dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-700"},{default:C(()=>[...e[5]||(e[5]=[N(" ⚙️ Einstellungen ",-1)])]),_:1}),e[6]||(e[6]=t("hr",{class:"my-1 border-gray-200 dark:border-gray-700"},null,-1)),t("button",{class:"w-full text-left px-4 py-2 text-sm text-red-600 hover:bg-red-50 dark:hover:bg-red-900/20",onClick:e[2]||(e[2]=u=>s.$emit("logout"))}," 🚪 Abmelden ")])):S("",!0)])])])}}}),Z={class:"min-h-screen bg-gray-50 dark:bg-gray-900"},ee={class:"lg:pl-64"},te={class:"p-6"},ae=v({__name:"AppLayout",setup(h){const n=_(),r=B(),a=k(!1);async function m(){await n.logout(),r.push("/login")}return(s,e)=>{const c=$("router-view");return d(),g("div",Z,[a.value?(d(),g("div",{key:0,class:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:e[0]||(e[0]=l=>a.value=!1)})):S("",!0),x(Q,{open:a.value,onClose:e[1]||(e[1]=l=>a.value=!1)},null,8,["open"]),t("div",ee,[x(Y,{onToggleSidebar:e[2]||(e[2]=l=>a.value=!a.value),onLogout:m}),t("main",te,[x(c)])])])}}});export{ae as default}; diff --git a/dist/assets/AvailabilityView-DWb2J76b.js b/dist/assets/AvailabilityView-B7DXJOIF.js similarity index 97% rename from dist/assets/AvailabilityView-DWb2J76b.js rename to dist/assets/AvailabilityView-B7DXJOIF.js index 9901111..9cdb9c9 100644 --- a/dist/assets/AvailabilityView-DWb2J76b.js +++ b/dist/assets/AvailabilityView-B7DXJOIF.js @@ -1 +1 @@ -import{d as D,u as S,q as M,m as h,c as l,a as o,t as u,F,x as A,A as C,r as v,k as m,o as i,n as L}from"./index-Dox4jtA_.js";const O={class:"space-y-6"},V={class:"card"},E={class:"flex items-center justify-between mb-6"},I={class:"text-lg font-semibold"},W={key:0,class:"text-center py-8 text-gray-500"},Y={key:1,class:"grid grid-cols-7 gap-2"},B={class:"text-xs text-gray-500 mb-1"},N=["onClick"],j=D({__name:"AvailabilityView",setup(T){const f=S(),a=v(new Date),y=v([]),g=v(!0),p=m(()=>{const n=a.value.getFullYear(),e=a.value.getMonth(),t=new Date(n,e+1,0).getDate();return Array.from({length:t},(s,r)=>{const d=new Date(n,e,r+1);return{date:d.toISOString().split("T")[0],dayOfWeek:d.toLocaleDateString("de-DE",{weekday:"short"}),day:r+1,isWeekend:d.getDay()===0||d.getDay()===6}})}),_=m(()=>a.value.toLocaleDateString("de-DE",{month:"long",year:"numeric"}));M(c);async function c(){g.value=!0;const n=a.value.getFullYear(),e=a.value.getMonth(),t=new Date(n,e,1).toISOString().split("T")[0],s=new Date(n,e+1,0).toISOString().split("T")[0];try{const r=await h.get(`/availability?from=${t}&to=${s}`);y.value=r.data.availability}catch(r){console.error(r)}finally{g.value=!1}}function b(n){return y.value.find(e=>{var t;return e.date===n&&e.user_id===((t=f.user)==null?void 0:t.id)})}async function k(n){const e=b(n),t=!(e!=null&&e.available);try{await h.post("/availability",{date:n,available:t}),await c()}catch(s){alert(s instanceof Error?s.message:"Fehler")}}function x(){a.value=new Date(a.value.getFullYear(),a.value.getMonth()-1),c()}function w(){a.value=new Date(a.value.getFullYear(),a.value.getMonth()+1),c()}return(n,e)=>(i(),l("div",O,[e[1]||(e[1]=o("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"📅 Verfügbarkeit",-1)),o("div",V,[o("div",E,[o("button",{class:"btn btn-secondary",onClick:x},"←"),o("h2",I,u(_.value),1),o("button",{class:"btn btn-secondary",onClick:w},"→")]),g.value?(i(),l("div",W,"Lädt...")):(i(),l("div",Y,[(i(!0),l(F,null,A(p.value,t=>{var s;return i(),l("div",{key:t.date,class:"text-center"},[o("div",B,u(t.dayOfWeek),1),o("button",{class:L(["w-10 h-10 rounded-lg font-medium transition-colors",t.isWeekend?"bg-gray-100 dark:bg-gray-700":"",(s=b(t.date))!=null&&s.available?"bg-green-500 text-white hover:bg-green-600":"bg-gray-200 dark:bg-gray-600 hover:bg-gray-300 dark:hover:bg-gray-500"]),onClick:r=>k(t.date)},u(t.day),11,N)])}),128))])),e[0]||(e[0]=C('
Verfügbar
Nicht gemeldet
',1))])]))}});export{j as default}; +import{d as D,u as S,q as M,m as h,c as l,a as o,t as u,F,x as A,A as C,r as v,k as m,o as i,n as L}from"./index-CVUlgynU.js";const O={class:"space-y-6"},V={class:"card"},E={class:"flex items-center justify-between mb-6"},I={class:"text-lg font-semibold"},W={key:0,class:"text-center py-8 text-gray-500"},Y={key:1,class:"grid grid-cols-7 gap-2"},B={class:"text-xs text-gray-500 mb-1"},N=["onClick"],j=D({__name:"AvailabilityView",setup(T){const f=S(),a=v(new Date),y=v([]),g=v(!0),p=m(()=>{const n=a.value.getFullYear(),e=a.value.getMonth(),t=new Date(n,e+1,0).getDate();return Array.from({length:t},(s,r)=>{const d=new Date(n,e,r+1);return{date:d.toISOString().split("T")[0],dayOfWeek:d.toLocaleDateString("de-DE",{weekday:"short"}),day:r+1,isWeekend:d.getDay()===0||d.getDay()===6}})}),_=m(()=>a.value.toLocaleDateString("de-DE",{month:"long",year:"numeric"}));M(c);async function c(){g.value=!0;const n=a.value.getFullYear(),e=a.value.getMonth(),t=new Date(n,e,1).toISOString().split("T")[0],s=new Date(n,e+1,0).toISOString().split("T")[0];try{const r=await h.get(`/availability?from=${t}&to=${s}`);y.value=r.data.availability}catch(r){console.error(r)}finally{g.value=!1}}function b(n){return y.value.find(e=>{var t;return e.date===n&&e.user_id===((t=f.user)==null?void 0:t.id)})}async function k(n){const e=b(n),t=!(e!=null&&e.available);try{await h.post("/availability",{date:n,available:t}),await c()}catch(s){alert(s instanceof Error?s.message:"Fehler")}}function x(){a.value=new Date(a.value.getFullYear(),a.value.getMonth()-1),c()}function w(){a.value=new Date(a.value.getFullYear(),a.value.getMonth()+1),c()}return(n,e)=>(i(),l("div",O,[e[1]||(e[1]=o("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"📅 Verfügbarkeit",-1)),o("div",V,[o("div",E,[o("button",{class:"btn btn-secondary",onClick:x},"←"),o("h2",I,u(_.value),1),o("button",{class:"btn btn-secondary",onClick:w},"→")]),g.value?(i(),l("div",W,"Lädt...")):(i(),l("div",Y,[(i(!0),l(F,null,A(p.value,t=>{var s;return i(),l("div",{key:t.date,class:"text-center"},[o("div",B,u(t.dayOfWeek),1),o("button",{class:L(["w-10 h-10 rounded-lg font-medium transition-colors",t.isWeekend?"bg-gray-100 dark:bg-gray-700":"",(s=b(t.date))!=null&&s.available?"bg-green-500 text-white hover:bg-green-600":"bg-gray-200 dark:bg-gray-600 hover:bg-gray-300 dark:hover:bg-gray-500"]),onClick:r=>k(t.date)},u(t.day),11,N)])}),128))])),e[0]||(e[0]=C('
Verfügbar
Nicht gemeldet
',1))])]))}});export{j as default}; diff --git a/dist/assets/DashboardView-BW8VodPh.js b/dist/assets/DashboardView-Dm3JX8-R.js similarity index 98% rename from dist/assets/DashboardView-BW8VodPh.js rename to dist/assets/DashboardView-Dm3JX8-R.js index 3ca15f5..01f145c 100644 --- a/dist/assets/DashboardView-BW8VodPh.js +++ b/dist/assets/DashboardView-Dm3JX8-R.js @@ -1 +1 @@ -import{d as k,u as w,q as A,m as u,c as o,a as e,t as r,y as x,e as y,n as p,i as T,j as v,F as O,x as S,r as m,k as j,l as M,o as d,p as B,z as C}from"./index-Dox4jtA_.js";const V={class:"space-y-6"},z={class:"card bg-gradient-to-r from-primary-500 to-primary-700 text-white"},D={class:"text-2xl font-bold"},N={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4"},G={class:"card"},L={class:"flex items-center gap-4"},R={class:"text-2xl font-bold text-gray-900 dark:text-white"},$={key:0,class:"card"},E={class:"flex items-center gap-4"},F={class:"text-2xl font-bold text-gray-900 dark:text-white"},H={key:1,class:"card"},I={class:"flex items-center gap-4"},U={class:"text-2xl font-bold text-gray-900 dark:text-white"},q={class:"card"},J={class:"flex items-center gap-4"},K={class:"text-2xl"},W={class:"text-lg font-medium text-gray-900 dark:text-white"},P={class:"card"},Q={class:"flex items-center justify-between mb-4"},X={key:0,class:"text-center py-8 text-gray-500"},Y={key:1,class:"text-center py-8 text-gray-500"},Z={key:2,class:"space-y-3"},ee={class:"flex items-center justify-between"},te={class:"font-medium text-gray-900 dark:text-white"},se={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},ne=k({__name:"DashboardView",setup(ae){const i=w(),n=m({openOrders:0,myOrders:0,pendingTimesheets:0,availableToday:!1}),g=m([]),b=m(!0),f=j(()=>{const s=new Date().getHours();return s<12?"Guten Morgen":s<18?"Guten Tag":"Guten Abend"});A(async()=>{try{const s=await u.get("/orders");if(g.value=s.data.orders.slice(0,5),n.value.openOrders=s.data.orders.filter(l=>["published","in_progress"].includes(l.status)).length,i.isMitarbeiter&&(n.value.myOrders=s.data.orders.length),i.canManageUsers){const l=await u.get("/timesheets?status=pending");n.value.pendingTimesheets=l.data.timesheets.length}const t=new Date().toISOString().split("T")[0],c=await u.get(`/availability?from=${t}&to=${t}`);n.value.availableToday=c.data.availability.some(l=>{var a;return l.available&&l.user_id===((a=i.user)==null?void 0:a.id)})}catch(s){console.error("Dashboard load error:",s)}finally{b.value=!1}});function _(s){return{draft:"badge-secondary",published:"badge-primary",in_progress:"badge-warning",completed:"badge-success",cancelled:"badge-danger"}[s]||"badge-secondary"}function h(s){return{draft:"Entwurf",published:"Veröffentlicht",in_progress:"In Bearbeitung",completed:"Abgeschlossen",cancelled:"Abgesagt"}[s]||s}return(s,t)=>{var l;const c=M("router-link");return d(),o("div",V,[e("div",z,[e("h1",D,r(f.value)+", "+r((l=x(i).user)==null?void 0:l.first_name)+"! 👋 ",1),t[0]||(t[0]=e("p",{class:"mt-1 text-primary-100"}," Willkommen zurück bei SeCu. ",-1))]),e("div",N,[e("div",G,[e("div",L,[t[2]||(t[2]=e("div",{class:"w-12 h-12 rounded-lg bg-blue-100 dark:bg-blue-900 flex items-center justify-center"},[e("span",{class:"text-2xl"},"📋")],-1)),e("div",null,[t[1]||(t[1]=e("p",{class:"text-sm text-gray-500 dark:text-gray-400"},"Offene Aufträge",-1)),e("p",R,r(n.value.openOrders),1)])])]),x(i).isMitarbeiter?(d(),o("div",$,[e("div",E,[t[4]||(t[4]=e("div",{class:"w-12 h-12 rounded-lg bg-green-100 dark:bg-green-900 flex items-center justify-center"},[e("span",{class:"text-2xl"},"✅")],-1)),e("div",null,[t[3]||(t[3]=e("p",{class:"text-sm text-gray-500 dark:text-gray-400"},"Meine Aufträge",-1)),e("p",F,r(n.value.myOrders),1)])])])):y("",!0),x(i).canManageUsers?(d(),o("div",H,[e("div",I,[t[6]||(t[6]=e("div",{class:"w-12 h-12 rounded-lg bg-yellow-100 dark:bg-yellow-900 flex items-center justify-center"},[e("span",{class:"text-2xl"},"⏱️")],-1)),e("div",null,[t[5]||(t[5]=e("p",{class:"text-sm text-gray-500 dark:text-gray-400"},"Ausstehende Stundenzettel",-1)),e("p",U,r(n.value.pendingTimesheets),1)])])])):y("",!0),e("div",q,[e("div",J,[e("div",{class:p(["w-12 h-12 rounded-lg flex items-center justify-center",n.value.availableToday?"bg-green-100 dark:bg-green-900":"bg-gray-100 dark:bg-gray-700"])},[e("span",K,r(n.value.availableToday?"✅":"❓"),1)],2),e("div",null,[t[7]||(t[7]=e("p",{class:"text-sm text-gray-500 dark:text-gray-400"},"Heute verfügbar",-1)),e("p",W,r(n.value.availableToday?"Ja":"Nicht gemeldet"),1)])])])]),e("div",P,[e("div",Q,[t[9]||(t[9]=e("h2",{class:"text-lg font-semibold text-gray-900 dark:text-white"}," Aktuelle Aufträge ",-1)),T(c,{to:"/orders",class:"text-sm text-primary-600 hover:text-primary-700"},{default:v(()=>[...t[8]||(t[8]=[B(" Alle anzeigen → ",-1)])]),_:1})]),b.value?(d(),o("div",X," Lädt... ")):g.value.length===0?(d(),o("div",Y," Keine Aufträge vorhanden ")):(d(),o("div",Z,[(d(!0),o(O,null,S(g.value,a=>(d(),C(c,{key:a.id,to:`/orders/${a.id}`,class:"block p-4 rounded-lg border border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors"},{default:v(()=>[e("div",ee,[e("div",null,[e("h3",te," #"+r(a.number)+" - "+r(a.title),1),a.location?(d(),o("p",se," 📍 "+r(a.location),1)):y("",!0)]),e("span",{class:p(["badge",_(a.status)])},r(h(a.status)),3)])]),_:2},1032,["to"]))),128))]))])])}}});export{ne as default}; +import{d as k,u as w,q as A,m as u,c as o,a as e,t as r,y as x,e as y,n as p,i as T,j as v,F as O,x as S,r as m,k as j,l as M,o as d,p as B,z as C}from"./index-CVUlgynU.js";const V={class:"space-y-6"},z={class:"card bg-gradient-to-r from-primary-500 to-primary-700 text-white"},D={class:"text-2xl font-bold"},N={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4"},G={class:"card"},L={class:"flex items-center gap-4"},R={class:"text-2xl font-bold text-gray-900 dark:text-white"},$={key:0,class:"card"},E={class:"flex items-center gap-4"},F={class:"text-2xl font-bold text-gray-900 dark:text-white"},H={key:1,class:"card"},I={class:"flex items-center gap-4"},U={class:"text-2xl font-bold text-gray-900 dark:text-white"},q={class:"card"},J={class:"flex items-center gap-4"},K={class:"text-2xl"},W={class:"text-lg font-medium text-gray-900 dark:text-white"},P={class:"card"},Q={class:"flex items-center justify-between mb-4"},X={key:0,class:"text-center py-8 text-gray-500"},Y={key:1,class:"text-center py-8 text-gray-500"},Z={key:2,class:"space-y-3"},ee={class:"flex items-center justify-between"},te={class:"font-medium text-gray-900 dark:text-white"},se={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},ne=k({__name:"DashboardView",setup(ae){const i=w(),n=m({openOrders:0,myOrders:0,pendingTimesheets:0,availableToday:!1}),g=m([]),b=m(!0),f=j(()=>{const s=new Date().getHours();return s<12?"Guten Morgen":s<18?"Guten Tag":"Guten Abend"});A(async()=>{try{const s=await u.get("/orders");if(g.value=s.data.orders.slice(0,5),n.value.openOrders=s.data.orders.filter(l=>["published","in_progress"].includes(l.status)).length,i.isMitarbeiter&&(n.value.myOrders=s.data.orders.length),i.canManageUsers){const l=await u.get("/timesheets?status=pending");n.value.pendingTimesheets=l.data.timesheets.length}const t=new Date().toISOString().split("T")[0],c=await u.get(`/availability?from=${t}&to=${t}`);n.value.availableToday=c.data.availability.some(l=>{var a;return l.available&&l.user_id===((a=i.user)==null?void 0:a.id)})}catch(s){console.error("Dashboard load error:",s)}finally{b.value=!1}});function _(s){return{draft:"badge-secondary",published:"badge-primary",in_progress:"badge-warning",completed:"badge-success",cancelled:"badge-danger"}[s]||"badge-secondary"}function h(s){return{draft:"Entwurf",published:"Veröffentlicht",in_progress:"In Bearbeitung",completed:"Abgeschlossen",cancelled:"Abgesagt"}[s]||s}return(s,t)=>{var l;const c=M("router-link");return d(),o("div",V,[e("div",z,[e("h1",D,r(f.value)+", "+r((l=x(i).user)==null?void 0:l.first_name)+"! 👋 ",1),t[0]||(t[0]=e("p",{class:"mt-1 text-primary-100"}," Willkommen zurück bei SeCu. ",-1))]),e("div",N,[e("div",G,[e("div",L,[t[2]||(t[2]=e("div",{class:"w-12 h-12 rounded-lg bg-blue-100 dark:bg-blue-900 flex items-center justify-center"},[e("span",{class:"text-2xl"},"📋")],-1)),e("div",null,[t[1]||(t[1]=e("p",{class:"text-sm text-gray-500 dark:text-gray-400"},"Offene Aufträge",-1)),e("p",R,r(n.value.openOrders),1)])])]),x(i).isMitarbeiter?(d(),o("div",$,[e("div",E,[t[4]||(t[4]=e("div",{class:"w-12 h-12 rounded-lg bg-green-100 dark:bg-green-900 flex items-center justify-center"},[e("span",{class:"text-2xl"},"✅")],-1)),e("div",null,[t[3]||(t[3]=e("p",{class:"text-sm text-gray-500 dark:text-gray-400"},"Meine Aufträge",-1)),e("p",F,r(n.value.myOrders),1)])])])):y("",!0),x(i).canManageUsers?(d(),o("div",H,[e("div",I,[t[6]||(t[6]=e("div",{class:"w-12 h-12 rounded-lg bg-yellow-100 dark:bg-yellow-900 flex items-center justify-center"},[e("span",{class:"text-2xl"},"⏱️")],-1)),e("div",null,[t[5]||(t[5]=e("p",{class:"text-sm text-gray-500 dark:text-gray-400"},"Ausstehende Stundenzettel",-1)),e("p",U,r(n.value.pendingTimesheets),1)])])])):y("",!0),e("div",q,[e("div",J,[e("div",{class:p(["w-12 h-12 rounded-lg flex items-center justify-center",n.value.availableToday?"bg-green-100 dark:bg-green-900":"bg-gray-100 dark:bg-gray-700"])},[e("span",K,r(n.value.availableToday?"✅":"❓"),1)],2),e("div",null,[t[7]||(t[7]=e("p",{class:"text-sm text-gray-500 dark:text-gray-400"},"Heute verfügbar",-1)),e("p",W,r(n.value.availableToday?"Ja":"Nicht gemeldet"),1)])])])]),e("div",P,[e("div",Q,[t[9]||(t[9]=e("h2",{class:"text-lg font-semibold text-gray-900 dark:text-white"}," Aktuelle Aufträge ",-1)),T(c,{to:"/orders",class:"text-sm text-primary-600 hover:text-primary-700"},{default:v(()=>[...t[8]||(t[8]=[B(" Alle anzeigen → ",-1)])]),_:1})]),b.value?(d(),o("div",X," Lädt... ")):g.value.length===0?(d(),o("div",Y," Keine Aufträge vorhanden ")):(d(),o("div",Z,[(d(!0),o(O,null,S(g.value,a=>(d(),C(c,{key:a.id,to:`/orders/${a.id}`,class:"block p-4 rounded-lg border border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors"},{default:v(()=>[e("div",ee,[e("div",null,[e("h3",te," #"+r(a.number)+" - "+r(a.title),1),a.location?(d(),o("p",se," 📍 "+r(a.location),1)):y("",!0)]),e("span",{class:p(["badge",_(a.status)])},r(h(a.status)),3)])]),_:2},1032,["to"]))),128))]))])])}}});export{ne as default}; diff --git a/dist/assets/HelpView-BR-Y2gYt.js b/dist/assets/HelpView-D57TqZOy.js similarity index 99% rename from dist/assets/HelpView-BR-Y2gYt.js rename to dist/assets/HelpView-D57TqZOy.js index c888067..e0cde91 100644 --- a/dist/assets/HelpView-BR-Y2gYt.js +++ b/dist/assets/HelpView-D57TqZOy.js @@ -1,4 +1,4 @@ -import{d as K,c as a,a as n,e as w,b as C,v as F,F as A,x,t as r,r as f,k as m,o as s}from"./index-Dox4jtA_.js";const G={class:"space-y-6"},E={class:"flex items-center justify-between"},V={class:"flex items-center gap-3"},W={class:"relative"},N={key:0,class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},$=["onClick"],Z={class:"text-3xl mb-3"},I={class:"text-lg font-semibold mb-1 text-gray-900 dark:text-white"},L={class:"text-sm text-gray-500 dark:text-gray-400"},T={class:"text-xs text-gray-400 mt-2"},H={key:1,class:"space-y-4"},O={class:"card bg-gray-50 dark:bg-gray-800"},R={class:"flex items-center gap-3"},q={class:"text-3xl"},j={class:"text-xl font-semibold text-gray-900 dark:text-white"},U={class:"text-sm text-gray-500 dark:text-gray-400"},J={class:"grid gap-3"},Q=["onClick"],X={class:"text-2xl"},Y={class:"font-medium text-gray-900 dark:text-white"},ee={key:2,class:"card"},ne={class:"flex items-center gap-3 mb-6 pb-4 border-b dark:border-gray-700"},te={class:"text-3xl"},ie={class:"text-xl font-semibold text-gray-900 dark:text-white"},re=["innerHTML"],le=K({__name:"HelpView",setup(ae){const l=f(""),u=f(null),o=f(null),g=[{id:"getting-started",name:"Erste Schritte",icon:"🚀",description:"Grundlagen und Einrichtung",articles:[{id:"overview",title:"Übersicht",icon:"📋",content:` +import{d as K,c as a,a as n,e as w,b as C,v as F,F as A,x,t as r,r as f,k as m,o as s}from"./index-CVUlgynU.js";const G={class:"space-y-6"},E={class:"flex items-center justify-between"},V={class:"flex items-center gap-3"},W={class:"relative"},N={key:0,class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},$=["onClick"],Z={class:"text-3xl mb-3"},I={class:"text-lg font-semibold mb-1 text-gray-900 dark:text-white"},L={class:"text-sm text-gray-500 dark:text-gray-400"},T={class:"text-xs text-gray-400 mt-2"},H={key:1,class:"space-y-4"},O={class:"card bg-gray-50 dark:bg-gray-800"},R={class:"flex items-center gap-3"},q={class:"text-3xl"},j={class:"text-xl font-semibold text-gray-900 dark:text-white"},U={class:"text-sm text-gray-500 dark:text-gray-400"},J={class:"grid gap-3"},Q=["onClick"],X={class:"text-2xl"},Y={class:"font-medium text-gray-900 dark:text-white"},ee={key:2,class:"card"},ne={class:"flex items-center gap-3 mb-6 pb-4 border-b dark:border-gray-700"},te={class:"text-3xl"},ie={class:"text-xl font-semibold text-gray-900 dark:text-white"},re=["innerHTML"],le=K({__name:"HelpView",setup(ae){const l=f(""),u=f(null),o=f(null),g=[{id:"getting-started",name:"Erste Schritte",icon:"🚀",description:"Grundlagen und Einrichtung",articles:[{id:"overview",title:"Übersicht",icon:"📋",content:` ## Was ist SeCu? SeCu ist eine modulare Mitarbeiterverwaltung speziell für Sicherheitsunternehmen. Die Software hilft Ihnen bei: diff --git a/dist/assets/LoginView-CeGTfWRI.js b/dist/assets/LoginView-Do3PQjab.js similarity index 98% rename from dist/assets/LoginView-CeGTfWRI.js rename to dist/assets/LoginView-Do3PQjab.js index 7d23dd2..acf9343 100644 --- a/dist/assets/LoginView-CeGTfWRI.js +++ b/dist/assets/LoginView-Do3PQjab.js @@ -1 +1 @@ -import{d as h,u as q,r as a,c,a as e,t as g,w as B,b as r,v as n,F as N,e as k,f as R,g as U,o as f}from"./index-Dox4jtA_.js";const A={class:"min-h-screen flex items-center justify-center bg-gray-50 dark:bg-gray-900 py-12 px-4 sm:px-6 lg:px-8"},M={class:"max-w-md w-full space-y-8"},C={class:"card"},E={class:"text-xl font-semibold text-gray-900 dark:text-white mb-6"},D={class:"grid grid-cols-2 gap-4"},F=["placeholder"],O={key:1,class:"p-3 bg-red-50 dark:bg-red-900/20 text-red-600 dark:text-red-400 rounded-lg text-sm"},T=["disabled"],j={class:"mt-4 text-center"},L=h({__name:"LoginView",setup(z){const w=R(),V=U(),m=q(),o=a(""),u=a(""),i=a(m.orgSlug||""),p=a(""),v=a(!1),s=a(!1),x=a(""),y=a(""),b=a("");async function S(){p.value="",v.value=!0;try{s.value?(await m.register({email:o.value,password:u.value,first_name:x.value,last_name:y.value,phone:b.value,org_slug:i.value}),await m.login(o.value,u.value,i.value)):await m.login(o.value,u.value,i.value);const d=V.query.redirect||"/";w.push(d)}catch(d){p.value=d instanceof Error?d.message:"Anmeldung fehlgeschlagen"}finally{v.value=!1}}return(d,t)=>(f(),c("div",A,[e("div",M,[t[13]||(t[13]=e("div",{class:"text-center"},[e("h1",{class:"text-4xl font-bold text-primary-600"},"🔐 SeCu"),e("p",{class:"mt-2 text-gray-600 dark:text-gray-400"},"Mitarbeiterverwaltung")],-1)),e("div",C,[e("h2",E,g(s.value?"Registrieren":"Anmelden"),1),e("form",{onSubmit:B(S,["prevent"]),class:"space-y-4"},[e("div",null,[t[7]||(t[7]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Organisation ",-1)),r(e("input",{"onUpdate:modelValue":t[0]||(t[0]=l=>i.value=l),type:"text",required:"",class:"input",placeholder:"z.B. demo"},null,512),[[n,i.value]])]),e("div",null,[t[8]||(t[8]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," E-Mail ",-1)),r(e("input",{"onUpdate:modelValue":t[1]||(t[1]=l=>o.value=l),type:"email",required:"",class:"input",placeholder:"name@firma.de"},null,512),[[n,o.value]])]),s.value?(f(),c(N,{key:0},[e("div",D,[e("div",null,[t[9]||(t[9]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Vorname ",-1)),r(e("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>x.value=l),type:"text",required:"",class:"input"},null,512),[[n,x.value]])]),e("div",null,[t[10]||(t[10]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Nachname ",-1)),r(e("input",{"onUpdate:modelValue":t[3]||(t[3]=l=>y.value=l),type:"text",required:"",class:"input"},null,512),[[n,y.value]])])]),e("div",null,[t[11]||(t[11]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Telefon ",-1)),r(e("input",{"onUpdate:modelValue":t[4]||(t[4]=l=>b.value=l),type:"tel",class:"input",placeholder:"Optional"},null,512),[[n,b.value]])])],64)):k("",!0),e("div",null,[t[12]||(t[12]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Passwort ",-1)),r(e("input",{"onUpdate:modelValue":t[5]||(t[5]=l=>u.value=l),type:"password",required:"",class:"input",placeholder:s.value?"Mindestens 8 Zeichen":""},null,8,F),[[n,u.value]])]),p.value?(f(),c("div",O,g(p.value),1)):k("",!0),e("button",{type:"submit",disabled:v.value,class:"btn btn-primary w-full"},g(v.value?"Bitte warten...":s.value?"Registrieren":"Anmelden"),9,T)],32),e("div",j,[e("button",{type:"button",class:"text-sm text-primary-600 hover:text-primary-700",onClick:t[6]||(t[6]=l=>s.value=!s.value)},g(s.value?"Bereits registriert? Anmelden":"Noch kein Konto? Registrieren"),1)])])])]))}});export{L as default}; +import{d as h,u as q,r as a,c,a as e,t as g,w as B,b as r,v as n,F as N,e as k,f as R,g as U,o as f}from"./index-CVUlgynU.js";const A={class:"min-h-screen flex items-center justify-center bg-gray-50 dark:bg-gray-900 py-12 px-4 sm:px-6 lg:px-8"},M={class:"max-w-md w-full space-y-8"},C={class:"card"},E={class:"text-xl font-semibold text-gray-900 dark:text-white mb-6"},D={class:"grid grid-cols-2 gap-4"},F=["placeholder"],O={key:1,class:"p-3 bg-red-50 dark:bg-red-900/20 text-red-600 dark:text-red-400 rounded-lg text-sm"},T=["disabled"],j={class:"mt-4 text-center"},L=h({__name:"LoginView",setup(z){const w=R(),V=U(),m=q(),o=a(""),u=a(""),i=a(m.orgSlug||""),p=a(""),v=a(!1),s=a(!1),x=a(""),y=a(""),b=a("");async function S(){p.value="",v.value=!0;try{s.value?(await m.register({email:o.value,password:u.value,first_name:x.value,last_name:y.value,phone:b.value,org_slug:i.value}),await m.login(o.value,u.value,i.value)):await m.login(o.value,u.value,i.value);const d=V.query.redirect||"/";w.push(d)}catch(d){p.value=d instanceof Error?d.message:"Anmeldung fehlgeschlagen"}finally{v.value=!1}}return(d,t)=>(f(),c("div",A,[e("div",M,[t[13]||(t[13]=e("div",{class:"text-center"},[e("h1",{class:"text-4xl font-bold text-primary-600"},"🔐 SeCu"),e("p",{class:"mt-2 text-gray-600 dark:text-gray-400"},"Mitarbeiterverwaltung")],-1)),e("div",C,[e("h2",E,g(s.value?"Registrieren":"Anmelden"),1),e("form",{onSubmit:B(S,["prevent"]),class:"space-y-4"},[e("div",null,[t[7]||(t[7]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Organisation ",-1)),r(e("input",{"onUpdate:modelValue":t[0]||(t[0]=l=>i.value=l),type:"text",required:"",class:"input",placeholder:"z.B. demo"},null,512),[[n,i.value]])]),e("div",null,[t[8]||(t[8]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," E-Mail ",-1)),r(e("input",{"onUpdate:modelValue":t[1]||(t[1]=l=>o.value=l),type:"email",required:"",class:"input",placeholder:"name@firma.de"},null,512),[[n,o.value]])]),s.value?(f(),c(N,{key:0},[e("div",D,[e("div",null,[t[9]||(t[9]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Vorname ",-1)),r(e("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>x.value=l),type:"text",required:"",class:"input"},null,512),[[n,x.value]])]),e("div",null,[t[10]||(t[10]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Nachname ",-1)),r(e("input",{"onUpdate:modelValue":t[3]||(t[3]=l=>y.value=l),type:"text",required:"",class:"input"},null,512),[[n,y.value]])])]),e("div",null,[t[11]||(t[11]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Telefon ",-1)),r(e("input",{"onUpdate:modelValue":t[4]||(t[4]=l=>b.value=l),type:"tel",class:"input",placeholder:"Optional"},null,512),[[n,b.value]])])],64)):k("",!0),e("div",null,[t[12]||(t[12]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Passwort ",-1)),r(e("input",{"onUpdate:modelValue":t[5]||(t[5]=l=>u.value=l),type:"password",required:"",class:"input",placeholder:s.value?"Mindestens 8 Zeichen":""},null,8,F),[[n,u.value]])]),p.value?(f(),c("div",O,g(p.value),1)):k("",!0),e("button",{type:"submit",disabled:v.value,class:"btn btn-primary w-full"},g(v.value?"Bitte warten...":s.value?"Registrieren":"Anmelden"),9,T)],32),e("div",j,[e("button",{type:"button",class:"text-sm text-primary-600 hover:text-primary-700",onClick:t[6]||(t[6]=l=>s.value=!s.value)},g(s.value?"Bereits registriert? Anmelden":"Noch kein Konto? Registrieren"),1)])])])]))}});export{L as default}; diff --git a/dist/assets/ModulesView-BttIuruo.js b/dist/assets/ModulesView-FSR3_RHO.js similarity index 98% rename from dist/assets/ModulesView-BttIuruo.js rename to dist/assets/ModulesView-FSR3_RHO.js index 50b7f61..8ee5eb7 100644 --- a/dist/assets/ModulesView-BttIuruo.js +++ b/dist/assets/ModulesView-FSR3_RHO.js @@ -1 +1 @@ -import{d as k,q as h,m as d,c as l,a as t,t as r,e as u,F as w,x as M,r as c,o as n,n as f}from"./index-Dox4jtA_.js";const S={class:"space-y-6"},C={key:0,class:"card bg-gradient-to-r from-primary-500 to-primary-700 text-white"},B={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},V={class:"text-2xl font-bold"},z={class:"text-2xl font-bold"},A={class:"text-2xl font-bold"},F={class:"text-2xl font-bold"},D={class:"card"},E={key:0,class:"text-center py-8 text-gray-500"},L={key:1,class:"space-y-4"},N={class:"flex-1"},$={class:"flex items-center gap-2"},j={class:"font-medium text-gray-900 dark:text-white"},q={key:0,class:"badge badge-primary"},H={key:0,class:"text-sm text-gray-500 mt-1"},P=["disabled","onClick"],K=k({__name:"ModulesView",setup(G){const g=c([]),i=c(!0),o=c(null);h(async()=>{await Promise.all([b(),v()])});async function b(){i.value=!0;try{const s=await d.get("/modules/org");g.value=s.data.modules}catch(s){console.error(s)}finally{i.value=!1}}async function v(){try{const s=await d.get("/modules/developer/status");o.value=s.data}catch{console.log("Dev status not available")}}async function _(s){if(!s.is_core)try{await d.post(`/modules/${s.id}/toggle`,{enabled:!s.enabled}),s.enabled=!s.enabled}catch(e){alert(e instanceof Error?e.message:"Fehler")}}return(s,e)=>{var m,p,y,x;return n(),l("div",S,[e[6]||(e[6]=t("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"⚙️ Module",-1)),o.value?(n(),l("div",C,[e[4]||(e[4]=t("h2",{class:"text-lg font-semibold mb-4"},"System Status",-1)),t("div",B,[t("div",null,[e[0]||(e[0]=t("p",{class:"text-primary-100 text-sm"},"Benutzer",-1)),t("p",V,r(((m=o.value.stats)==null?void 0:m.user_count)||0),1)]),t("div",null,[e[1]||(e[1]=t("p",{class:"text-primary-100 text-sm"},"Aufträge",-1)),t("p",z,r(((p=o.value.stats)==null?void 0:p.order_count)||0),1)]),t("div",null,[e[2]||(e[2]=t("p",{class:"text-primary-100 text-sm"},"Stundenzettel",-1)),t("p",A,r(((y=o.value.stats)==null?void 0:y.timesheet_count)||0),1)]),t("div",null,[e[3]||(e[3]=t("p",{class:"text-primary-100 text-sm"},"Aktive Module",-1)),t("p",F,r(((x=o.value.stats)==null?void 0:x.enabled_modules)||0),1)])])])):u("",!0),t("div",D,[e[5]||(e[5]=t("h2",{class:"text-lg font-semibold mb-4"},"Verfügbare Module",-1)),i.value?(n(),l("div",E,"Lädt...")):(n(),l("div",L,[(n(!0),l(w,null,M(g.value,a=>(n(),l("div",{key:a.id,class:"flex items-center justify-between p-4 bg-gray-50 dark:bg-gray-700/50 rounded-lg"},[t("div",N,[t("div",$,[t("h3",j,r(a.display_name),1),a.is_core?(n(),l("span",q,"Core")):u("",!0)]),a.description?(n(),l("p",H,r(a.description),1)):u("",!0)]),t("button",{disabled:a.is_core,class:f(["relative inline-flex h-6 w-11 items-center rounded-full transition-colors",a.enabled?"bg-primary-600":"bg-gray-200 dark:bg-gray-600",a.is_core?"opacity-50 cursor-not-allowed":"cursor-pointer"]),onClick:I=>_(a)},[t("span",{class:f(["inline-block h-4 w-4 transform rounded-full bg-white transition-transform",a.enabled?"translate-x-6":"translate-x-1"])},null,2)],10,P)]))),128))]))]),e[7]||(e[7]=t("div",{class:"card"},[t("h2",{class:"text-lg font-semibold mb-2"},"Hinweis"),t("p",{class:"text-gray-500 text-sm"}," Core-Module (Basis-System, Auftragsverwaltung) können nicht deaktiviert werden. Änderungen an Modulen werden sofort wirksam. ")],-1))])}}});export{K as default}; +import{d as k,q as h,m as d,c as l,a as t,t as r,e as u,F as w,x as M,r as c,o as n,n as f}from"./index-CVUlgynU.js";const S={class:"space-y-6"},C={key:0,class:"card bg-gradient-to-r from-primary-500 to-primary-700 text-white"},B={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},V={class:"text-2xl font-bold"},z={class:"text-2xl font-bold"},A={class:"text-2xl font-bold"},F={class:"text-2xl font-bold"},D={class:"card"},E={key:0,class:"text-center py-8 text-gray-500"},L={key:1,class:"space-y-4"},N={class:"flex-1"},$={class:"flex items-center gap-2"},j={class:"font-medium text-gray-900 dark:text-white"},q={key:0,class:"badge badge-primary"},H={key:0,class:"text-sm text-gray-500 mt-1"},P=["disabled","onClick"],K=k({__name:"ModulesView",setup(G){const g=c([]),i=c(!0),o=c(null);h(async()=>{await Promise.all([b(),v()])});async function b(){i.value=!0;try{const s=await d.get("/modules/org");g.value=s.data.modules}catch(s){console.error(s)}finally{i.value=!1}}async function v(){try{const s=await d.get("/modules/developer/status");o.value=s.data}catch{console.log("Dev status not available")}}async function _(s){if(!s.is_core)try{await d.post(`/modules/${s.id}/toggle`,{enabled:!s.enabled}),s.enabled=!s.enabled}catch(e){alert(e instanceof Error?e.message:"Fehler")}}return(s,e)=>{var m,p,y,x;return n(),l("div",S,[e[6]||(e[6]=t("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"⚙️ Module",-1)),o.value?(n(),l("div",C,[e[4]||(e[4]=t("h2",{class:"text-lg font-semibold mb-4"},"System Status",-1)),t("div",B,[t("div",null,[e[0]||(e[0]=t("p",{class:"text-primary-100 text-sm"},"Benutzer",-1)),t("p",V,r(((m=o.value.stats)==null?void 0:m.user_count)||0),1)]),t("div",null,[e[1]||(e[1]=t("p",{class:"text-primary-100 text-sm"},"Aufträge",-1)),t("p",z,r(((p=o.value.stats)==null?void 0:p.order_count)||0),1)]),t("div",null,[e[2]||(e[2]=t("p",{class:"text-primary-100 text-sm"},"Stundenzettel",-1)),t("p",A,r(((y=o.value.stats)==null?void 0:y.timesheet_count)||0),1)]),t("div",null,[e[3]||(e[3]=t("p",{class:"text-primary-100 text-sm"},"Aktive Module",-1)),t("p",F,r(((x=o.value.stats)==null?void 0:x.enabled_modules)||0),1)])])])):u("",!0),t("div",D,[e[5]||(e[5]=t("h2",{class:"text-lg font-semibold mb-4"},"Verfügbare Module",-1)),i.value?(n(),l("div",E,"Lädt...")):(n(),l("div",L,[(n(!0),l(w,null,M(g.value,a=>(n(),l("div",{key:a.id,class:"flex items-center justify-between p-4 bg-gray-50 dark:bg-gray-700/50 rounded-lg"},[t("div",N,[t("div",$,[t("h3",j,r(a.display_name),1),a.is_core?(n(),l("span",q,"Core")):u("",!0)]),a.description?(n(),l("p",H,r(a.description),1)):u("",!0)]),t("button",{disabled:a.is_core,class:f(["relative inline-flex h-6 w-11 items-center rounded-full transition-colors",a.enabled?"bg-primary-600":"bg-gray-200 dark:bg-gray-600",a.is_core?"opacity-50 cursor-not-allowed":"cursor-pointer"]),onClick:I=>_(a)},[t("span",{class:f(["inline-block h-4 w-4 transform rounded-full bg-white transition-transform",a.enabled?"translate-x-6":"translate-x-1"])},null,2)],10,P)]))),128))]))]),e[7]||(e[7]=t("div",{class:"card"},[t("h2",{class:"text-lg font-semibold mb-2"},"Hinweis"),t("p",{class:"text-gray-500 text-sm"}," Core-Module (Basis-System, Auftragsverwaltung) können nicht deaktiviert werden. Änderungen an Modulen werden sofort wirksam. ")],-1))])}}});export{K as default}; diff --git a/dist/assets/ObjectsView-CqpXdUlY.js b/dist/assets/ObjectsView-CqpXdUlY.js new file mode 100644 index 0000000..d70f4a7 --- /dev/null +++ b/dist/assets/ObjectsView-CqpXdUlY.js @@ -0,0 +1 @@ +import{d as te,u as se,q as le,m as g,c as l,a as t,y as k,e as r,b as d,v as m,s as T,F as _,x as w,t as i,w as K,B as q,A as ne,r as c,k as oe,o as n,p as H,n as ae}from"./index-CVUlgynU.js";const ie={class:"space-y-6"},ue={class:"flex items-center justify-between"},de={class:"card"},re={class:"grid grid-cols-1 md:grid-cols-4 gap-4"},me=["value"],pe={class:"flex items-end"},ce={class:"text-sm text-gray-500"},ve={key:0,class:"text-center py-12"},be={key:1,class:"card text-center py-12 text-gray-500"},ge={key:2,class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},ye=["onClick"],xe={class:"flex items-start gap-4"},fe={class:"text-4xl"},ke={class:"flex-1 min-w-0"},_e={class:"font-semibold text-gray-900 dark:text-white truncate"},we={key:0,class:"text-sm text-gray-500"},he={key:1,class:"text-sm text-gray-500"},je={class:"flex gap-2 mt-2"},Ce={class:"text-xs bg-gray-100 dark:bg-gray-700 px-2 py-1 rounded"},Ue={key:0,class:"text-xs bg-blue-100 dark:bg-blue-900 text-blue-800 dark:text-blue-200 px-2 py-1 rounded"},Ve={key:1,class:"text-xs bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200 px-2 py-1 rounded"},Me=["onClick"],$e=["onClick"],Se={key:3,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50"},Oe={class:"bg-white dark:bg-gray-800 rounded-lg shadow-xl w-full max-w-4xl mx-4 max-h-[90vh] overflow-y-auto"},Ne={class:"p-6"},ze={class:"flex items-start justify-between mb-6"},Ae={class:"flex items-center gap-4"},Fe={class:"text-4xl"},Te={class:"text-2xl font-bold text-gray-900 dark:text-white"},Ke={key:0,class:"text-gray-500"},De={class:"grid grid-cols-2 md:grid-cols-4 gap-4 mb-6"},qe={key:0,class:"bg-gray-50 dark:bg-gray-700 p-3 rounded"},Be={class:"font-medium"},Ie={key:1,class:"bg-gray-50 dark:bg-gray-700 p-3 rounded"},Le={class:"font-medium truncate"},He={key:2,class:"bg-gray-50 dark:bg-gray-700 p-3 rounded"},Pe={class:"font-medium"},Ee={key:3,class:"bg-gray-50 dark:bg-gray-700 p-3 rounded"},Ze={class:"font-medium"},Re={key:0,class:"mb-6"},Qe={class:"text-gray-600 dark:text-gray-300 whitespace-pre-wrap"},Ge={key:1,class:"grid grid-cols-2 gap-4 mb-6"},Je={key:0,class:"bg-yellow-50 dark:bg-yellow-900/20 p-4 rounded"},We={class:"text-sm whitespace-pre-wrap"},Xe={key:1,class:"bg-blue-50 dark:bg-blue-900/20 p-4 rounded"},Ye={class:"text-sm whitespace-pre-wrap"},et={class:"mb-6"},tt={class:"flex items-center justify-between mb-3"},st={key:0,class:"text-gray-500 text-sm"},lt={key:1,class:"grid gap-2"},nt={class:"font-medium"},ot={key:0,class:"text-xs bg-blue-500 text-white px-1 rounded ml-1"},at={key:1,class:"text-xs bg-red-500 text-white px-1 rounded ml-1"},it={key:0,class:"text-sm text-gray-500"},ut={key:1,class:"text-sm"},dt=["onClick"],rt={class:"mb-6"},mt={class:"flex items-center justify-between mb-3"},pt={key:0,class:"text-gray-500 text-sm"},ct={key:1,class:"space-y-3"},vt={class:"flex items-start justify-between"},bt={class:"font-medium"},gt={class:"text-xs text-gray-500 ml-2"},yt={class:"text-sm mt-1 whitespace-pre-wrap text-gray-600 dark:text-gray-300"},xt=["onClick"],ft={key:2,class:"mb-6"},kt={class:"flex flex-wrap gap-2"},_t={class:"flex justify-end pt-4 border-t dark:border-gray-700"},wt={key:4,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50"},ht={class:"bg-white dark:bg-gray-800 rounded-lg shadow-xl w-full max-w-2xl mx-4 max-h-[90vh] overflow-y-auto"},jt={class:"p-6"},Ct={class:"text-xl font-semibold mb-4"},Ut={class:"grid grid-cols-2 gap-4"},Vt={class:"col-span-2"},Mt=["value"],$t={class:"grid grid-cols-4 gap-4"},St={class:"col-span-2"},Ot={class:"col-span-2"},Nt={class:"grid grid-cols-2 gap-4"},zt={class:"flex gap-3 pt-4"},At=["disabled"],Ft={key:5,class:"fixed inset-0 z-[60] flex items-center justify-center bg-black/50"},Tt={class:"bg-white dark:bg-gray-800 rounded-lg shadow-xl w-full max-w-md mx-4"},Kt={class:"p-6"},Dt={class:"grid grid-cols-2 gap-4"},qt={class:"grid grid-cols-2 gap-4"},Bt={class:"flex gap-4"},It={class:"flex items-center gap-2"},Lt={class:"flex items-center gap-2"},Ht={class:"flex gap-3"},Pt={key:6,class:"fixed inset-0 z-[60] flex items-center justify-center bg-black/50"},Et={class:"bg-white dark:bg-gray-800 rounded-lg shadow-xl w-full max-w-md mx-4"},Zt={class:"p-6"},Rt={class:"flex items-center gap-2"},Qt={class:"flex gap-3"},Wt=te({__name:"ObjectsView",setup(Gt){const y=se(),B=c(!0),I=c([]),h=c([]),o=c(null),x=c(""),$=c(""),S=c("active"),j=c(!1),O=c(!1),C=c(null),u=c({name:"",short_name:"",object_number:"",object_type:"other",street:"",house_number:"",postal_code:"",city:"",phone:"",email:"",description:"",access_info:"",parking_info:"",customer_name:"",size_sqm:null,floors:null}),N=c(!1),z=c(!1),p=c({name:"",role:"",company:"",phone:"",mobile:"",email:"",availability:"",is_primary:!1,is_emergency:!1,notes:""}),A=c(!1),v=c({title:"",category:"general",content:"",is_critical:!1});le(async()=>{await Promise.all([f(),P()]),B.value=!1});async function f(){try{const a=new URLSearchParams;S.value&&a.append("status",S.value),$.value&&a.append("type",$.value),x.value&&a.append("search",x.value),I.value=await g.get(`/objects?${a}`)}catch(a){console.error("Failed to load objects:",a)}}async function P(){try{h.value=await g.get("/objects/types")}catch(a){console.error("Failed to load types:",a)}}async function U(a){try{o.value=await g.get(`/objects/${a}`),O.value=!0}catch(e){console.error("Failed to load object:",e)}}const D=oe(()=>{let a=[...I.value];if(x.value){const e=x.value.toLowerCase();a=a.filter(b=>{var V,M,s;return b.name.toLowerCase().includes(e)||((V=b.city)==null?void 0:V.toLowerCase().includes(e))||((M=b.object_number)==null?void 0:M.toLowerCase().includes(e))||((s=b.customer_name)==null?void 0:s.toLowerCase().includes(e))})}return a});function E(){C.value=null,u.value={name:"",short_name:"",object_number:"",object_type:"other",street:"",house_number:"",postal_code:"",city:"",phone:"",email:"",description:"",access_info:"",parking_info:"",customer_name:"",size_sqm:null,floors:null},j.value=!0}function Z(a){C.value=a,u.value={...a},j.value=!0}async function R(){if(u.value.name){N.value=!0;try{C.value?await g.put(`/objects/${C.value.id}`,u.value):await g.post("/objects",u.value),j.value=!1,await f()}catch(a){console.error("Failed to save:",a)}finally{N.value=!1}}}async function Q(a){if(confirm("Objekt wirklich archivieren?"))try{await g.delete(`/objects/${a}`),await f()}catch(e){console.error("Failed to delete:",e)}}async function G(){if(!(!p.value.name||!o.value))try{await g.post(`/objects/${o.value.id}/contacts`,p.value),await U(o.value.id),z.value=!1,p.value={name:"",role:"",company:"",phone:"",mobile:"",email:"",availability:"",is_primary:!1,is_emergency:!1,notes:""}}catch(a){console.error("Failed to add contact:",a)}}async function J(a){if(confirm("Kontakt löschen?"))try{await g.delete(`/objects/${o.value.id}/contacts/${a}`),await U(o.value.id)}catch(e){console.error("Failed to delete:",e)}}async function W(){if(!(!v.value.title||!v.value.content||!o.value))try{await g.post(`/objects/${o.value.id}/instructions`,v.value),await U(o.value.id),A.value=!1,v.value={title:"",category:"general",content:"",is_critical:!1}}catch(a){console.error("Failed to add instruction:",a)}}async function X(a){if(confirm("Dienstanweisung löschen?"))try{await g.delete(`/objects/${o.value.id}/instructions/${a}`),await U(o.value.id)}catch(e){console.error("Failed to delete:",e)}}function L(a){const e=h.value.find(b=>b.key===a);return(e==null?void 0:e.icon)||"📍"}function Y(a){const e=h.value.find(b=>b.key===a);return(e==null?void 0:e.name)||a}function ee(a){return{general:"Allgemein",patrol:"Rundgang",emergency:"Notfall",access:"Zugang",reporting:"Meldewesen"}[a]||a}return(a,e)=>{var b,V,M;return n(),l("div",ie,[t("div",ue,[e[37]||(e[37]=t("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"🏢 Objekte",-1)),k(y).canManageUsers?(n(),l("button",{key:0,onClick:E,class:"btn btn-primary"}," ➕ Neues Objekt ")):r("",!0)]),t("div",de,[t("div",re,[t("div",null,[e[38]||(e[38]=t("label",{class:"block text-sm font-medium mb-1"},"🔍 Suche",-1)),d(t("input",{"onUpdate:modelValue":e[0]||(e[0]=s=>x.value=s),type:"text",class:"input",placeholder:"Name, Stadt, Kunde...",onInput:f},null,544),[[m,x.value]])]),t("div",null,[e[40]||(e[40]=t("label",{class:"block text-sm font-medium mb-1"},"🏷️ Typ",-1)),d(t("select",{"onUpdate:modelValue":e[1]||(e[1]=s=>$.value=s),class:"input",onChange:f},[e[39]||(e[39]=t("option",{value:""},"Alle Typen",-1)),(n(!0),l(_,null,w(h.value,s=>(n(),l("option",{key:s.key,value:s.key},i(s.icon)+" "+i(s.name),9,me))),128))],544),[[T,$.value]])]),t("div",null,[e[42]||(e[42]=t("label",{class:"block text-sm font-medium mb-1"},"📊 Status",-1)),d(t("select",{"onUpdate:modelValue":e[2]||(e[2]=s=>S.value=s),class:"input",onChange:f},[...e[41]||(e[41]=[t("option",{value:"active"},"Aktiv",-1),t("option",{value:"inactive"},"Inaktiv",-1),t("option",{value:"archived"},"Archiviert",-1),t("option",{value:"all"},"Alle",-1)])],544),[[T,S.value]])]),t("div",pe,[t("p",ce,i(D.value.length)+" Objekte ",1)])])]),B.value?(n(),l("div",ve,[...e[43]||(e[43]=[t("div",{class:"animate-spin text-4xl"},"⏳",-1)])])):D.value.length===0?(n(),l("div",be," Keine Objekte gefunden ")):(n(),l("div",ge,[(n(!0),l(_,null,w(D.value,s=>(n(),l("div",{key:s.id,class:"card hover:shadow-lg transition-all cursor-pointer",onClick:F=>U(s.id)},[t("div",xe,[t("div",fe,i(L(s.object_type)),1),t("div",ke,[t("h3",_e,i(s.name),1),s.city?(n(),l("p",we," 📍 "+i(s.postal_code)+" "+i(s.city),1)):r("",!0),s.customer_name?(n(),l("p",he," 👤 "+i(s.customer_name),1)):r("",!0),t("div",je,[t("span",Ce,i(Y(s.object_type)),1),s.contact_count?(n(),l("span",Ue," 👥 "+i(s.contact_count),1)):r("",!0),s.checkpoint_count?(n(),l("span",Ve," 📍 "+i(s.checkpoint_count)+" CP ",1)):r("",!0)])])]),k(y).canManageUsers?(n(),l("div",{key:0,class:"flex gap-2 mt-4 pt-3 border-t dark:border-gray-700",onClick:e[3]||(e[3]=K(()=>{},["stop"]))},[t("button",{onClick:F=>Z(s),class:"text-sm text-blue-600 hover:underline"}," ✏️ Bearbeiten ",8,Me),t("button",{onClick:F=>Q(s.id),class:"text-sm text-red-600 hover:underline"}," 🗑️ Archivieren ",8,$e)])):r("",!0)],8,ye))),128))])),O.value&&o.value?(n(),l("div",Se,[t("div",Oe,[t("div",Ne,[t("div",ze,[t("div",Ae,[t("span",Fe,i(L(o.value.object_type)),1),t("div",null,[t("h2",Te,i(o.value.name),1),o.value.city?(n(),l("p",Ke,i(o.value.street)+" "+i(o.value.house_number)+", "+i(o.value.postal_code)+" "+i(o.value.city),1)):r("",!0)])]),t("button",{onClick:e[4]||(e[4]=s=>O.value=!1),class:"text-2xl hover:bg-gray-100 dark:hover:bg-gray-700 p-2 rounded"}," ✕ ")]),t("div",De,[o.value.phone?(n(),l("div",qe,[e[44]||(e[44]=t("p",{class:"text-xs text-gray-500"},"📞 Telefon",-1)),t("p",Be,i(o.value.phone),1)])):r("",!0),o.value.email?(n(),l("div",Ie,[e[45]||(e[45]=t("p",{class:"text-xs text-gray-500"},"📧 E-Mail",-1)),t("p",Le,i(o.value.email),1)])):r("",!0),o.value.customer_name?(n(),l("div",He,[e[46]||(e[46]=t("p",{class:"text-xs text-gray-500"},"👤 Kunde",-1)),t("p",Pe,i(o.value.customer_name),1)])):r("",!0),o.value.object_number?(n(),l("div",Ee,[e[47]||(e[47]=t("p",{class:"text-xs text-gray-500"},"# Objektnummer",-1)),t("p",Ze,i(o.value.object_number),1)])):r("",!0)]),o.value.description?(n(),l("div",Re,[e[48]||(e[48]=t("h3",{class:"font-semibold mb-2"},"📝 Beschreibung",-1)),t("p",Qe,i(o.value.description),1)])):r("",!0),o.value.access_info||o.value.parking_info?(n(),l("div",Ge,[o.value.access_info?(n(),l("div",Je,[e[49]||(e[49]=t("h3",{class:"font-semibold mb-2"},"🔑 Zugang",-1)),t("p",We,i(o.value.access_info),1)])):r("",!0),o.value.parking_info?(n(),l("div",Xe,[e[50]||(e[50]=t("h3",{class:"font-semibold mb-2"},"🅿️ Parken",-1)),t("p",Ye,i(o.value.parking_info),1)])):r("",!0)])):r("",!0),t("div",et,[t("div",tt,[e[51]||(e[51]=t("h3",{class:"font-semibold"},"👥 Ansprechpartner",-1)),k(y).canManageUsers?(n(),l("button",{key:0,onClick:e[5]||(e[5]=s=>z.value=!0),class:"text-sm text-blue-600 hover:underline"}," ➕ Hinzufügen ")):r("",!0)]),(b=o.value.contacts)!=null&&b.length?(n(),l("div",lt,[(n(!0),l(_,null,w(o.value.contacts,s=>(n(),l("div",{key:s.id,class:"flex items-center justify-between bg-gray-50 dark:bg-gray-700 p-3 rounded"},[t("div",null,[t("p",nt,[H(i(s.name)+" ",1),s.is_primary?(n(),l("span",ot,"Haupt")):r("",!0),s.is_emergency?(n(),l("span",at,"Notfall")):r("",!0)]),s.role?(n(),l("p",it,i(s.role),1)):r("",!0),s.phone||s.mobile?(n(),l("p",ut," 📞 "+i(s.phone||s.mobile),1)):r("",!0)]),k(y).canManageUsers?(n(),l("button",{key:0,onClick:F=>J(s.id),class:"text-red-500 hover:text-red-700"}," 🗑️ ",8,dt)):r("",!0)]))),128))])):(n(),l("div",st," Keine Kontakte hinterlegt "))]),t("div",rt,[t("div",mt,[e[52]||(e[52]=t("h3",{class:"font-semibold"},"📋 Dienstanweisungen",-1)),k(y).canManageUsers?(n(),l("button",{key:0,onClick:e[6]||(e[6]=s=>A.value=!0),class:"text-sm text-blue-600 hover:underline"}," ➕ Hinzufügen ")):r("",!0)]),(V=o.value.instructions)!=null&&V.length?(n(),l("div",ct,[(n(!0),l(_,null,w(o.value.instructions,s=>(n(),l("div",{key:s.id,class:ae(["p-4 rounded border-l-4",s.is_critical?"border-red-500 bg-red-50 dark:bg-red-900/20":"border-gray-300 bg-gray-50 dark:bg-gray-700"])},[t("div",vt,[t("div",null,[t("p",bt,[H(i(s.title)+" ",1),t("span",gt,i(ee(s.category)),1)]),t("p",yt,i(s.content),1)]),k(y).canManageUsers?(n(),l("button",{key:0,onClick:F=>X(s.id),class:"text-red-500 hover:text-red-700 ml-2"}," 🗑️ ",8,xt)):r("",!0)])],2))),128))])):(n(),l("div",pt," Keine Dienstanweisungen hinterlegt "))]),(M=o.value.checkpoints)!=null&&M.length?(n(),l("div",ft,[e[53]||(e[53]=t("h3",{class:"font-semibold mb-3"},"📍 Kontrollpunkte",-1)),t("div",kt,[(n(!0),l(_,null,w(o.value.checkpoints,s=>(n(),l("span",{key:s.id,class:"bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200 px-3 py-1 rounded text-sm"},i(s.name),1))),128))])])):r("",!0),t("div",_t,[t("button",{onClick:e[7]||(e[7]=s=>O.value=!1),class:"btn"}," Schließen ")])])])])):r("",!0),j.value?(n(),l("div",wt,[t("div",ht,[t("div",jt,[t("h2",Ct,i(C.value?"✏️ Objekt bearbeiten":"➕ Neues Objekt"),1),t("form",{onSubmit:K(R,["prevent"]),class:"space-y-4"},[t("div",Ut,[t("div",Vt,[e[54]||(e[54]=t("label",{class:"block text-sm font-medium mb-1"},"Name *",-1)),d(t("input",{"onUpdate:modelValue":e[8]||(e[8]=s=>u.value.name=s),type:"text",class:"input",required:""},null,512),[[m,u.value.name]])]),t("div",null,[e[55]||(e[55]=t("label",{class:"block text-sm font-medium mb-1"},"Kurzname",-1)),d(t("input",{"onUpdate:modelValue":e[9]||(e[9]=s=>u.value.short_name=s),type:"text",class:"input"},null,512),[[m,u.value.short_name]])]),t("div",null,[e[56]||(e[56]=t("label",{class:"block text-sm font-medium mb-1"},"Objektnummer",-1)),d(t("input",{"onUpdate:modelValue":e[10]||(e[10]=s=>u.value.object_number=s),type:"text",class:"input"},null,512),[[m,u.value.object_number]])]),t("div",null,[e[57]||(e[57]=t("label",{class:"block text-sm font-medium mb-1"},"Typ",-1)),d(t("select",{"onUpdate:modelValue":e[11]||(e[11]=s=>u.value.object_type=s),class:"input"},[(n(!0),l(_,null,w(h.value,s=>(n(),l("option",{key:s.key,value:s.key},i(s.icon)+" "+i(s.name),9,Mt))),128))],512),[[T,u.value.object_type]])]),t("div",null,[e[58]||(e[58]=t("label",{class:"block text-sm font-medium mb-1"},"Kunde",-1)),d(t("input",{"onUpdate:modelValue":e[12]||(e[12]=s=>u.value.customer_name=s),type:"text",class:"input"},null,512),[[m,u.value.customer_name]])])]),e[68]||(e[68]=t("hr",{class:"dark:border-gray-700"},null,-1)),t("div",$t,[t("div",St,[e[59]||(e[59]=t("label",{class:"block text-sm font-medium mb-1"},"Straße",-1)),d(t("input",{"onUpdate:modelValue":e[13]||(e[13]=s=>u.value.street=s),type:"text",class:"input"},null,512),[[m,u.value.street]])]),t("div",null,[e[60]||(e[60]=t("label",{class:"block text-sm font-medium mb-1"},"Nr.",-1)),d(t("input",{"onUpdate:modelValue":e[14]||(e[14]=s=>u.value.house_number=s),type:"text",class:"input"},null,512),[[m,u.value.house_number]])]),t("div",null,[e[61]||(e[61]=t("label",{class:"block text-sm font-medium mb-1"},"PLZ",-1)),d(t("input",{"onUpdate:modelValue":e[15]||(e[15]=s=>u.value.postal_code=s),type:"text",class:"input"},null,512),[[m,u.value.postal_code]])]),t("div",Ot,[e[62]||(e[62]=t("label",{class:"block text-sm font-medium mb-1"},"Stadt",-1)),d(t("input",{"onUpdate:modelValue":e[16]||(e[16]=s=>u.value.city=s),type:"text",class:"input"},null,512),[[m,u.value.city]])]),t("div",null,[e[63]||(e[63]=t("label",{class:"block text-sm font-medium mb-1"},"Telefon",-1)),d(t("input",{"onUpdate:modelValue":e[17]||(e[17]=s=>u.value.phone=s),type:"tel",class:"input"},null,512),[[m,u.value.phone]])]),t("div",null,[e[64]||(e[64]=t("label",{class:"block text-sm font-medium mb-1"},"E-Mail",-1)),d(t("input",{"onUpdate:modelValue":e[18]||(e[18]=s=>u.value.email=s),type:"email",class:"input"},null,512),[[m,u.value.email]])])]),t("div",null,[e[65]||(e[65]=t("label",{class:"block text-sm font-medium mb-1"},"Beschreibung",-1)),d(t("textarea",{"onUpdate:modelValue":e[19]||(e[19]=s=>u.value.description=s),class:"input",rows:"2"},null,512),[[m,u.value.description]])]),t("div",Nt,[t("div",null,[e[66]||(e[66]=t("label",{class:"block text-sm font-medium mb-1"},"🔑 Zugangsinfos",-1)),d(t("textarea",{"onUpdate:modelValue":e[20]||(e[20]=s=>u.value.access_info=s),class:"input",rows:"2",placeholder:"Schlüssel, Codes..."},null,512),[[m,u.value.access_info]])]),t("div",null,[e[67]||(e[67]=t("label",{class:"block text-sm font-medium mb-1"},"🅿️ Parkhinweise",-1)),d(t("textarea",{"onUpdate:modelValue":e[21]||(e[21]=s=>u.value.parking_info=s),class:"input",rows:"2"},null,512),[[m,u.value.parking_info]])])]),t("div",zt,[t("button",{type:"button",onClick:e[22]||(e[22]=s=>j.value=!1),class:"btn flex-1"}," Abbrechen "),t("button",{type:"submit",disabled:N.value,class:"btn btn-primary flex-1"},i(N.value?"Speichern...":"Speichern"),9,At)])],32)])])])):r("",!0),z.value?(n(),l("div",Ft,[t("div",Tt,[t("div",Kt,[e[78]||(e[78]=t("h2",{class:"text-xl font-semibold mb-4"},"👤 Kontakt hinzufügen",-1)),t("form",{onSubmit:K(G,["prevent"]),class:"space-y-4"},[t("div",null,[e[69]||(e[69]=t("label",{class:"block text-sm font-medium mb-1"},"Name *",-1)),d(t("input",{"onUpdate:modelValue":e[23]||(e[23]=s=>p.value.name=s),type:"text",class:"input",required:""},null,512),[[m,p.value.name]])]),t("div",Dt,[t("div",null,[e[70]||(e[70]=t("label",{class:"block text-sm font-medium mb-1"},"Rolle",-1)),d(t("input",{"onUpdate:modelValue":e[24]||(e[24]=s=>p.value.role=s),type:"text",class:"input",placeholder:"z.B. Hausmeister"},null,512),[[m,p.value.role]])]),t("div",null,[e[71]||(e[71]=t("label",{class:"block text-sm font-medium mb-1"},"Firma",-1)),d(t("input",{"onUpdate:modelValue":e[25]||(e[25]=s=>p.value.company=s),type:"text",class:"input"},null,512),[[m,p.value.company]])])]),t("div",qt,[t("div",null,[e[72]||(e[72]=t("label",{class:"block text-sm font-medium mb-1"},"Telefon",-1)),d(t("input",{"onUpdate:modelValue":e[26]||(e[26]=s=>p.value.phone=s),type:"tel",class:"input"},null,512),[[m,p.value.phone]])]),t("div",null,[e[73]||(e[73]=t("label",{class:"block text-sm font-medium mb-1"},"Mobil",-1)),d(t("input",{"onUpdate:modelValue":e[27]||(e[27]=s=>p.value.mobile=s),type:"tel",class:"input"},null,512),[[m,p.value.mobile]])])]),t("div",null,[e[74]||(e[74]=t("label",{class:"block text-sm font-medium mb-1"},"E-Mail",-1)),d(t("input",{"onUpdate:modelValue":e[28]||(e[28]=s=>p.value.email=s),type:"email",class:"input"},null,512),[[m,p.value.email]])]),t("div",Bt,[t("label",It,[d(t("input",{"onUpdate:modelValue":e[29]||(e[29]=s=>p.value.is_primary=s),type:"checkbox",class:"rounded"},null,512),[[q,p.value.is_primary]]),e[75]||(e[75]=t("span",{class:"text-sm"},"Hauptkontakt",-1))]),t("label",Lt,[d(t("input",{"onUpdate:modelValue":e[30]||(e[30]=s=>p.value.is_emergency=s),type:"checkbox",class:"rounded"},null,512),[[q,p.value.is_emergency]]),e[76]||(e[76]=t("span",{class:"text-sm"},"Notfallkontakt",-1))])]),t("div",Ht,[t("button",{type:"button",onClick:e[31]||(e[31]=s=>z.value=!1),class:"btn flex-1"},"Abbrechen"),e[77]||(e[77]=t("button",{type:"submit",class:"btn btn-primary flex-1"},"Hinzufügen",-1))])],32)])])])):r("",!0),A.value?(n(),l("div",Pt,[t("div",Et,[t("div",Zt,[e[85]||(e[85]=t("h2",{class:"text-xl font-semibold mb-4"},"📋 Dienstanweisung hinzufügen",-1)),t("form",{onSubmit:K(W,["prevent"]),class:"space-y-4"},[t("div",null,[e[79]||(e[79]=t("label",{class:"block text-sm font-medium mb-1"},"Titel *",-1)),d(t("input",{"onUpdate:modelValue":e[32]||(e[32]=s=>v.value.title=s),type:"text",class:"input",required:""},null,512),[[m,v.value.title]])]),t("div",null,[e[81]||(e[81]=t("label",{class:"block text-sm font-medium mb-1"},"Kategorie",-1)),d(t("select",{"onUpdate:modelValue":e[33]||(e[33]=s=>v.value.category=s),class:"input"},[...e[80]||(e[80]=[ne('',5)])],512),[[T,v.value.category]])]),t("div",null,[e[82]||(e[82]=t("label",{class:"block text-sm font-medium mb-1"},"Inhalt *",-1)),d(t("textarea",{"onUpdate:modelValue":e[34]||(e[34]=s=>v.value.content=s),class:"input",rows:"4",required:""},null,512),[[m,v.value.content]])]),t("label",Rt,[d(t("input",{"onUpdate:modelValue":e[35]||(e[35]=s=>v.value.is_critical=s),type:"checkbox",class:"rounded"},null,512),[[q,v.value.is_critical]]),e[83]||(e[83]=t("span",{class:"text-sm text-red-600"},"⚠️ Als kritisch markieren",-1))]),t("div",Qt,[t("button",{type:"button",onClick:e[36]||(e[36]=s=>A.value=!1),class:"btn flex-1"},"Abbrechen"),e[84]||(e[84]=t("button",{type:"submit",class:"btn btn-primary flex-1"},"Hinzufügen",-1))])],32)])])])):r("",!0)])}}});export{Wt as default}; diff --git a/dist/assets/OrderDetailView-B2j_NZNO.js b/dist/assets/OrderDetailView-BOsK7PdF.js similarity index 98% rename from dist/assets/OrderDetailView-B2j_NZNO.js rename to dist/assets/OrderDetailView-BOsK7PdF.js index 86db9f5..e4434b5 100644 --- a/dist/assets/OrderDetailView-B2j_NZNO.js +++ b/dist/assets/OrderDetailView-BOsK7PdF.js @@ -1 +1 @@ -import{d as A,u as $,q as B,m as p,c as r,i as S,j as V,a as e,t as o,e as l,n as _,y as k,F as h,x as E,g as M,f as N,r as y,l as D,o as i,p as F}from"./index-Dox4jtA_.js";const L={key:0,class:"text-center py-12 text-gray-500"},j={key:1,class:"space-y-6"},z={class:"card"},O={class:"flex items-start justify-between"},q={class:"flex items-center gap-3"},I={class:"text-gray-500"},R={class:"text-2xl font-bold text-gray-900 dark:text-white"},Z={key:0,class:"mt-2 text-gray-600 dark:text-gray-400"},H={class:"grid grid-cols-2 md:grid-cols-4 gap-4 mt-6"},K={key:0},T={class:"font-medium"},G={key:1},J={class:"font-medium"},P={key:2},Q={class:"font-medium"},U={class:"font-medium"},W={key:0,class:"mt-6 pt-6 border-t border-gray-200 dark:border-gray-700"},X={class:"flex flex-wrap gap-2"},Y={class:"card"},tt={key:0,class:"text-center py-4 text-gray-500"},et={key:1,class:"space-y-3"},st={class:"font-medium text-gray-900 dark:text-white"},at={class:"text-sm text-gray-500"},nt={class:"flex items-center gap-2"},rt={key:0,class:"card"},ot={class:"text-gray-600 dark:text-gray-400 whitespace-pre-wrap"},dt=A({__name:"OrderDetailView",setup(it){const c=M(),w=N(),m=$(),s=y(null),d=y([]),v=y(!0);B(async()=>{try{const n=await p.get(`/orders/${c.params.id}`);s.value=n.data.order,d.value=n.data.assignments}catch(n){console.error(n),w.push("/orders")}finally{v.value=!1}});async function u(n){try{await p.put(`/orders/${c.params.id}`,{status:n}),s.value.status=n}catch(t){alert(t instanceof Error?t.message:"Fehler")}}async function x(n){try{await p.put(`/orders/${c.params.id}/assignment`,{status:n?"confirmed":"declined"});const t=d.value.find(g=>{var a;return g.user_id===((a=m.user)==null?void 0:a.id)});t&&(t.status=n?"confirmed":"declined")}catch(t){alert(t instanceof Error?t.message:"Fehler")}}function b(n){return{draft:"Entwurf",published:"Veröffentlicht",in_progress:"In Bearbeitung",completed:"Abgeschlossen",cancelled:"Abgesagt",pending:"Ausstehend",confirmed:"Bestätigt",declined:"Abgelehnt"}[n]||n}return(n,t)=>{const g=D("router-link");return v.value?(i(),r("div",L,"Lädt...")):s.value?(i(),r("div",j,[S(g,{to:"/orders",class:"text-primary-600 hover:text-primary-700 text-sm"},{default:V(()=>[...t[6]||(t[6]=[F(" ← Zurück zu Aufträge ",-1)])]),_:1}),e("div",z,[e("div",O,[e("div",null,[e("div",q,[e("span",I,"#"+o(s.value.number),1),e("h1",R,o(s.value.title),1)]),s.value.description?(i(),r("p",Z,o(s.value.description),1)):l("",!0)]),e("span",{class:_(["badge",s.value.status==="completed"?"badge-success":"badge-primary"])},o(b(s.value.status)),3)]),e("div",H,[s.value.location?(i(),r("div",K,[t[7]||(t[7]=e("p",{class:"text-sm text-gray-500"},"Ort",-1)),e("p",T,"📍 "+o(s.value.location),1)])):l("",!0),s.value.start_time?(i(),r("div",G,[t[8]||(t[8]=e("p",{class:"text-sm text-gray-500"},"Start",-1)),e("p",J,o(new Date(s.value.start_time).toLocaleString("de-DE")),1)])):l("",!0),s.value.client_name?(i(),r("div",P,[t[9]||(t[9]=e("p",{class:"text-sm text-gray-500"},"Kunde",-1)),e("p",Q,o(s.value.client_name),1)])):l("",!0),e("div",null,[t[10]||(t[10]=e("p",{class:"text-sm text-gray-500"},"Benötigte MA",-1)),e("p",U,o(d.value.length)+"/"+o(s.value.required_staff),1)])]),k(m).canManageOrders?(i(),r("div",W,[t[11]||(t[11]=e("p",{class:"text-sm text-gray-500 mb-2"},"Status ändern:",-1)),e("div",X,[e("button",{class:"btn btn-secondary text-sm",onClick:t[0]||(t[0]=a=>u("draft"))},"Entwurf"),e("button",{class:"btn btn-primary text-sm",onClick:t[1]||(t[1]=a=>u("published"))},"Veröffentlichen"),e("button",{class:"btn btn-warning text-sm",onClick:t[2]||(t[2]=a=>u("in_progress"))},"In Bearbeitung"),e("button",{class:"btn btn-success text-sm",onClick:t[3]||(t[3]=a=>u("completed"))},"Abschließen")])])):l("",!0)]),e("div",Y,[t[12]||(t[12]=e("h2",{class:"text-lg font-semibold text-gray-900 dark:text-white mb-4"}," 👥 Zugewiesene Mitarbeiter ",-1)),d.value.length===0?(i(),r("div",tt," Noch keine Mitarbeiter zugewiesen ")):(i(),r("div",et,[(i(!0),r(h,null,E(d.value,a=>{var f;return i(),r("div",{key:a.id,class:"flex items-center justify-between p-3 bg-gray-50 dark:bg-gray-700/50 rounded-lg"},[e("div",null,[e("p",st,o(a.user_name),1),e("p",at,o(a.user_phone),1)]),e("div",nt,[e("span",{class:_(["badge",a.status==="confirmed"?"badge-success":a.status==="declined"?"badge-danger":"badge-warning"])},o(b(a.status)),3),a.user_id===((f=k(m).user)==null?void 0:f.id)&&a.status==="pending"?(i(),r(h,{key:0},[e("button",{class:"btn btn-success text-sm",onClick:t[4]||(t[4]=C=>x(!0))},"✓"),e("button",{class:"btn btn-danger text-sm",onClick:t[5]||(t[5]=C=>x(!1))},"✗")],64)):l("",!0)])])}),128))]))]),s.value.special_instructions?(i(),r("div",rt,[t[13]||(t[13]=e("h2",{class:"text-lg font-semibold text-gray-900 dark:text-white mb-2"}," 📝 Besondere Hinweise ",-1)),e("p",ot,o(s.value.special_instructions),1)])):l("",!0)])):l("",!0)}}});export{dt as default}; +import{d as A,u as $,q as B,m as p,c as r,i as S,j as V,a as e,t as o,e as l,n as _,y as k,F as h,x as E,g as M,f as N,r as y,l as D,o as i,p as F}from"./index-CVUlgynU.js";const L={key:0,class:"text-center py-12 text-gray-500"},j={key:1,class:"space-y-6"},z={class:"card"},O={class:"flex items-start justify-between"},q={class:"flex items-center gap-3"},I={class:"text-gray-500"},R={class:"text-2xl font-bold text-gray-900 dark:text-white"},Z={key:0,class:"mt-2 text-gray-600 dark:text-gray-400"},H={class:"grid grid-cols-2 md:grid-cols-4 gap-4 mt-6"},K={key:0},T={class:"font-medium"},G={key:1},J={class:"font-medium"},P={key:2},Q={class:"font-medium"},U={class:"font-medium"},W={key:0,class:"mt-6 pt-6 border-t border-gray-200 dark:border-gray-700"},X={class:"flex flex-wrap gap-2"},Y={class:"card"},tt={key:0,class:"text-center py-4 text-gray-500"},et={key:1,class:"space-y-3"},st={class:"font-medium text-gray-900 dark:text-white"},at={class:"text-sm text-gray-500"},nt={class:"flex items-center gap-2"},rt={key:0,class:"card"},ot={class:"text-gray-600 dark:text-gray-400 whitespace-pre-wrap"},dt=A({__name:"OrderDetailView",setup(it){const c=M(),w=N(),m=$(),s=y(null),d=y([]),v=y(!0);B(async()=>{try{const n=await p.get(`/orders/${c.params.id}`);s.value=n.data.order,d.value=n.data.assignments}catch(n){console.error(n),w.push("/orders")}finally{v.value=!1}});async function u(n){try{await p.put(`/orders/${c.params.id}`,{status:n}),s.value.status=n}catch(t){alert(t instanceof Error?t.message:"Fehler")}}async function x(n){try{await p.put(`/orders/${c.params.id}/assignment`,{status:n?"confirmed":"declined"});const t=d.value.find(g=>{var a;return g.user_id===((a=m.user)==null?void 0:a.id)});t&&(t.status=n?"confirmed":"declined")}catch(t){alert(t instanceof Error?t.message:"Fehler")}}function b(n){return{draft:"Entwurf",published:"Veröffentlicht",in_progress:"In Bearbeitung",completed:"Abgeschlossen",cancelled:"Abgesagt",pending:"Ausstehend",confirmed:"Bestätigt",declined:"Abgelehnt"}[n]||n}return(n,t)=>{const g=D("router-link");return v.value?(i(),r("div",L,"Lädt...")):s.value?(i(),r("div",j,[S(g,{to:"/orders",class:"text-primary-600 hover:text-primary-700 text-sm"},{default:V(()=>[...t[6]||(t[6]=[F(" ← Zurück zu Aufträge ",-1)])]),_:1}),e("div",z,[e("div",O,[e("div",null,[e("div",q,[e("span",I,"#"+o(s.value.number),1),e("h1",R,o(s.value.title),1)]),s.value.description?(i(),r("p",Z,o(s.value.description),1)):l("",!0)]),e("span",{class:_(["badge",s.value.status==="completed"?"badge-success":"badge-primary"])},o(b(s.value.status)),3)]),e("div",H,[s.value.location?(i(),r("div",K,[t[7]||(t[7]=e("p",{class:"text-sm text-gray-500"},"Ort",-1)),e("p",T,"📍 "+o(s.value.location),1)])):l("",!0),s.value.start_time?(i(),r("div",G,[t[8]||(t[8]=e("p",{class:"text-sm text-gray-500"},"Start",-1)),e("p",J,o(new Date(s.value.start_time).toLocaleString("de-DE")),1)])):l("",!0),s.value.client_name?(i(),r("div",P,[t[9]||(t[9]=e("p",{class:"text-sm text-gray-500"},"Kunde",-1)),e("p",Q,o(s.value.client_name),1)])):l("",!0),e("div",null,[t[10]||(t[10]=e("p",{class:"text-sm text-gray-500"},"Benötigte MA",-1)),e("p",U,o(d.value.length)+"/"+o(s.value.required_staff),1)])]),k(m).canManageOrders?(i(),r("div",W,[t[11]||(t[11]=e("p",{class:"text-sm text-gray-500 mb-2"},"Status ändern:",-1)),e("div",X,[e("button",{class:"btn btn-secondary text-sm",onClick:t[0]||(t[0]=a=>u("draft"))},"Entwurf"),e("button",{class:"btn btn-primary text-sm",onClick:t[1]||(t[1]=a=>u("published"))},"Veröffentlichen"),e("button",{class:"btn btn-warning text-sm",onClick:t[2]||(t[2]=a=>u("in_progress"))},"In Bearbeitung"),e("button",{class:"btn btn-success text-sm",onClick:t[3]||(t[3]=a=>u("completed"))},"Abschließen")])])):l("",!0)]),e("div",Y,[t[12]||(t[12]=e("h2",{class:"text-lg font-semibold text-gray-900 dark:text-white mb-4"}," 👥 Zugewiesene Mitarbeiter ",-1)),d.value.length===0?(i(),r("div",tt," Noch keine Mitarbeiter zugewiesen ")):(i(),r("div",et,[(i(!0),r(h,null,E(d.value,a=>{var f;return i(),r("div",{key:a.id,class:"flex items-center justify-between p-3 bg-gray-50 dark:bg-gray-700/50 rounded-lg"},[e("div",null,[e("p",st,o(a.user_name),1),e("p",at,o(a.user_phone),1)]),e("div",nt,[e("span",{class:_(["badge",a.status==="confirmed"?"badge-success":a.status==="declined"?"badge-danger":"badge-warning"])},o(b(a.status)),3),a.user_id===((f=k(m).user)==null?void 0:f.id)&&a.status==="pending"?(i(),r(h,{key:0},[e("button",{class:"btn btn-success text-sm",onClick:t[4]||(t[4]=C=>x(!0))},"✓"),e("button",{class:"btn btn-danger text-sm",onClick:t[5]||(t[5]=C=>x(!1))},"✗")],64)):l("",!0)])])}),128))]))]),s.value.special_instructions?(i(),r("div",rt,[t[13]||(t[13]=e("h2",{class:"text-lg font-semibold text-gray-900 dark:text-white mb-2"}," 📝 Besondere Hinweise ",-1)),e("p",ot,o(s.value.special_instructions),1)])):l("",!0)])):l("",!0)}}});export{dt as default}; diff --git a/dist/assets/OrdersView-BVBJaCj6.js b/dist/assets/OrdersView-mynFcmCT.js similarity index 99% rename from dist/assets/OrdersView-BVBJaCj6.js rename to dist/assets/OrdersView-mynFcmCT.js index 341871a..1490497 100644 --- a/dist/assets/OrdersView-BVBJaCj6.js +++ b/dist/assets/OrdersView-mynFcmCT.js @@ -1 +1 @@ -import{d as U,u as B,q as S,m as x,c as o,a as e,y as C,e as g,b as n,s as E,A as q,F as M,x as O,w as D,v as i,r as u,k as j,o as r,z as L,j as N,t as d,n as F,l as z}from"./index-Dox4jtA_.js";const $={class:"space-y-6"},I={class:"flex items-center justify-between"},K={class:"card"},T={class:"flex items-center gap-4"},H={class:"card"},G={key:0,class:"text-center py-8 text-gray-500"},J={key:1,class:"text-center py-8 text-gray-500"},P={key:2,class:"divide-y divide-gray-200 dark:divide-gray-700"},Q={class:"flex items-start justify-between"},R={class:"flex-1"},W={class:"flex items-center gap-3"},X={class:"text-sm text-gray-500 dark:text-gray-400"},Y={class:"font-medium text-gray-900 dark:text-white"},Z={class:"mt-1 flex items-center gap-4 text-sm text-gray-500 dark:text-gray-400"},h={key:0},tt={key:1},et={key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50"},st={class:"card w-full max-w-2xl max-h-[90vh] overflow-y-auto m-4"},at={class:"grid grid-cols-2 gap-4"},lt={class:"grid grid-cols-2 gap-4"},nt={class:"grid grid-cols-2 gap-4"},it={class:"flex justify-end gap-3 pt-4"},dt=U({__name:"OrdersView",setup(rt){const f=B(),c=u([]),v=u(!0),m=u(!1),p=u(""),a=u({title:"",description:"",location:"",address:"",client_name:"",client_contact:"",start_time:"",end_time:"",required_staff:1,special_instructions:""}),y=j(()=>p.value?c.value.filter(l=>l.status===p.value):c.value);S(async()=>{await b()});async function b(){v.value=!0;try{const l=await x.get("/orders");c.value=l.data.orders}catch(l){console.error("Load orders error:",l)}finally{v.value=!1}}async function k(){try{await x.post("/orders",a.value),m.value=!1,a.value={title:"",description:"",location:"",address:"",client_name:"",client_contact:"",start_time:"",end_time:"",required_staff:1,special_instructions:""},await b()}catch(l){alert(l instanceof Error?l.message:"Fehler beim Erstellen")}}function _(l){return{draft:"bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-300",published:"badge-primary",in_progress:"badge-warning",completed:"badge-success",cancelled:"badge-danger"}[l]||"badge-secondary"}function w(l){return{draft:"Entwurf",published:"Veröffentlicht",in_progress:"In Bearbeitung",completed:"Abgeschlossen",cancelled:"Abgesagt"}[l]||l}function V(l){return l?new Date(l).toLocaleDateString("de-DE",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"}):"-"}return(l,t)=>{const A=z("router-link");return r(),o("div",$,[e("div",I,[t[13]||(t[13]=e("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"}," 📋 Aufträge ",-1)),C(f).canManageOrders?(r(),o("button",{key:0,class:"btn btn-primary",onClick:t[0]||(t[0]=s=>m.value=!0)}," + Neuer Auftrag ")):g("",!0)]),e("div",K,[e("div",T,[t[15]||(t[15]=e("label",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"},"Status:",-1)),n(e("select",{"onUpdate:modelValue":t[1]||(t[1]=s=>p.value=s),class:"input w-48"},[...t[14]||(t[14]=[q('',6)])],512),[[E,p.value]])])]),e("div",H,[v.value?(r(),o("div",G," Lädt... ")):y.value.length===0?(r(),o("div",J," Keine Aufträge gefunden ")):(r(),o("div",P,[(r(!0),o(M,null,O(y.value,s=>(r(),L(A,{key:s.id,to:`/orders/${s.id}`,class:"block py-4 hover:bg-gray-50 dark:hover:bg-gray-700/50 -mx-6 px-6 transition-colors"},{default:N(()=>[e("div",Q,[e("div",R,[e("div",W,[e("span",X,"#"+d(s.number),1),e("h3",Y,d(s.title),1),e("span",{class:F(["badge",_(s.status)])},d(w(s.status)),3)]),e("div",Z,[s.location?(r(),o("span",h,"📍 "+d(s.location),1)):g("",!0),s.start_time?(r(),o("span",tt,"🕐 "+d(V(s.start_time)),1)):g("",!0),e("span",null,"👥 "+d(s.assigned_count||0)+"/"+d(s.required_staff),1)])]),t[16]||(t[16]=e("span",{class:"text-gray-400"},"→",-1))])]),_:2},1032,["to"]))),128))]))]),m.value?(r(),o("div",et,[e("div",st,[t[28]||(t[28]=e("h2",{class:"text-xl font-semibold text-gray-900 dark:text-white mb-6"}," Neuer Auftrag ",-1)),e("form",{onSubmit:D(k,["prevent"]),class:"space-y-4"},[e("div",null,[t[17]||(t[17]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Titel *",-1)),n(e("input",{"onUpdate:modelValue":t[2]||(t[2]=s=>a.value.title=s),type:"text",required:"",class:"input"},null,512),[[i,a.value.title]])]),e("div",null,[t[18]||(t[18]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Beschreibung",-1)),n(e("textarea",{"onUpdate:modelValue":t[3]||(t[3]=s=>a.value.description=s),rows:"3",class:"input"},null,512),[[i,a.value.description]])]),e("div",at,[e("div",null,[t[19]||(t[19]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Ort",-1)),n(e("input",{"onUpdate:modelValue":t[4]||(t[4]=s=>a.value.location=s),type:"text",class:"input"},null,512),[[i,a.value.location]])]),e("div",null,[t[20]||(t[20]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Benötigte MA",-1)),n(e("input",{"onUpdate:modelValue":t[5]||(t[5]=s=>a.value.required_staff=s),type:"number",min:"1",class:"input"},null,512),[[i,a.value.required_staff,void 0,{number:!0}]])])]),e("div",null,[t[21]||(t[21]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Adresse",-1)),n(e("input",{"onUpdate:modelValue":t[6]||(t[6]=s=>a.value.address=s),type:"text",class:"input"},null,512),[[i,a.value.address]])]),e("div",lt,[e("div",null,[t[22]||(t[22]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Kunde",-1)),n(e("input",{"onUpdate:modelValue":t[7]||(t[7]=s=>a.value.client_name=s),type:"text",class:"input"},null,512),[[i,a.value.client_name]])]),e("div",null,[t[23]||(t[23]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Ansprechpartner",-1)),n(e("input",{"onUpdate:modelValue":t[8]||(t[8]=s=>a.value.client_contact=s),type:"text",class:"input"},null,512),[[i,a.value.client_contact]])])]),e("div",nt,[e("div",null,[t[24]||(t[24]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Start",-1)),n(e("input",{"onUpdate:modelValue":t[9]||(t[9]=s=>a.value.start_time=s),type:"datetime-local",class:"input"},null,512),[[i,a.value.start_time]])]),e("div",null,[t[25]||(t[25]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Ende",-1)),n(e("input",{"onUpdate:modelValue":t[10]||(t[10]=s=>a.value.end_time=s),type:"datetime-local",class:"input"},null,512),[[i,a.value.end_time]])])]),e("div",null,[t[26]||(t[26]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Besondere Hinweise",-1)),n(e("textarea",{"onUpdate:modelValue":t[11]||(t[11]=s=>a.value.special_instructions=s),rows:"2",class:"input"},null,512),[[i,a.value.special_instructions]])]),e("div",it,[e("button",{type:"button",class:"btn btn-secondary",onClick:t[12]||(t[12]=s=>m.value=!1)}," Abbrechen "),t[27]||(t[27]=e("button",{type:"submit",class:"btn btn-primary"}," Erstellen ",-1))])],32)])])):g("",!0)])}}});export{dt as default}; +import{d as U,u as B,q as S,m as x,c as o,a as e,y as C,e as g,b as n,s as E,A as q,F as M,x as O,w as D,v as i,r as u,k as j,o as r,z as L,j as N,t as d,n as F,l as z}from"./index-CVUlgynU.js";const $={class:"space-y-6"},I={class:"flex items-center justify-between"},K={class:"card"},T={class:"flex items-center gap-4"},H={class:"card"},G={key:0,class:"text-center py-8 text-gray-500"},J={key:1,class:"text-center py-8 text-gray-500"},P={key:2,class:"divide-y divide-gray-200 dark:divide-gray-700"},Q={class:"flex items-start justify-between"},R={class:"flex-1"},W={class:"flex items-center gap-3"},X={class:"text-sm text-gray-500 dark:text-gray-400"},Y={class:"font-medium text-gray-900 dark:text-white"},Z={class:"mt-1 flex items-center gap-4 text-sm text-gray-500 dark:text-gray-400"},h={key:0},tt={key:1},et={key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50"},st={class:"card w-full max-w-2xl max-h-[90vh] overflow-y-auto m-4"},at={class:"grid grid-cols-2 gap-4"},lt={class:"grid grid-cols-2 gap-4"},nt={class:"grid grid-cols-2 gap-4"},it={class:"flex justify-end gap-3 pt-4"},dt=U({__name:"OrdersView",setup(rt){const f=B(),c=u([]),v=u(!0),m=u(!1),p=u(""),a=u({title:"",description:"",location:"",address:"",client_name:"",client_contact:"",start_time:"",end_time:"",required_staff:1,special_instructions:""}),y=j(()=>p.value?c.value.filter(l=>l.status===p.value):c.value);S(async()=>{await b()});async function b(){v.value=!0;try{const l=await x.get("/orders");c.value=l.data.orders}catch(l){console.error("Load orders error:",l)}finally{v.value=!1}}async function k(){try{await x.post("/orders",a.value),m.value=!1,a.value={title:"",description:"",location:"",address:"",client_name:"",client_contact:"",start_time:"",end_time:"",required_staff:1,special_instructions:""},await b()}catch(l){alert(l instanceof Error?l.message:"Fehler beim Erstellen")}}function _(l){return{draft:"bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-300",published:"badge-primary",in_progress:"badge-warning",completed:"badge-success",cancelled:"badge-danger"}[l]||"badge-secondary"}function w(l){return{draft:"Entwurf",published:"Veröffentlicht",in_progress:"In Bearbeitung",completed:"Abgeschlossen",cancelled:"Abgesagt"}[l]||l}function V(l){return l?new Date(l).toLocaleDateString("de-DE",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"}):"-"}return(l,t)=>{const A=z("router-link");return r(),o("div",$,[e("div",I,[t[13]||(t[13]=e("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"}," 📋 Aufträge ",-1)),C(f).canManageOrders?(r(),o("button",{key:0,class:"btn btn-primary",onClick:t[0]||(t[0]=s=>m.value=!0)}," + Neuer Auftrag ")):g("",!0)]),e("div",K,[e("div",T,[t[15]||(t[15]=e("label",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"},"Status:",-1)),n(e("select",{"onUpdate:modelValue":t[1]||(t[1]=s=>p.value=s),class:"input w-48"},[...t[14]||(t[14]=[q('',6)])],512),[[E,p.value]])])]),e("div",H,[v.value?(r(),o("div",G," Lädt... ")):y.value.length===0?(r(),o("div",J," Keine Aufträge gefunden ")):(r(),o("div",P,[(r(!0),o(M,null,O(y.value,s=>(r(),L(A,{key:s.id,to:`/orders/${s.id}`,class:"block py-4 hover:bg-gray-50 dark:hover:bg-gray-700/50 -mx-6 px-6 transition-colors"},{default:N(()=>[e("div",Q,[e("div",R,[e("div",W,[e("span",X,"#"+d(s.number),1),e("h3",Y,d(s.title),1),e("span",{class:F(["badge",_(s.status)])},d(w(s.status)),3)]),e("div",Z,[s.location?(r(),o("span",h,"📍 "+d(s.location),1)):g("",!0),s.start_time?(r(),o("span",tt,"🕐 "+d(V(s.start_time)),1)):g("",!0),e("span",null,"👥 "+d(s.assigned_count||0)+"/"+d(s.required_staff),1)])]),t[16]||(t[16]=e("span",{class:"text-gray-400"},"→",-1))])]),_:2},1032,["to"]))),128))]))]),m.value?(r(),o("div",et,[e("div",st,[t[28]||(t[28]=e("h2",{class:"text-xl font-semibold text-gray-900 dark:text-white mb-6"}," Neuer Auftrag ",-1)),e("form",{onSubmit:D(k,["prevent"]),class:"space-y-4"},[e("div",null,[t[17]||(t[17]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Titel *",-1)),n(e("input",{"onUpdate:modelValue":t[2]||(t[2]=s=>a.value.title=s),type:"text",required:"",class:"input"},null,512),[[i,a.value.title]])]),e("div",null,[t[18]||(t[18]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Beschreibung",-1)),n(e("textarea",{"onUpdate:modelValue":t[3]||(t[3]=s=>a.value.description=s),rows:"3",class:"input"},null,512),[[i,a.value.description]])]),e("div",at,[e("div",null,[t[19]||(t[19]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Ort",-1)),n(e("input",{"onUpdate:modelValue":t[4]||(t[4]=s=>a.value.location=s),type:"text",class:"input"},null,512),[[i,a.value.location]])]),e("div",null,[t[20]||(t[20]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Benötigte MA",-1)),n(e("input",{"onUpdate:modelValue":t[5]||(t[5]=s=>a.value.required_staff=s),type:"number",min:"1",class:"input"},null,512),[[i,a.value.required_staff,void 0,{number:!0}]])])]),e("div",null,[t[21]||(t[21]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Adresse",-1)),n(e("input",{"onUpdate:modelValue":t[6]||(t[6]=s=>a.value.address=s),type:"text",class:"input"},null,512),[[i,a.value.address]])]),e("div",lt,[e("div",null,[t[22]||(t[22]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Kunde",-1)),n(e("input",{"onUpdate:modelValue":t[7]||(t[7]=s=>a.value.client_name=s),type:"text",class:"input"},null,512),[[i,a.value.client_name]])]),e("div",null,[t[23]||(t[23]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Ansprechpartner",-1)),n(e("input",{"onUpdate:modelValue":t[8]||(t[8]=s=>a.value.client_contact=s),type:"text",class:"input"},null,512),[[i,a.value.client_contact]])])]),e("div",nt,[e("div",null,[t[24]||(t[24]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Start",-1)),n(e("input",{"onUpdate:modelValue":t[9]||(t[9]=s=>a.value.start_time=s),type:"datetime-local",class:"input"},null,512),[[i,a.value.start_time]])]),e("div",null,[t[25]||(t[25]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Ende",-1)),n(e("input",{"onUpdate:modelValue":t[10]||(t[10]=s=>a.value.end_time=s),type:"datetime-local",class:"input"},null,512),[[i,a.value.end_time]])])]),e("div",null,[t[26]||(t[26]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Besondere Hinweise",-1)),n(e("textarea",{"onUpdate:modelValue":t[11]||(t[11]=s=>a.value.special_instructions=s),rows:"2",class:"input"},null,512),[[i,a.value.special_instructions]])]),e("div",it,[e("button",{type:"button",class:"btn btn-secondary",onClick:t[12]||(t[12]=s=>m.value=!1)}," Abbrechen "),t[27]||(t[27]=e("button",{type:"submit",class:"btn btn-primary"}," Erstellen ",-1))])],32)])])):g("",!0)])}}});export{dt as default}; diff --git a/dist/assets/PartnershipsView-B4wJavhc.js b/dist/assets/PartnershipsView-B4wJavhc.js new file mode 100644 index 0000000..806f8d6 --- /dev/null +++ b/dist/assets/PartnershipsView-B4wJavhc.js @@ -0,0 +1 @@ +import{d as ge,u as ve,q as ye,m as u,c as n,a as e,n as w,t as r,F as h,x as k,e as p,b as f,v as A,p as S,B as me,s as Y,r as c,o as l}from"./index-CVUlgynU.js";const be={class:"p-6"},he={class:"flex justify-between items-center mb-6"},fe={class:"flex space-x-1 border-b mb-6"},_e={key:0,class:"text-center py-12"},we={key:1},ke={class:"grid grid-cols-4 gap-4 mb-6"},Ce={class:"bg-white rounded-lg shadow p-4"},Ae={class:"text-2xl font-bold text-gray-900"},Se={class:"bg-white rounded-lg shadow p-4"},$e={class:"text-2xl font-bold text-green-600"},ze={class:"bg-white rounded-lg shadow p-4"},Fe={class:"text-2xl font-bold text-blue-600"},Be={class:"bg-white rounded-lg shadow p-4"},Ve={class:"text-2xl font-bold text-yellow-600"},Pe={key:0,class:"mb-6"},Ne={class:"space-y-2"},je={class:"font-medium"},Oe={class:"flex space-x-2"},Re=["onClick"],Me=["onClick"],Ue={class:"mb-6"},De={key:0,class:"bg-gray-50 rounded-lg p-8 text-center text-gray-500"},Ie={key:1,class:"bg-white rounded-lg shadow overflow-hidden"},qe={class:"min-w-full divide-y divide-gray-200"},Te={class:"divide-y divide-gray-200"},Ee={class:"px-4 py-3"},Le={class:"font-medium"},Ke={class:"text-gray-500 text-sm ml-2"},We={class:"px-4 py-3"},Ge={class:"px-4 py-3 text-sm"},Qe={key:0,class:"text-yellow-600 ml-1"},Ze={class:"px-4 py-3 text-right space-x-2"},He=["onClick"],Je=["onClick"],Xe={key:0,class:"bg-gray-50 rounded-lg p-8 text-center text-gray-500"},Ye={key:1,class:"bg-white rounded-lg shadow overflow-hidden"},et={class:"min-w-full divide-y divide-gray-200"},tt={class:"divide-y divide-gray-200"},st={class:"px-4 py-3"},at={class:"font-medium"},nt={class:"px-4 py-3"},lt={class:"px-4 py-3 text-sm"},rt={key:0,class:"text-yellow-600 ml-1"},ot={class:"px-4 py-3 text-right"},dt=["onClick"],it={key:2},ut={class:"grid grid-cols-2 gap-6"},ct={key:0,class:"bg-gray-50 rounded-lg p-6 text-center text-gray-500"},pt={key:1,class:"space-y-2"},xt={class:"flex justify-between items-start"},gt={class:"font-medium"},vt={class:"text-sm text-gray-500"},yt={class:"text-sm text-gray-500"},mt={class:"text-sm mt-1"},bt={class:"font-medium"},ht={class:"text-right"},ft={key:0,class:"text-sm text-gray-500 mt-1"},_t={key:0,class:"mt-2 pt-2 border-t"},wt=["onClick"],kt={key:0,class:"bg-gray-50 rounded-lg p-6 text-center text-gray-500"},Ct={key:1,class:"space-y-2"},At={class:"flex justify-between items-start"},St={class:"font-medium"},$t={class:"text-sm text-gray-500"},zt={class:"text-sm text-gray-500"},Ft={class:"text-sm mt-1"},Bt={class:"font-medium"},Vt={class:"text-right"},Pt={key:0,class:"mt-2 pt-2 border-t flex space-x-2"},Nt=["onClick"],jt=["onClick"],Ot={key:3},Rt={key:0,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-500"},Mt={key:1,class:"bg-white rounded-lg shadow overflow-hidden"},Ut={class:"min-w-full divide-y divide-gray-200"},Dt={class:"divide-y divide-gray-200"},It={class:"px-4 py-3"},qt={class:"px-4 py-3"},Tt={class:"px-4 py-3"},Et={class:"px-4 py-3"},Lt={class:"px-4 py-3"},Kt={class:"px-4 py-3"},Wt={class:"px-4 py-3 text-right space-x-2"},Gt=["onClick"],Qt=["onClick"],Zt={key:4},Ht={key:0,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-500"},Jt={key:1,class:"bg-white rounded-lg shadow overflow-hidden"},Xt={class:"min-w-full divide-y divide-gray-200"},Yt={class:"divide-y divide-gray-200"},es={class:"px-4 py-3 font-mono"},ts={class:"px-4 py-3"},ss={class:"px-4 py-3"},as={class:"px-4 py-3"},ns={key:0,class:"text-red-600"},ls={key:1,class:"text-green-600"},rs={class:"px-4 py-3 text-right font-medium"},os={class:"px-4 py-3"},ds={class:"px-4 py-3 text-right"},is=["onClick"],us={key:5,class:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50"},cs={class:"bg-white rounded-lg shadow-xl w-full max-w-md p-6"},ps={class:"space-y-4"},xs={key:0,class:"mt-1 border rounded-lg shadow-sm max-h-40 overflow-y-auto"},gs=["onClick"],vs={class:"text-gray-500"},ys={class:"flex justify-end space-x-2 mt-6"},ms=["disabled"],bs={key:6,class:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50"},hs={class:"bg-white rounded-lg shadow-xl w-full max-w-2xl p-6 max-h-[90vh] overflow-y-auto"},fs={class:"flex justify-between items-start mb-4"},_s={class:"text-xl font-bold"},ws={class:"grid grid-cols-2 gap-4 mb-6 text-sm"},ks={key:0},Cs={key:0,class:"mb-6"},As={key:0,class:"text-gray-500 text-sm"},Ss={key:1,class:"space-y-2"},$s={class:"font-medium"},zs={key:0,class:"text-xs text-blue-600 ml-2"},Fs={class:"flex items-center space-x-4"},Bs={class:"font-mono"},Vs=["onClick"],Ps={key:1,class:"grid grid-cols-3 gap-4 mb-6"},Ns={class:"bg-gray-50 rounded p-3 text-center"},js={class:"text-xl font-bold"},Os={class:"bg-gray-50 rounded p-3 text-center"},Rs={class:"text-xl font-bold"},Ms={class:"bg-gray-50 rounded p-3 text-center"},Us={class:"text-xl font-bold"},Ds={key:2,class:"flex space-x-2"},Is={key:3,class:"flex space-x-2"},qs={key:7,class:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50"},Ts={class:"bg-white rounded-lg shadow-xl w-full max-w-md p-6"},Es={class:"space-y-4"},Ls={class:"flex items-center"},Ks={class:"flex justify-end space-x-2 mt-6"},Ws={key:8,class:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50"},Gs={class:"bg-white rounded-lg shadow-xl w-full max-w-md p-6"},Qs={class:"text-xl font-bold mb-4"},Zs={class:"space-y-4"},Hs=["value"],Js=["value"],Xs={class:"flex justify-end space-x-2 mt-6"},Ys=["disabled"],sa=ge({__name:"PartnershipsView",setup(ea){ve();const D=c(!0),I=c([]),F=c([]),B=c({}),m=c("overview"),j=c(!1),q=c(!1),O=c(!1),R=c(!1),T=c(null),i=c(null),$=c(""),z=c([]),G=c(!1),g=c({subcontractor_slug:"",notes:"",contract_start:"",contract_end:""}),M=c(!1),y=c({name:"",description:"",rate_type:"hourly",amount:0,is_default:!1}),V=c({asContractor:[],asSubcontractor:[]}),E=c([]),L=c([]),Q=c([]),x=c({partnership_id:"",order_id:"",rate_id:"",required_staff:1,notes:""});ye(async()=>{await P()});async function P(){D.value=!0;try{const a=await u.get("/partnerships");I.value=a.data.asContractor||[],F.value=a.data.asSubcontractor||[],B.value=a.data.stats||{}}catch(a){console.error("Load partnerships failed:",a)}D.value=!1}async function ee(){if($.value.length<2){z.value=[];return}G.value=!0;try{const a=await u.get(`/partnerships/search/orgs?q=${encodeURIComponent($.value)}`);z.value=a.data}catch(a){console.error("Search failed:",a)}G.value=!1}function te(a){g.value.subcontractor_slug=a.slug,$.value=a.name,z.value=[]}async function se(){var a,t;if(g.value.subcontractor_slug){M.value=!0;try{await u.post("/partnerships",{subcontractor_slug:g.value.subcontractor_slug,notes:g.value.notes||void 0,contract_start:g.value.contract_start||void 0,contract_end:g.value.contract_end||void 0}),j.value=!1,Z(),await P()}catch(o){alert("Fehler: "+(((t=(a=o.response)==null?void 0:a.data)==null?void 0:t.error)||o.message))}M.value=!1}}function Z(){g.value={subcontractor_slug:"",notes:"",contract_start:"",contract_end:""},$.value="",z.value=[]}async function ae(a){var t,o;try{await u.post(`/partnerships/${a.id}/accept`),await P()}catch(d){alert("Fehler: "+(((o=(t=d.response)==null?void 0:t.data)==null?void 0:o.error)||d.message))}}async function ne(a){var t,o;if(confirm("Einladung wirklich ablehnen?"))try{await u.post(`/partnerships/${a.id}/decline`),await P()}catch(d){alert("Fehler: "+(((o=(t=d.response)==null?void 0:t.data)==null?void 0:o.error)||d.message))}}async function K(a,t){var o,d,_;if(confirm(`Status auf "${t}" ändern?`))try{await u.put(`/partnerships/${a.id}/status`,{status:t}),await P(),((o=i.value)==null?void 0:o.id)===a.id&&(i.value.status=t)}catch(s){alert("Fehler: "+(((_=(d=s.response)==null?void 0:d.data)==null?void 0:_.error)||s.message))}}async function H(a){var t,o;T.value=a;try{const d=await u.get(`/partnerships/${a.id}`);i.value=d.data,q.value=!0}catch(d){alert("Fehler: "+(((o=(t=d.response)==null?void 0:t.data)==null?void 0:o.error)||d.message))}}function le(){y.value={name:"",description:"",rate_type:"hourly",amount:0,is_default:!1},O.value=!0}async function re(){var a,t;if(!y.value.name||!y.value.amount){alert("Name und Betrag erforderlich");return}try{await u.post(`/partnerships/${i.value.id}/rates`,{...y.value,amount_cents:Math.round(y.value.amount*100)});const o=await u.get(`/partnerships/${i.value.id}`);i.value=o.data,O.value=!1}catch(o){alert("Fehler: "+(((t=(a=o.response)==null?void 0:a.data)==null?void 0:t.error)||o.message))}}async function oe(a){var t,o;if(confirm(`Satz "${a.name}" löschen?`))try{await u.delete(`/partnerships/${i.value.id}/rates/${a.id}`);const d=await u.get(`/partnerships/${i.value.id}`);i.value=d.data}catch(d){alert("Fehler: "+(((o=(t=d.response)==null?void 0:t.data)==null?void 0:o.error)||d.message))}}async function U(){m.value="orders";try{const a=await u.get("/partnerships/orders/list");V.value=a.data}catch(a){console.error("Load shared orders failed:",a)}}async function de(a){T.value=a,x.value={partnership_id:a.id,order_id:"",rate_id:"",required_staff:1,notes:""};try{const t=await u.get("/orders");Q.value=t.data.orders||t.data||[];const o=await u.get(`/partnerships/${a.id}/rates`);i.value={...a,rates:o.data},R.value=!0}catch(t){console.error("Load orders failed:",t)}}async function ie(){var a,t;if(!x.value.order_id){alert("Bitte Auftrag auswählen");return}try{await u.post("/partnerships/orders",{partnership_id:x.value.partnership_id,order_id:x.value.order_id,rate_id:x.value.rate_id||void 0,required_staff:x.value.required_staff,notes:x.value.notes||void 0}),R.value=!1,await U()}catch(o){alert("Fehler: "+(((t=(a=o.response)==null?void 0:a.data)==null?void 0:t.error)||o.message))}}async function J(a,t){var o,d;try{await u.post(`/partnerships/orders/${a.id}/respond`,{accept:t,notes:""}),await U()}catch(_){alert("Fehler: "+(((d=(o=_.response)==null?void 0:o.data)==null?void 0:d.error)||_.message))}}async function ue(a){var t,o;if(confirm("Auftrag abschließen?"))try{await u.post(`/partnerships/orders/${a.id}/complete`),await U()}catch(d){alert("Fehler: "+(((o=(t=d.response)==null?void 0:t.data)==null?void 0:o.error)||d.message))}}async function W(){m.value="timesheets";try{const a=await u.get("/partnerships/timesheets/list");E.value=a.data}catch(a){console.error("Load timesheets failed:",a)}}async function ce(a){var t,o;try{await u.post(`/partnerships/timesheets/${a.id}/approve`),await W()}catch(d){alert("Fehler: "+(((o=(t=d.response)==null?void 0:t.data)==null?void 0:o.error)||d.message))}}async function pe(a){var o,d;const t=prompt("Grund für Beanstandung:");if(t)try{await u.post(`/partnerships/timesheets/${a.id}/dispute`,{reason:t}),await W()}catch(_){alert("Fehler: "+(((d=(o=_.response)==null?void 0:o.data)==null?void 0:d.error)||_.message))}}async function X(){m.value="invoices";try{const a=await u.get("/partnerships/invoices/list");L.value=a.data}catch(a){console.error("Load invoices failed:",a)}}async function xe(a){var t,o;if(confirm("Rechnung als bezahlt markieren?"))try{await u.put(`/partnerships/invoices/${a.id}/pay`),await X()}catch(d){alert("Fehler: "+(((o=(t=d.response)==null?void 0:t.data)==null?void 0:o.error)||d.message))}}function N(a){return(a/100).toFixed(2).replace(".",",")+" €"}function C(a){return a?new Date(a).toLocaleDateString("de-DE"):"-"}function v(a){return{pending:{text:"Ausstehend",class:"bg-yellow-100 text-yellow-800"},active:{text:"Aktiv",class:"bg-green-100 text-green-800"},paused:{text:"Pausiert",class:"bg-gray-100 text-gray-800"},terminated:{text:"Beendet",class:"bg-red-100 text-red-800"},requested:{text:"Angefragt",class:"bg-blue-100 text-blue-800"},accepted:{text:"Angenommen",class:"bg-green-100 text-green-800"},declined:{text:"Abgelehnt",class:"bg-red-100 text-red-800"},completed:{text:"Abgeschlossen",class:"bg-gray-100 text-gray-800"},approved:{text:"Freigegeben",class:"bg-green-100 text-green-800"},disputed:{text:"Beanstandet",class:"bg-red-100 text-red-800"},draft:{text:"Entwurf",class:"bg-gray-100 text-gray-800"},sent:{text:"Gesendet",class:"bg-blue-100 text-blue-800"},paid:{text:"Bezahlt",class:"bg-green-100 text-green-800"}}[a]||{text:a,class:"bg-gray-100 text-gray-800"}}return(a,t)=>{var o,d,_;return l(),n("div",be,[e("div",he,[t[24]||(t[24]=e("div",null,[e("h1",{class:"text-2xl font-bold text-gray-900"},"🤝 Subunternehmer"),e("p",{class:"text-gray-500"},"Partnerschaften mit anderen Sicherheitsunternehmen")],-1)),e("button",{onClick:t[0]||(t[0]=s=>j.value=!0),class:"px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700"}," + Partner einladen ")]),e("div",fe,[e("button",{onClick:t[1]||(t[1]=s=>m.value="overview"),class:w(["px-4 py-2 font-medium border-b-2 -mb-px",m.value==="overview"?"border-blue-600 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700"])}," Übersicht ",2),e("button",{onClick:t[2]||(t[2]=s=>U()),class:w(["px-4 py-2 font-medium border-b-2 -mb-px",m.value==="orders"?"border-blue-600 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700"])}," Geteilte Aufträge ",2),e("button",{onClick:t[3]||(t[3]=s=>W()),class:w(["px-4 py-2 font-medium border-b-2 -mb-px",m.value==="timesheets"?"border-blue-600 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700"])}," Stundenzettel ",2),e("button",{onClick:t[4]||(t[4]=s=>X()),class:w(["px-4 py-2 font-medium border-b-2 -mb-px",m.value==="invoices"?"border-blue-600 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700"])}," Rechnungen ",2)]),D.value?(l(),n("div",_e,[...t[25]||(t[25]=[e("div",{class:"animate-spin w-8 h-8 border-4 border-blue-600 border-t-transparent rounded-full mx-auto"},null,-1)])])):m.value==="overview"?(l(),n("div",we,[e("div",ke,[e("div",Ce,[e("div",Ae,r(B.value.totalPartnerships||0),1),t[26]||(t[26]=e("div",{class:"text-sm text-gray-500"},"Partnerschaften",-1))]),e("div",Se,[e("div",$e,r(B.value.activeAsContractor||0),1),t[27]||(t[27]=e("div",{class:"text-sm text-gray-500"},"Als Auftraggeber",-1))]),e("div",ze,[e("div",Fe,r(B.value.activeAsSubcontractor||0),1),t[28]||(t[28]=e("div",{class:"text-sm text-gray-500"},"Als Subunternehmer",-1))]),e("div",Be,[e("div",Ve,r(B.value.pendingInvitations||0),1),t[29]||(t[29]=e("div",{class:"text-sm text-gray-500"},"Offene Einladungen",-1))])]),F.value.filter(s=>s.status==="pending").length>0?(l(),n("div",Pe,[t[31]||(t[31]=e("h2",{class:"text-lg font-semibold mb-3"},"📩 Offene Einladungen",-1)),e("div",Ne,[(l(!0),n(h,null,k(F.value.filter(s=>s.status==="pending"),s=>(l(),n("div",{key:s.id,class:"bg-yellow-50 border border-yellow-200 rounded-lg p-4 flex justify-between items-center"},[e("div",null,[e("span",je,r(s.partner_name),1),t[30]||(t[30]=S(" möchte mit Ihnen zusammenarbeiten ",-1))]),e("div",Oe,[e("button",{onClick:b=>ae(s),class:"px-3 py-1 bg-green-600 text-white rounded hover:bg-green-700"}," Annehmen ",8,Re),e("button",{onClick:b=>ne(s),class:"px-3 py-1 bg-red-100 text-red-700 rounded hover:bg-red-200"}," Ablehnen ",8,Me)])]))),128))])])):p("",!0),e("div",Ue,[t[33]||(t[33]=e("h2",{class:"text-lg font-semibold mb-3"},"🏢 Wir als Auftraggeber",-1)),I.value.length===0?(l(),n("div",De," Noch keine Subunternehmer eingeladen ")):(l(),n("div",Ie,[e("table",qe,[t[32]||(t[32]=e("thead",{class:"bg-gray-50"},[e("tr",null,[e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Subunternehmer"),e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Status"),e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Aufträge"),e("th",{class:"px-4 py-3 text-right text-xs font-medium text-gray-500 uppercase"},"Aktionen")])],-1)),e("tbody",Te,[(l(!0),n(h,null,k(I.value,s=>(l(),n("tr",{key:s.id,class:"hover:bg-gray-50"},[e("td",Ee,[e("span",Le,r(s.partner_name),1),e("span",Ke,"@"+r(s.partner_slug),1)]),e("td",We,[e("span",{class:w(["px-2 py-1 text-xs rounded-full",v(s.status).class])},r(v(s.status).text),3)]),e("td",Ge,[S(r(s.shared_orders_count||0)+" geteilt ",1),s.pending_orders>0?(l(),n("span",Qe," ("+r(s.pending_orders)+" offen) ",1)):p("",!0)]),e("td",Ze,[e("button",{onClick:b=>H(s),class:"text-blue-600 hover:text-blue-800"}," Details ",8,He),s.status==="active"?(l(),n("button",{key:0,onClick:b=>de(s),class:"text-green-600 hover:text-green-800"}," Auftrag teilen ",8,Je)):p("",!0)])]))),128))])])]))]),e("div",null,[t[35]||(t[35]=e("h2",{class:"text-lg font-semibold mb-3"},"👷 Wir als Subunternehmer",-1)),F.value.filter(s=>s.status!=="pending").length===0?(l(),n("div",Xe," Keine aktiven Partnerschaften als Subunternehmer ")):(l(),n("div",Ye,[e("table",et,[t[34]||(t[34]=e("thead",{class:"bg-gray-50"},[e("tr",null,[e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Auftraggeber"),e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Status"),e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Aufträge"),e("th",{class:"px-4 py-3 text-right text-xs font-medium text-gray-500 uppercase"},"Aktionen")])],-1)),e("tbody",tt,[(l(!0),n(h,null,k(F.value.filter(s=>s.status!=="pending"),s=>(l(),n("tr",{key:s.id,class:"hover:bg-gray-50"},[e("td",st,[e("span",at,r(s.partner_name),1)]),e("td",nt,[e("span",{class:w(["px-2 py-1 text-xs rounded-full",v(s.status).class])},r(v(s.status).text),3)]),e("td",lt,[S(r(s.shared_orders_count||0)+" erhalten ",1),s.pending_orders>0?(l(),n("span",rt," ("+r(s.pending_orders)+" offen) ",1)):p("",!0)]),e("td",ot,[e("button",{onClick:b=>H(s),class:"text-blue-600 hover:text-blue-800"}," Details ",8,dt)])]))),128))])])]))])])):m.value==="orders"?(l(),n("div",it,[e("div",ut,[e("div",null,[t[37]||(t[37]=e("h2",{class:"text-lg font-semibold mb-3"},"📤 Von uns geteilt",-1)),V.value.asContractor.length===0?(l(),n("div",ct," Keine geteilten Aufträge ")):(l(),n("div",pt,[(l(!0),n(h,null,k(V.value.asContractor,s=>(l(),n("div",{key:s.id,class:"bg-white rounded-lg shadow p-4"},[e("div",xt,[e("div",null,[e("div",gt,r(s.order_title),1),e("div",vt,r(s.location),1),e("div",yt,r(C(s.start_date))+" - "+r(C(s.end_date)),1),e("div",mt,[t[36]||(t[36]=S(" → ",-1)),e("span",bt,r(s.subcontractor_name),1)])]),e("div",ht,[e("span",{class:w(["px-2 py-1 text-xs rounded-full",v(s.status).class])},r(v(s.status).text),3),s.rate_name?(l(),n("div",ft,r(s.rate_name)+": "+r(N(s.rate_amount))+"/h ",1)):p("",!0)])]),s.status==="accepted"?(l(),n("div",_t,[e("button",{onClick:b=>ue(s),class:"text-sm text-green-600 hover:text-green-800"}," ✓ Abschließen ",8,wt)])):p("",!0)]))),128))]))]),e("div",null,[t[39]||(t[39]=e("h2",{class:"text-lg font-semibold mb-3"},"📥 An uns übertragen",-1)),V.value.asSubcontractor.length===0?(l(),n("div",kt," Keine erhaltenen Aufträge ")):(l(),n("div",Ct,[(l(!0),n(h,null,k(V.value.asSubcontractor,s=>(l(),n("div",{key:s.id,class:"bg-white rounded-lg shadow p-4"},[e("div",At,[e("div",null,[e("div",St,r(s.order_title),1),e("div",$t,r(s.location),1),e("div",zt,r(C(s.start_date))+" - "+r(C(s.end_date)),1),e("div",Ft,[t[38]||(t[38]=S(" ← ",-1)),e("span",Bt,r(s.contractor_name),1)])]),e("div",Vt,[e("span",{class:w(["px-2 py-1 text-xs rounded-full",v(s.status).class])},r(v(s.status).text),3)])]),s.status==="requested"?(l(),n("div",Pt,[e("button",{onClick:b=>J(s,!0),class:"text-sm px-3 py-1 bg-green-600 text-white rounded hover:bg-green-700"}," Annehmen ",8,Nt),e("button",{onClick:b=>J(s,!1),class:"text-sm px-3 py-1 bg-red-100 text-red-700 rounded hover:bg-red-200"}," Ablehnen ",8,jt)])):p("",!0)]))),128))]))])])])):m.value==="timesheets"?(l(),n("div",Ot,[E.value.length===0?(l(),n("div",Rt," Keine Partnership-Stundenzettel vorhanden ")):(l(),n("div",Mt,[e("table",Ut,[t[40]||(t[40]=e("thead",{class:"bg-gray-50"},[e("tr",null,[e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Datum"),e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Mitarbeiter"),e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Auftrag"),e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Stunden"),e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Betrag"),e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Status"),e("th",{class:"px-4 py-3 text-right text-xs font-medium text-gray-500 uppercase"},"Aktionen")])],-1)),e("tbody",Dt,[(l(!0),n(h,null,k(E.value,s=>(l(),n("tr",{key:s.id,class:"hover:bg-gray-50"},[e("td",It,r(C(s.date)),1),e("td",qt,r(s.first_name)+" "+r(s.last_name),1),e("td",Tt,r(s.order_title),1),e("td",Et,r(s.hours_worked)+"h",1),e("td",Lt,r(s.calculated_amount_cents?N(s.calculated_amount_cents):"-"),1),e("td",Kt,[e("span",{class:w(["px-2 py-1 text-xs rounded-full",v(s.approval_status).class])},r(v(s.approval_status).text),3)]),e("td",Wt,[s.approval_status==="pending"?(l(),n(h,{key:0},[e("button",{onClick:b=>ce(s),class:"text-green-600 hover:text-green-800"}," ✓ Freigeben ",8,Gt),e("button",{onClick:b=>pe(s),class:"text-red-600 hover:text-red-800"}," ✗ Beanstanden ",8,Qt)],64)):p("",!0)])]))),128))])])]))])):m.value==="invoices"?(l(),n("div",Zt,[L.value.length===0?(l(),n("div",Ht," Keine Rechnungen vorhanden ")):(l(),n("div",Jt,[e("table",Xt,[t[41]||(t[41]=e("thead",{class:"bg-gray-50"},[e("tr",null,[e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Nr."),e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Partner"),e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Zeitraum"),e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Richtung"),e("th",{class:"px-4 py-3 text-right text-xs font-medium text-gray-500 uppercase"},"Betrag"),e("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Status"),e("th",{class:"px-4 py-3 text-right text-xs font-medium text-gray-500 uppercase"},"Aktionen")])],-1)),e("tbody",Yt,[(l(!0),n(h,null,k(L.value,s=>(l(),n("tr",{key:s.id,class:"hover:bg-gray-50"},[e("td",es,r(s.invoice_number),1),e("td",ts,r(s.partner_name),1),e("td",ss,r(C(s.period_start))+" - "+r(C(s.period_end)),1),e("td",as,[s.direction==="outgoing"?(l(),n("span",ns,"📤 Ausgehend")):(l(),n("span",ls,"📥 Eingehend"))]),e("td",rs,r(N(s.total_cents)),1),e("td",os,[e("span",{class:w(["px-2 py-1 text-xs rounded-full",v(s.status).class])},r(v(s.status).text),3)]),e("td",ds,[s.direction==="incoming"&&s.status==="sent"?(l(),n("button",{key:0,onClick:b=>xe(s),class:"text-green-600 hover:text-green-800"}," Als bezahlt markieren ",8,is)):p("",!0)])]))),128))])])]))])):p("",!0),j.value?(l(),n("div",us,[e("div",cs,[t[46]||(t[46]=e("h2",{class:"text-xl font-bold mb-4"},"Partner einladen",-1)),e("div",ps,[e("div",null,[t[42]||(t[42]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Organisation suchen",-1)),f(e("input",{"onUpdate:modelValue":t[5]||(t[5]=s=>$.value=s),onInput:ee,type:"text",placeholder:"Name oder Slug eingeben...",class:"w-full border rounded-lg px-3 py-2"},null,544),[[A,$.value]]),z.value.length>0?(l(),n("div",xs,[(l(!0),n(h,null,k(z.value,s=>(l(),n("button",{key:s.id,onClick:b=>te(s),class:"w-full px-3 py-2 text-left hover:bg-gray-100"},[S(r(s.name)+" ",1),e("span",vs,"@"+r(s.slug),1)],8,gs))),128))])):p("",!0)]),e("div",null,[t[43]||(t[43]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Vertragsbeginn",-1)),f(e("input",{"onUpdate:modelValue":t[6]||(t[6]=s=>g.value.contract_start=s),type:"date",class:"w-full border rounded-lg px-3 py-2"},null,512),[[A,g.value.contract_start]])]),e("div",null,[t[44]||(t[44]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Vertragsende (optional)",-1)),f(e("input",{"onUpdate:modelValue":t[7]||(t[7]=s=>g.value.contract_end=s),type:"date",class:"w-full border rounded-lg px-3 py-2"},null,512),[[A,g.value.contract_end]])]),e("div",null,[t[45]||(t[45]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Notizen",-1)),f(e("textarea",{"onUpdate:modelValue":t[8]||(t[8]=s=>g.value.notes=s),rows:"3",class:"w-full border rounded-lg px-3 py-2",placeholder:"Optionale Nachricht..."},null,512),[[A,g.value.notes]])])]),e("div",ys,[e("button",{onClick:t[9]||(t[9]=s=>{j.value=!1,Z()}),class:"px-4 py-2 text-gray-700 hover:bg-gray-100 rounded-lg"}," Abbrechen "),e("button",{onClick:se,disabled:M.value||!g.value.subcontractor_slug,class:"px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 disabled:opacity-50"},r(M.value?"Wird gesendet...":"Einladung senden"),9,ms)])])])):p("",!0),q.value&&i.value?(l(),n("div",bs,[e("div",hs,[e("div",fs,[e("div",null,[e("h2",_s," Partnerschaft mit "+r(i.value.isContractor?i.value.subcontractor_name:i.value.contractor_name),1),e("span",{class:w(["px-2 py-1 text-xs rounded-full",v(i.value.status).class])},r(v(i.value.status).text),3)]),e("button",{onClick:t[10]||(t[10]=s=>q.value=!1),class:"text-gray-500 hover:text-gray-700"},"✕")]),e("div",ws,[e("div",null,[t[47]||(t[47]=e("span",{class:"text-gray-500"},"Rolle:",-1)),S(" "+r(i.value.isContractor?"Wir sind Auftraggeber":"Wir sind Subunternehmer"),1)]),e("div",null,[t[48]||(t[48]=e("span",{class:"text-gray-500"},"Seit:",-1)),S(" "+r(C(i.value.contract_start||i.value.created_at)),1)]),i.value.contract_end?(l(),n("div",ks,[t[49]||(t[49]=e("span",{class:"text-gray-500"},"Bis:",-1)),S(" "+r(C(i.value.contract_end)),1)])):p("",!0)]),i.value.isContractor?(l(),n("div",Cs,[e("div",{class:"flex justify-between items-center mb-2"},[t[50]||(t[50]=e("h3",{class:"font-semibold"},"Stundensätze",-1)),e("button",{onClick:le,class:"text-sm text-blue-600 hover:text-blue-800"}," + Neuer Satz ")]),(o=i.value.rates)!=null&&o.length?(l(),n("div",Ss,[(l(!0),n(h,null,k(i.value.rates,s=>(l(),n("div",{key:s.id,class:"flex justify-between items-center bg-gray-50 rounded px-3 py-2"},[e("div",null,[e("span",$s,r(s.name),1),s.is_default?(l(),n("span",zs,"Standard")):p("",!0)]),e("div",Fs,[e("span",Bs,r(N(s.amount_cents))+"/h",1),e("button",{onClick:b=>oe(s),class:"text-red-500 hover:text-red-700"}," 🗑 ",8,Vs)])]))),128))])):(l(),n("div",As," Noch keine Sätze definiert "))])):p("",!0),i.value.stats?(l(),n("div",Ps,[e("div",Ns,[e("div",js,r(i.value.stats.completed_orders||0),1),t[51]||(t[51]=e("div",{class:"text-xs text-gray-500"},"Abgeschlossen",-1))]),e("div",Os,[e("div",Rs,r(i.value.stats.active_orders||0),1),t[52]||(t[52]=e("div",{class:"text-xs text-gray-500"},"Aktiv",-1))]),e("div",Ms,[e("div",Us,r(i.value.stats.pending_orders||0),1),t[53]||(t[53]=e("div",{class:"text-xs text-gray-500"},"Ausstehend",-1))])])):p("",!0),i.value.status==="active"?(l(),n("div",Ds,[e("button",{onClick:t[11]||(t[11]=s=>K(i.value,"paused")),class:"px-4 py-2 bg-yellow-100 text-yellow-700 rounded hover:bg-yellow-200"}," Pausieren "),e("button",{onClick:t[12]||(t[12]=s=>K(i.value,"terminated")),class:"px-4 py-2 bg-red-100 text-red-700 rounded hover:bg-red-200"}," Beenden ")])):i.value.status==="paused"?(l(),n("div",Is,[e("button",{onClick:t[13]||(t[13]=s=>K(i.value,"active")),class:"px-4 py-2 bg-green-600 text-white rounded hover:bg-green-700"}," Reaktivieren ")])):p("",!0)])])):p("",!0),O.value?(l(),n("div",qs,[e("div",Ts,[t[58]||(t[58]=e("h2",{class:"text-xl font-bold mb-4"},"Neuer Stundensatz",-1)),e("div",Es,[e("div",null,[t[54]||(t[54]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Bezeichnung *",-1)),f(e("input",{"onUpdate:modelValue":t[14]||(t[14]=s=>y.value.name=s),type:"text",placeholder:"z.B. Normaldienst, Nachtschicht...",class:"w-full border rounded-lg px-3 py-2"},null,512),[[A,y.value.name]])]),e("div",null,[t[55]||(t[55]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Beschreibung",-1)),f(e("input",{"onUpdate:modelValue":t[15]||(t[15]=s=>y.value.description=s),type:"text",class:"w-full border rounded-lg px-3 py-2"},null,512),[[A,y.value.description]])]),e("div",null,[t[56]||(t[56]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Stundensatz (€) *",-1)),f(e("input",{"onUpdate:modelValue":t[16]||(t[16]=s=>y.value.amount=s),type:"number",step:"0.01",min:"0",class:"w-full border rounded-lg px-3 py-2"},null,512),[[A,y.value.amount,void 0,{number:!0}]])]),e("label",Ls,[f(e("input",{"onUpdate:modelValue":t[17]||(t[17]=s=>y.value.is_default=s),type:"checkbox",class:"mr-2"},null,512),[[me,y.value.is_default]]),t[57]||(t[57]=e("span",{class:"text-sm"},"Als Standard-Satz verwenden",-1))])]),e("div",Ks,[e("button",{onClick:t[18]||(t[18]=s=>O.value=!1),class:"px-4 py-2 text-gray-700 hover:bg-gray-100 rounded-lg"}," Abbrechen "),e("button",{onClick:re,class:"px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700"}," Speichern ")])])])):p("",!0),R.value?(l(),n("div",Ws,[e("div",Gs,[e("h2",Qs,"Auftrag teilen mit "+r((d=T.value)==null?void 0:d.partner_name),1),e("div",Zs,[e("div",null,[t[60]||(t[60]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Auftrag auswählen *",-1)),f(e("select",{"onUpdate:modelValue":t[19]||(t[19]=s=>x.value.order_id=s),class:"w-full border rounded-lg px-3 py-2"},[t[59]||(t[59]=e("option",{value:""},"Bitte wählen...",-1)),(l(!0),n(h,null,k(Q.value,s=>(l(),n("option",{key:s.id,value:s.id},r(s.title)+" ("+r(C(s.start_date))+") ",9,Hs))),128))],512),[[Y,x.value.order_id]])]),e("div",null,[t[62]||(t[62]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Stundensatz",-1)),f(e("select",{"onUpdate:modelValue":t[20]||(t[20]=s=>x.value.rate_id=s),class:"w-full border rounded-lg px-3 py-2"},[t[61]||(t[61]=e("option",{value:""},"Keiner / Später festlegen",-1)),(l(!0),n(h,null,k((_=i.value)==null?void 0:_.rates,s=>(l(),n("option",{key:s.id,value:s.id},r(s.name)+" ("+r(N(s.amount_cents))+"/h) ",9,Js))),128))],512),[[Y,x.value.rate_id]])]),e("div",null,[t[63]||(t[63]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Benötigte Mitarbeiter",-1)),f(e("input",{"onUpdate:modelValue":t[21]||(t[21]=s=>x.value.required_staff=s),type:"number",min:"1",class:"w-full border rounded-lg px-3 py-2"},null,512),[[A,x.value.required_staff,void 0,{number:!0}]])]),e("div",null,[t[64]||(t[64]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Notizen",-1)),f(e("textarea",{"onUpdate:modelValue":t[22]||(t[22]=s=>x.value.notes=s),rows:"2",class:"w-full border rounded-lg px-3 py-2"},null,512),[[A,x.value.notes]])])]),e("div",Xs,[e("button",{onClick:t[23]||(t[23]=s=>R.value=!1),class:"px-4 py-2 text-gray-700 hover:bg-gray-100 rounded-lg"}," Abbrechen "),e("button",{onClick:ie,disabled:!x.value.order_id,class:"px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 disabled:opacity-50"}," Auftrag teilen ",8,Ys)])])])):p("",!0)])}}});export{sa as default}; diff --git a/dist/assets/PartnershipsView-VpZWV3sV.js b/dist/assets/PartnershipsView-VpZWV3sV.js deleted file mode 100644 index 27e4bfe..0000000 --- a/dist/assets/PartnershipsView-VpZWV3sV.js +++ /dev/null @@ -1 +0,0 @@ -import{d as H,u as J,q as Q,m as g,c as n,a as e,y as V,e as d,F as x,x as h,b as M,v as T,t as r,n as y,r as o,k as U,o as l}from"./index-Dox4jtA_.js";const W={class:"space-y-6"},X={class:"flex items-center justify-between"},Y={key:0,class:"card bg-yellow-50 dark:bg-yellow-900/20 border-yellow-200"},Z={class:"space-y-3"},ee={class:"font-medium"},te={class:"flex gap-2"},se=["onClick"],ae=["onClick"],ne={key:1,class:"text-center py-12 text-gray-500"},le={key:2,class:"card text-center py-12"},re={key:3,class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},oe=["onClick"],ie={class:"flex items-start justify-between"},de={class:"text-xs text-gray-500"},ue={class:"font-semibold text-gray-900 dark:text-white"},ce={class:"mt-4 flex items-center gap-4 text-sm text-gray-500"},ve={key:4,class:"fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4"},ge={class:"bg-white dark:bg-gray-800 rounded-xl shadow-xl max-w-md w-full p-6"},me={class:"space-y-4"},be={key:0,class:"p-3 bg-red-50 text-red-600 rounded-lg text-sm"},xe={class:"mt-6 flex justify-end gap-3"},ye=["disabled"],pe={key:5,class:"fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4"},he={class:"bg-white dark:bg-gray-800 rounded-xl shadow-xl max-w-4xl w-full max-h-[90vh] overflow-hidden flex flex-col"},_e={class:"p-6 border-b dark:border-gray-700"},fe={class:"flex items-center justify-between"},ke={class:"text-xs text-gray-500"},we={class:"text-xl font-bold text-gray-900 dark:text-white"},Ce={class:"flex gap-4 mt-4"},Se={class:"p-6 overflow-y-auto flex-1"},$e={key:0},Ae={key:0,class:"space-y-3"},ze={class:"flex items-center justify-between"},De={class:"font-medium"},Fe={class:"text-sm text-gray-500"},je={key:1,class:"text-center text-gray-500 py-8"},Be={key:1},Ee={key:0,class:"space-y-3"},Pe={class:"flex items-center justify-between"},Le={class:"font-medium"},Ne={class:"text-sm text-gray-500"},Re={key:0,class:"text-sm font-medium text-green-600"},Ke={class:"flex items-center gap-2"},Oe=["onClick"],Ve=["onClick"],Me={key:1,class:"text-center text-gray-500 py-8"},Te={key:2},Ue={class:"grid grid-cols-3 gap-4 mb-6"},qe={class:"p-4 bg-yellow-50 dark:bg-yellow-900/20 rounded-lg text-center"},Ge={class:"text-2xl font-bold text-yellow-600"},Ie={class:"text-sm text-yellow-600"},He={class:"p-4 bg-green-50 dark:bg-green-900/20 rounded-lg text-center"},Je={class:"text-2xl font-bold text-green-600"},Qe={class:"text-sm text-green-600"},We={class:"p-4 bg-blue-50 dark:bg-blue-900/20 rounded-lg text-center"},Xe={class:"text-2xl font-bold text-blue-600"},Ye={class:"space-y-2"},Ze={class:"font-medium"},et={class:"text-gray-500 ml-2"},tt={class:"text-right"},st={class:"font-medium"},at={class:"text-sm text-gray-500"},rt=H({__name:"PartnershipsView",setup(nt){const B=J(),S=o(!0),$=o([]),u=o(null),p=o(!1),A=o(!1),b=o(""),_=o(""),f=o(!1),k=o(""),z=o(null),w=o([]),v=o(null),c=o("orders");Q(async()=>{await D()});async function D(){S.value=!0;try{const a=await g.get("/partnerships");$.value=a.data.partnerships}catch(a){console.error("Load partnerships failed:",a)}S.value=!1}async function q(){if(b.value){f.value=!0,k.value="";try{await g.post("/partnerships/invite",{subcontractor_slug:b.value,notes:_.value||void 0}),p.value=!1,b.value="",_.value="",await D()}catch(a){k.value=a instanceof Error?a.message:"Einladung fehlgeschlagen"}f.value=!1}}async function E(a,s){try{await g.post(`/partnerships/${a.id}/respond`,{accept:s}),await D()}catch(i){alert("Fehler: "+(i instanceof Error?i.message:"Unbekannt"))}}async function G(a){u.value=a,A.value=!0,c.value="orders";try{const[s,i,C]=await Promise.all([g.get(`/partnerships/${a.id}`),g.get(`/partnerships/${a.id}/timesheets`),g.get(`/partnerships/${a.id}/billing`)]);z.value=s.data,w.value=i.data.timesheets,v.value=C.data}catch(s){console.error("Load detail failed:",s)}}async function P(a,s){if(u.value)try{await g.post(`/partnerships/${u.value.id}/timesheets/${a.id}/review`,{approve:s,dispute_reason:s?void 0:prompt("Grund für Beanstandung:")});const i=await g.get(`/partnerships/${u.value.id}/timesheets`);w.value=i.data.timesheets}catch(i){alert("Fehler: "+(i instanceof Error?i.message:"Unbekannt"))}}const L=U(()=>$.value.filter(a=>a.status==="pending"&&a.my_role==="subcontractor")),N=U(()=>$.value.filter(a=>a.status==="active"));function I(a){return(a/100).toFixed(2).replace(".",",")+" €"}function R(a){return new Date(a).toLocaleDateString("de-DE")}function F(a){return{pending:"badge-warning",active:"badge-success",paused:"badge-secondary",terminated:"badge-danger",requested:"badge-primary",accepted:"badge-success",declined:"badge-danger",approved:"badge-success",disputed:"badge-danger"}[a]||"badge-secondary"}function j(a){return{pending:"Ausstehend",active:"Aktiv",paused:"Pausiert",terminated:"Beendet",requested:"Angefragt",accepted:"Angenommen",declined:"Abgelehnt",approved:"Genehmigt",disputed:"Beanstandet"}[a]||a}return(a,s)=>{var i,C;return l(),n("div",W,[e("div",X,[s[9]||(s[9]=e("div",null,[e("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"}," 🤝 Subunternehmer "),e("p",{class:"text-gray-500 dark:text-gray-400"}," Partnerschaften und Abrechnungen ")],-1)),V(B).isChef?(l(),n("button",{key:0,onClick:s[0]||(s[0]=t=>p.value=!0),class:"btn btn-primary"}," + Subunternehmer einladen ")):d("",!0)]),L.value.length>0?(l(),n("div",Y,[s[11]||(s[11]=e("h2",{class:"text-lg font-semibold text-yellow-800 dark:text-yellow-200 mb-4"}," 📬 Offene Einladungen ",-1)),e("div",Z,[(l(!0),n(x,null,h(L.value,t=>(l(),n("div",{key:t.id,class:"flex items-center justify-between p-4 bg-white dark:bg-gray-800 rounded-lg"},[e("div",null,[e("span",ee,r(t.contractor_name),1),s[10]||(s[10]=e("span",{class:"text-gray-500"}," möchte Sie als Subunternehmer",-1))]),e("div",te,[e("button",{onClick:m=>E(t,!0),class:"btn btn-success text-sm"}," Annehmen ",8,se),e("button",{onClick:m=>E(t,!1),class:"btn btn-danger text-sm"}," Ablehnen ",8,ae)])]))),128))])])):d("",!0),S.value?(l(),n("div",ne," Lädt... ")):N.value.length===0?(l(),n("div",le,[s[12]||(s[12]=e("span",{class:"text-4xl"},"🤝",-1)),s[13]||(s[13]=e("p",{class:"mt-4 text-gray-500"},"Noch keine aktiven Partnerschaften",-1)),V(B).isChef?(l(),n("button",{key:0,onClick:s[1]||(s[1]=t=>p.value=!0),class:"btn btn-primary mt-4"}," Subunternehmer einladen ")):d("",!0)])):(l(),n("div",re,[(l(!0),n(x,null,h(N.value,t=>(l(),n("div",{key:t.id,class:"card hover:shadow-lg transition-shadow cursor-pointer",onClick:m=>G(t)},[e("div",ie,[e("div",null,[e("span",de,r(t.my_role==="contractor"?"Subunternehmer":"Hauptunternehmer"),1),e("h3",ue,r(t.my_role==="contractor"?t.subcontractor_name:t.contractor_name),1)]),e("span",{class:y(["badge",F(t.status)])},r(j(t.status)),3)]),e("div",ce,[e("span",null,"📋 "+r(t.shared_orders_count)+" Aufträge",1),e("span",null,"💰 "+r(t.rates_count)+" Sätze",1)])],8,oe))),128))])),p.value?(l(),n("div",ve,[e("div",ge,[s[17]||(s[17]=e("h2",{class:"text-xl font-bold text-gray-900 dark:text-white mb-4"}," Subunternehmer einladen ",-1)),e("div",me,[e("div",null,[s[14]||(s[14]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Organisation (Kürzel) ",-1)),M(e("input",{"onUpdate:modelValue":s[2]||(s[2]=t=>b.value=t),type:"text",class:"input",placeholder:"z.B. muster-security"},null,512),[[T,b.value]]),s[15]||(s[15]=e("p",{class:"mt-1 text-xs text-gray-500"}," Das Kürzel, mit dem sich die Organisation registriert hat ",-1))]),e("div",null,[s[16]||(s[16]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Notizen (optional) ",-1)),M(e("textarea",{"onUpdate:modelValue":s[3]||(s[3]=t=>_.value=t),class:"input",rows:"2",placeholder:"z.B. Rahmenvertrag vom 01.01.2026"},null,512),[[T,_.value]])]),k.value?(l(),n("div",be,r(k.value),1)):d("",!0)]),e("div",xe,[e("button",{onClick:s[4]||(s[4]=t=>p.value=!1),class:"btn btn-secondary"}," Abbrechen "),e("button",{onClick:q,disabled:f.value||!b.value,class:"btn btn-primary"},r(f.value?"Lädt...":"Einladen"),9,ye)])])])):d("",!0),A.value&&u.value?(l(),n("div",pe,[e("div",he,[e("div",_e,[e("div",fe,[e("div",null,[e("span",ke,r(u.value.my_role==="contractor"?"Subunternehmer":"Hauptunternehmer"),1),e("h2",we,r(u.value.my_role==="contractor"?u.value.subcontractor_name:u.value.contractor_name),1)]),e("button",{onClick:s[5]||(s[5]=t=>A.value=!1),class:"text-gray-400 hover:text-gray-600 text-2xl"}," × ")]),e("div",Ce,[e("button",{onClick:s[6]||(s[6]=t=>c.value="orders"),class:y(["px-4 py-2 rounded-lg",c.value==="orders"?"bg-primary-100 text-primary-700":"text-gray-500"])}," 📋 Aufträge ",2),e("button",{onClick:s[7]||(s[7]=t=>c.value="timesheets"),class:y(["px-4 py-2 rounded-lg",c.value==="timesheets"?"bg-primary-100 text-primary-700":"text-gray-500"])}," ⏱️ Stundenzettel ",2),e("button",{onClick:s[8]||(s[8]=t=>c.value="billing"),class:y(["px-4 py-2 rounded-lg",c.value==="billing"?"bg-primary-100 text-primary-700":"text-gray-500"])}," 💰 Abrechnung ",2)])]),e("div",Se,[c.value==="orders"?(l(),n("div",$e,[(C=(i=z.value)==null?void 0:i.recentOrders)!=null&&C.length?(l(),n("div",Ae,[(l(!0),n(x,null,h(z.value.recentOrders,t=>(l(),n("div",{key:t.id,class:"p-4 bg-gray-50 dark:bg-gray-700 rounded-lg"},[e("div",ze,[e("div",null,[e("span",De,r(t.order_title),1),e("div",Fe,r(t.start_time?R(t.start_time):"Kein Datum"),1)]),e("span",{class:y(["badge",F(t.status)])},r(j(t.status)),3)])]))),128))])):(l(),n("div",je," Keine geteilten Aufträge "))])):d("",!0),c.value==="timesheets"?(l(),n("div",Be,[w.value.length?(l(),n("div",Ee,[(l(!0),n(x,null,h(w.value,t=>(l(),n("div",{key:t.id,class:"p-4 bg-gray-50 dark:bg-gray-700 rounded-lg"},[e("div",Pe,[e("div",null,[e("span",Le,r(t.worker_name),1),e("div",Ne,r(R(t.work_date))+" • "+r(t.hours_worked)+"h • "+r(t.order_title),1),t.calculated_amount_cents?(l(),n("div",Re,r(I(t.calculated_amount_cents)),1)):d("",!0)]),e("div",Ke,[e("span",{class:y(["badge",F(t.approval_status)])},r(j(t.approval_status)),3),u.value.my_role==="contractor"&&t.approval_status==="pending"?(l(),n(x,{key:0},[e("button",{onClick:m=>P(t,!0),class:"btn btn-success text-xs"},"✓",8,Oe),e("button",{onClick:m=>P(t,!1),class:"btn btn-danger text-xs"},"✗",8,Ve)],64)):d("",!0)])])]))),128))])):(l(),n("div",Me," Keine Stundenzettel "))])):d("",!0),c.value==="billing"&&v.value?(l(),n("div",Te,[e("div",Ue,[e("div",qe,[e("div",Ge,r(v.value.summary.pending.amount.toFixed(2))+" € ",1),e("div",Ie,r(v.value.summary.pending.count)+" ausstehend",1)]),e("div",He,[e("div",Je,r(v.value.summary.approved.amount.toFixed(2))+" € ",1),e("div",Qe,r(v.value.summary.approved.count)+" genehmigt",1)]),e("div",We,[e("div",Xe,r(v.value.summary.approved.hours.toFixed(1))+" h ",1),s[18]||(s[18]=e("div",{class:"text-sm text-blue-600"},"Gesamt-Stunden",-1))])]),s[19]||(s[19]=e("h3",{class:"font-semibold text-gray-900 dark:text-white mb-3"},"Nach Stundensatz",-1)),e("div",Ye,[(l(!0),n(x,null,h(v.value.byRate,t=>{var m,K,O;return l(),n("div",{key:t.rate_name,class:"flex items-center justify-between p-3 bg-gray-50 dark:bg-gray-700 rounded-lg"},[e("div",null,[e("span",Ze,r(t.rate_name||"Standard"),1),e("span",et,r((m=t.rate_amount)==null?void 0:m.toFixed(2))+" €/h",1)]),e("div",tt,[e("div",st,r((K=t.total_amount)==null?void 0:K.toFixed(2))+" €",1),e("div",at,r((O=t.total_hours)==null?void 0:O.toFixed(1))+"h",1)])])}),128))])])):d("",!0)])])])):d("",!0)])}}});export{rt as default}; diff --git a/dist/assets/QualificationsView-HIWg4xhg.js b/dist/assets/QualificationsView-HIWg4xhg.js new file mode 100644 index 0000000..735b899 --- /dev/null +++ b/dist/assets/QualificationsView-HIWg4xhg.js @@ -0,0 +1 @@ +import{d as R,u as X,q as Y,m as g,c as a,a as e,y as T,e as r,n as k,p as j,t as n,b as c,v as _,s as A,F as x,x as f,A as q,w as ee,r as d,k as N,o as l}from"./index-CVUlgynU.js";const te={class:"space-y-6"},ie={class:"flex items-center justify-between"},se={class:"flex gap-2 border-b dark:border-gray-700"},ae={key:0,class:"bg-red-500 text-white text-xs px-2 py-0.5 rounded-full"},le={key:0,class:"text-center py-12"},ne={key:1,class:"space-y-4"},oe={class:"card"},re={class:"grid grid-cols-1 md:grid-cols-4 gap-4"},de=["value"],ue=["value"],ce={key:0,class:"card text-center py-12 text-gray-500"},pe={key:1,class:"grid gap-4"},ve={class:"flex items-start justify-between"},xe={class:"flex items-start gap-4"},fe={class:"text-3xl"},me={class:"font-semibold text-gray-900 dark:text-white"},ye={class:"text-sm text-gray-500"},ge={class:"flex flex-wrap gap-2 mt-2"},_e={key:0,class:"text-xs text-gray-500"},be={key:1,class:"text-xs text-gray-500"},ke={key:2,class:"text-xs text-gray-500"},he={key:0,class:"flex gap-2"},we=["onClick"],Qe=["onClick"],Ce={key:2,class:"space-y-6"},Ue={key:0,class:"space-y-4"},Ae={class:"text-lg font-semibold text-red-600 flex items-center gap-2"},Se={class:"grid gap-3"},Ve={class:"flex items-center justify-between"},Me={class:"flex items-center gap-3"},Le={class:"text-2xl"},$e={class:"font-medium"},Te={class:"text-sm text-gray-600 dark:text-gray-400"},Ne={class:"text-right"},Be={class:"text-sm text-gray-500"},De={key:1,class:"space-y-4"},Fe={class:"text-lg font-semibold text-yellow-600 flex items-center gap-2"},ze={class:"grid gap-3"},je={class:"flex items-center justify-between"},Ee={class:"flex items-center gap-3"},Ke={class:"text-2xl"},Oe={class:"font-medium"},Ge={class:"text-sm text-gray-600 dark:text-gray-400"},Ie={class:"text-right"},He={class:"text-sm font-medium text-yellow-600"},Pe={class:"text-sm text-gray-500"},We={key:2,class:"card text-center py-12"},Ze={key:3,class:"card"},Je={key:4,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50"},Re={class:"bg-white dark:bg-gray-800 rounded-lg shadow-xl w-full max-w-lg mx-4 max-h-[90vh] overflow-y-auto"},Xe={class:"p-6"},Ye={class:"text-xl font-semibold mb-4"},qe={key:0},et=["value"],tt={key:1},it={class:"grid grid-cols-1 gap-2 max-h-48 overflow-y-auto border dark:border-gray-600 rounded-lg p-2"},st={class:"text-xs font-medium text-gray-500 sticky top-0 bg-white dark:bg-gray-800 py-1"},at=["onClick"],lt={key:0,class:"text-sm text-blue-600 mt-1"},nt={class:"grid grid-cols-2 gap-4"},ot={class:"flex gap-3 pt-4"},rt=["disabled"],pt=R({__name:"QualificationsView",setup(dt){const S=X(),B=d(!0),D=d([]),m=d({system:[],custom:[],categories:[]}),u=d({expired:[],expiring_soon:[]}),V=d([]),h=d(""),w=d(""),Q=d(""),C=d(""),b=d(!1),y=d(null),o=d({user_id:"",qualification_type_id:"",org_qualification_type_id:"",issued_date:"",expiry_date:"",issuer:"",certificate_number:"",level:"",notes:""}),U=d(!1),v=d("list");Y(async()=>{await Promise.all([E(),M(),L(),K()]),B.value=!1});async function E(){try{const s=await g.get("/qualifications/types");m.value=s}catch(s){console.error("Failed to load types:",s)}}async function M(){try{D.value=await g.get("/qualifications")}catch(s){console.error("Failed to load qualifications:",s)}}async function L(){try{u.value=await g.get("/qualifications/expiring?days=30")}catch(s){console.error("Failed to load expiring:",s)}}async function K(){try{V.value=await g.get("/users")}catch(s){console.error("Failed to load users:",s)}}const F=N(()=>{let s=[...D.value];if(h.value&&(s=s.filter(t=>t.user_id===h.value)),w.value&&(s=s.filter(t=>t.category===w.value)),Q.value&&(s=s.filter(t=>t.expiry_status===Q.value)),C.value){const t=C.value.toLowerCase();s=s.filter(i=>i.qualification_name.toLowerCase().includes(t)||i.first_name.toLowerCase().includes(t)||i.last_name.toLowerCase().includes(t))}return s}),O=N(()=>[...m.value.system,...m.value.custom]);function G(){y.value=null,o.value={user_id:"",qualification_type_id:"",org_qualification_type_id:"",issued_date:"",expiry_date:"",issuer:"",certificate_number:"",level:"",notes:""},b.value=!0}function I(s){y.value=s,o.value={user_id:s.user_id,qualification_type_id:"",org_qualification_type_id:"",issued_date:s.issued_date||"",expiry_date:s.expiry_date||"",issuer:s.issuer||"",certificate_number:s.certificate_number||"",level:s.level||"",notes:""},b.value=!0}async function H(){if(!(!o.value.user_id||!o.value.qualification_type_id&&!o.value.org_qualification_type_id)){U.value=!0;try{y.value?await g.put(`/qualifications/${y.value.id}`,o.value):await g.post("/qualifications",o.value),b.value=!1,await M(),await L()}catch(s){console.error("Failed to save:",s)}finally{U.value=!1}}}async function P(s){if(confirm("Qualifikation wirklich löschen?"))try{await g.delete(`/qualifications/${s}`),await M(),await L()}catch(t){console.error("Failed to delete:",t)}}function W(s){switch(s){case"valid":return"bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200";case"expiring_soon":return"bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200";case"expired":return"bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200";case"no_expiry":return"bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-200";default:return"bg-gray-100 text-gray-800"}}function Z(s){switch(s){case"valid":return"Gültig";case"expiring_soon":return"Läuft ab";case"expired":return"Abgelaufen";case"no_expiry":return"Unbefristet";default:return s}}function $(s){return s?new Date(s).toLocaleDateString("de-DE"):"-"}function J(s){s.source==="system"?(o.value.qualification_type_id=s.id,o.value.org_qualification_type_id=""):(o.value.org_qualification_type_id=s.id,o.value.qualification_type_id="")}const z=N(()=>{const s=o.value.qualification_type_id||o.value.org_qualification_type_id;if(!s)return"";const t=O.value.find(i=>i.id===s);return t?`${t.icon} ${t.name}`:""});return(s,t)=>(l(),a("div",te,[e("div",ie,[t[15]||(t[15]=e("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"🎓 Qualifikationen",-1)),T(S).canManageUsers?(l(),a("button",{key:0,onClick:G,class:"btn btn-primary"}," ➕ Qualifikation hinzufügen ")):r("",!0)]),e("div",se,[e("button",{onClick:t[0]||(t[0]=i=>v.value="list"),class:k(["px-4 py-2 font-medium border-b-2 transition-colors",v.value==="list"?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700"])}," 📋 Übersicht ",2),e("button",{onClick:t[1]||(t[1]=i=>v.value="expiring"),class:k(["px-4 py-2 font-medium border-b-2 transition-colors flex items-center gap-2",v.value==="expiring"?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700"])},[t[16]||(t[16]=j(" ⚠️ Ablaufend ",-1)),u.value.expired.length+u.value.expiring_soon.length>0?(l(),a("span",ae,n(u.value.expired.length+u.value.expiring_soon.length),1)):r("",!0)],2),T(S).canManageUsers?(l(),a("button",{key:0,onClick:t[2]||(t[2]=i=>v.value="matrix"),class:k(["px-4 py-2 font-medium border-b-2 transition-colors",v.value==="matrix"?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700"])}," 📊 Matrix ",2)):r("",!0)]),B.value?(l(),a("div",le,[...t[17]||(t[17]=[e("div",{class:"animate-spin text-4xl"},"⏳",-1),e("p",{class:"mt-2 text-gray-500"},"Lade Qualifikationen...",-1)])])):v.value==="list"?(l(),a("div",ne,[e("div",oe,[e("div",re,[e("div",null,[t[18]||(t[18]=e("label",{class:"block text-sm font-medium mb-1"},"🔍 Suche",-1)),c(e("input",{"onUpdate:modelValue":t[3]||(t[3]=i=>C.value=i),type:"text",class:"input",placeholder:"Name oder Qualifikation..."},null,512),[[_,C.value]])]),e("div",null,[t[20]||(t[20]=e("label",{class:"block text-sm font-medium mb-1"},"👤 Mitarbeiter",-1)),c(e("select",{"onUpdate:modelValue":t[4]||(t[4]=i=>h.value=i),class:"input"},[t[19]||(t[19]=e("option",{value:""},"Alle",-1)),(l(!0),a(x,null,f(V.value,i=>(l(),a("option",{key:i.id,value:i.id},n(i.first_name)+" "+n(i.last_name),9,de))),128))],512),[[A,h.value]])]),e("div",null,[t[22]||(t[22]=e("label",{class:"block text-sm font-medium mb-1"},"📂 Kategorie",-1)),c(e("select",{"onUpdate:modelValue":t[5]||(t[5]=i=>w.value=i),class:"input"},[t[21]||(t[21]=e("option",{value:""},"Alle",-1)),(l(!0),a(x,null,f(m.value.categories,i=>(l(),a("option",{key:i.key,value:i.key},n(i.icon)+" "+n(i.name),9,ue))),128))],512),[[A,w.value]])]),e("div",null,[t[24]||(t[24]=e("label",{class:"block text-sm font-medium mb-1"},"📊 Status",-1)),c(e("select",{"onUpdate:modelValue":t[6]||(t[6]=i=>Q.value=i),class:"input"},[...t[23]||(t[23]=[q('',5)])],512),[[A,Q.value]])])])]),F.value.length===0?(l(),a("div",ce," Keine Qualifikationen gefunden ")):(l(),a("div",pe,[(l(!0),a(x,null,f(F.value,i=>(l(),a("div",{key:i.id,class:"card hover:shadow-md transition-shadow"},[e("div",ve,[e("div",xe,[e("div",fe,n(i.icon),1),e("div",null,[e("h3",me,n(i.qualification_name),1),e("p",ye,n(i.first_name)+" "+n(i.last_name),1),e("div",ge,[e("span",{class:k(["px-2 py-0.5 rounded text-xs font-medium",W(i.expiry_status)])},n(Z(i.expiry_status)),3),i.expiry_date?(l(),a("span",_e," 📅 "+n($(i.expiry_date)),1)):r("",!0),i.issuer?(l(),a("span",be," 🏢 "+n(i.issuer),1)):r("",!0),i.certificate_number?(l(),a("span",ke," #"+n(i.certificate_number),1)):r("",!0)])])]),T(S).canManageUsers?(l(),a("div",he,[e("button",{onClick:p=>I(i),class:"p-2 hover:bg-gray-100 dark:hover:bg-gray-700 rounded"}," ✏️ ",8,we),e("button",{onClick:p=>P(i.id),class:"p-2 hover:bg-red-100 dark:hover:bg-red-900 rounded text-red-600"}," 🗑️ ",8,Qe)])):r("",!0)])]))),128))]))])):v.value==="expiring"?(l(),a("div",Ce,[u.value.expired.length>0?(l(),a("div",Ue,[e("h2",Ae," ❌ Abgelaufen ("+n(u.value.expired.length)+") ",1),e("div",Se,[(l(!0),a(x,null,f(u.value.expired,i=>(l(),a("div",{key:i.id,class:"card border-l-4 border-red-500 bg-red-50 dark:bg-red-900/20"},[e("div",Ve,[e("div",Me,[e("span",Le,n(i.icon),1),e("div",null,[e("p",$e,n(i.qualification_name),1),e("p",Te,n(i.first_name)+" "+n(i.last_name),1)])]),e("div",Ne,[t[25]||(t[25]=e("p",{class:"text-sm font-medium text-red-600"},"Abgelaufen",-1)),e("p",Be,n($(i.expiry_date)),1)])])]))),128))])])):r("",!0),u.value.expiring_soon.length>0?(l(),a("div",De,[e("h2",Fe," ⚠️ Läuft bald ab ("+n(u.value.expiring_soon.length)+") ",1),e("div",ze,[(l(!0),a(x,null,f(u.value.expiring_soon,i=>(l(),a("div",{key:i.id,class:"card border-l-4 border-yellow-500 bg-yellow-50 dark:bg-yellow-900/20"},[e("div",je,[e("div",Ee,[e("span",Ke,n(i.icon),1),e("div",null,[e("p",Oe,n(i.qualification_name),1),e("p",Ge,n(i.first_name)+" "+n(i.last_name),1)])]),e("div",Ie,[e("p",He," Noch "+n(i.days_until_expiry)+" Tage ",1),e("p",Pe,n($(i.expiry_date)),1)])])]))),128))])])):r("",!0),u.value.expired.length===0&&u.value.expiring_soon.length===0?(l(),a("div",We,[...t[26]||(t[26]=[e("div",{class:"text-4xl mb-4"},"✅",-1),e("p",{class:"text-lg font-medium text-green-600"},"Alles in Ordnung!",-1),e("p",{class:"text-gray-500"},"Keine ablaufenden Qualifikationen in den nächsten 30 Tagen.",-1)])])):r("",!0)])):v.value==="matrix"?(l(),a("div",Ze,[...t[27]||(t[27]=[e("p",{class:"text-gray-500 text-center py-12"},[j(" 📊 Qualifikations-Matrix wird geladen..."),e("br"),e("span",{class:"text-sm"},"Übersicht: Welcher Mitarbeiter hat welche Qualifikation")],-1)])])):r("",!0),b.value?(l(),a("div",Je,[e("div",Re,[e("div",Xe,[e("h2",Ye,n(y.value?"✏️ Qualifikation bearbeiten":"➕ Neue Qualifikation"),1),e("form",{onSubmit:ee(H,["prevent"]),class:"space-y-4"},[y.value?r("",!0):(l(),a("div",qe,[t[29]||(t[29]=e("label",{class:"block text-sm font-medium mb-1"},"Mitarbeiter *",-1)),c(e("select",{"onUpdate:modelValue":t[7]||(t[7]=i=>o.value.user_id=i),class:"input",required:""},[t[28]||(t[28]=e("option",{value:""},"Bitte wählen...",-1)),(l(!0),a(x,null,f(V.value,i=>(l(),a("option",{key:i.id,value:i.id},n(i.first_name)+" "+n(i.last_name),9,et))),128))],512),[[A,o.value.user_id]])])),y.value?r("",!0):(l(),a("div",tt,[t[30]||(t[30]=e("label",{class:"block text-sm font-medium mb-1"},"Qualifikation *",-1)),e("div",it,[(l(!0),a(x,null,f(m.value.categories,i=>(l(),a("div",{key:i.key,class:"space-y-1"},[e("p",st,n(i.icon)+" "+n(i.name),1),(l(!0),a(x,null,f([...m.value.system,...m.value.custom].filter(p=>p.category===i.key),p=>(l(),a("button",{key:p.id,type:"button",onClick:ut=>J(p),class:k(["w-full text-left px-3 py-2 rounded text-sm transition-colors",o.value.qualification_type_id===p.id||o.value.org_qualification_type_id===p.id?"bg-blue-100 dark:bg-blue-900 text-blue-800 dark:text-blue-200":"hover:bg-gray-100 dark:hover:bg-gray-700"])},n(p.icon)+" "+n(p.name),11,at))),128))]))),128))]),z.value?(l(),a("p",lt," Ausgewählt: "+n(z.value),1)):r("",!0)])),e("div",nt,[e("div",null,[t[31]||(t[31]=e("label",{class:"block text-sm font-medium mb-1"},"Ausstellungsdatum",-1)),c(e("input",{"onUpdate:modelValue":t[8]||(t[8]=i=>o.value.issued_date=i),type:"date",class:"input"},null,512),[[_,o.value.issued_date]])]),e("div",null,[t[32]||(t[32]=e("label",{class:"block text-sm font-medium mb-1"},"Ablaufdatum",-1)),c(e("input",{"onUpdate:modelValue":t[9]||(t[9]=i=>o.value.expiry_date=i),type:"date",class:"input"},null,512),[[_,o.value.expiry_date]])])]),e("div",null,[t[33]||(t[33]=e("label",{class:"block text-sm font-medium mb-1"},"Ausstellende Stelle",-1)),c(e("input",{"onUpdate:modelValue":t[10]||(t[10]=i=>o.value.issuer=i),type:"text",class:"input",placeholder:"z.B. IHK Berlin"},null,512),[[_,o.value.issuer]])]),e("div",null,[t[34]||(t[34]=e("label",{class:"block text-sm font-medium mb-1"},"Zertifikatsnummer",-1)),c(e("input",{"onUpdate:modelValue":t[11]||(t[11]=i=>o.value.certificate_number=i),type:"text",class:"input",placeholder:"Optional"},null,512),[[_,o.value.certificate_number]])]),e("div",null,[t[35]||(t[35]=e("label",{class:"block text-sm font-medium mb-1"},"Stufe/Level",-1)),c(e("input",{"onUpdate:modelValue":t[12]||(t[12]=i=>o.value.level=i),type:"text",class:"input",placeholder:"z.B. B2 (für Sprachen)"},null,512),[[_,o.value.level]])]),e("div",null,[t[36]||(t[36]=e("label",{class:"block text-sm font-medium mb-1"},"Notizen",-1)),c(e("textarea",{"onUpdate:modelValue":t[13]||(t[13]=i=>o.value.notes=i),class:"input",rows:"2",placeholder:"Optional"},null,512),[[_,o.value.notes]])]),e("div",ot,[e("button",{type:"button",onClick:t[14]||(t[14]=i=>b.value=!1),class:"btn flex-1"}," Abbrechen "),e("button",{type:"submit",disabled:U.value,class:"btn btn-primary flex-1"},n(U.value?"Speichern...":"Speichern"),9,rt)])],32)])])])):r("",!0)]))}});export{pt as default}; diff --git a/dist/assets/RegisterOrgView-Cm_uvfRR.js b/dist/assets/RegisterOrgView-BLP8qTxS.js similarity index 99% rename from dist/assets/RegisterOrgView-Cm_uvfRR.js rename to dist/assets/RegisterOrgView-BLP8qTxS.js index 3f40bde..3bb8b99 100644 --- a/dist/assets/RegisterOrgView-Cm_uvfRR.js +++ b/dist/assets/RegisterOrgView-BLP8qTxS.js @@ -1 +1 @@ -import{d as T,h as U,c as n,a as t,n as C,b as o,v as u,e as g,i as B,j as L,w as M,t as j,r as l,k as z,l as O,o as r,m as R,f as $,p as E}from"./index-Dox4jtA_.js";const D={class:"min-h-screen flex items-center justify-center bg-gray-50 dark:bg-gray-900 py-12 px-4"},W={class:"max-w-lg w-full"},Z={class:"flex items-center justify-center mb-8"},A={class:"flex items-center"},F={class:"card"},q={key:0},G={class:"space-y-4"},H={class:"flex items-center gap-2"},I={key:0,class:"text-gray-400"},J={key:1,class:"text-green-500"},Q={key:2,class:"text-red-500"},X={key:0,class:"mt-1 text-xs text-red-500"},Y={class:"mt-6 flex justify-between"},ee=["disabled"],te={key:1},se={class:"grid grid-cols-2 gap-4"},le={key:0,class:"mt-1 text-xs text-red-500"},ae={key:0,class:"p-3 bg-red-50 dark:bg-red-900/20 text-red-600 dark:text-red-400 rounded-lg text-sm"},ne={class:"mt-6 flex justify-between"},re=["disabled"],ue=T({__name:"RegisterOrgView",setup(ie){const P=$(),d=l(1),c=l(!1),y=l(""),w=l(!1),m=l(null),p=l(""),i=l(""),x=l(""),v=l(""),b=l(""),f=l(""),k=l(""),h=l("");U(p,a=>{a&&!i.value&&(i.value=a.toLowerCase().replace(/[äöüß]/g,e=>({ä:"ae",ö:"oe",ü:"ue",ß:"ss"})[e]||e).replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,30))});let _;U(i,async a=>{clearTimeout(_),m.value=null,!(a.length<3)&&(w.value=!0,_=setTimeout(async()=>{try{const V=await(await fetch(`/api/organizations/check/${a}`)).json();m.value=V.available}catch{m.value=null}w.value=!1},500))});const S=z(()=>p.value.length>=2&&i.value.length>=3&&m.value===!0),N=z(()=>x.value.includes("@")&&v.value.length>=8&&v.value===b.value&&f.value.length>=2&&k.value.length>=2);async function K(){if(N.value){y.value="",c.value=!0;try{await R.post("/organizations/register",{name:p.value,slug:i.value,admin_email:x.value,admin_password:v.value,admin_first_name:f.value,admin_last_name:k.value,admin_phone:h.value||void 0}),P.push({name:"login",query:{registered:"true",org:i.value,email:x.value}})}catch(a){y.value=a instanceof Error?a.message:"Registrierung fehlgeschlagen"}finally{c.value=!1}}}return(a,e)=>{const V=O("router-link");return r(),n("div",D,[t("div",W,[e[22]||(e[22]=t("div",{class:"text-center mb-8"},[t("h1",{class:"text-4xl font-bold text-primary-600"},"🔐 SeCu"),t("p",{class:"mt-2 text-gray-600 dark:text-gray-400"},"Organisation registrieren")],-1)),t("div",Z,[t("div",A,[t("div",{class:C(["w-10 h-10 rounded-full flex items-center justify-center text-white font-bold",d.value>=1?"bg-primary-600":"bg-gray-300"])},"1",2),t("div",{class:C(["w-24 h-1 mx-2",d.value>=2?"bg-primary-600":"bg-gray-300"])},null,2),t("div",{class:C(["w-10 h-10 rounded-full flex items-center justify-center font-bold",d.value>=2?"bg-primary-600 text-white":"bg-gray-300 text-gray-600"])},"2",2)])]),t("div",F,[d.value===1?(r(),n("div",q,[e[14]||(e[14]=t("h2",{class:"text-xl font-semibold text-gray-900 dark:text-white mb-6"}," Ihre Organisation ",-1)),t("div",G,[t("div",null,[e[10]||(e[10]=t("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Firmenname * ",-1)),o(t("input",{"onUpdate:modelValue":e[0]||(e[0]=s=>p.value=s),type:"text",class:"input",placeholder:"z.B. Muster Sicherheit GmbH"},null,512),[[u,p.value]])]),t("div",null,[e[11]||(e[11]=t("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," URL-Kürzel * ",-1)),t("div",H,[o(t("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>i.value=s),type:"text",class:"input",placeholder:"muster-sicherheit"},null,512),[[u,i.value]]),w.value?(r(),n("span",I,"⏳")):m.value===!0?(r(),n("span",J,"✓")):m.value===!1?(r(),n("span",Q,"✗")):g("",!0)]),e[12]||(e[12]=t("p",{class:"mt-1 text-xs text-gray-500"}," Wird für den Login verwendet. Nur Kleinbuchstaben und Bindestriche. ",-1)),m.value===!1?(r(),n("p",X," Dieses Kürzel ist bereits vergeben. ")):g("",!0)])]),t("div",Y,[B(V,{to:"/login",class:"btn btn-secondary"},{default:L(()=>[...e[13]||(e[13]=[E(" ← Zurück zum Login ",-1)])]),_:1}),t("button",{onClick:e[2]||(e[2]=s=>d.value=2),disabled:!S.value,class:"btn btn-primary"}," Weiter → ",8,ee)])])):g("",!0),d.value===2?(r(),n("div",te,[e[21]||(e[21]=t("h2",{class:"text-xl font-semibold text-gray-900 dark:text-white mb-6"}," Administrator-Konto ",-1)),t("form",{onSubmit:M(K,["prevent"]),class:"space-y-4"},[t("div",se,[t("div",null,[e[15]||(e[15]=t("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Vorname * ",-1)),o(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>f.value=s),type:"text",class:"input"},null,512),[[u,f.value]])]),t("div",null,[e[16]||(e[16]=t("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Nachname * ",-1)),o(t("input",{"onUpdate:modelValue":e[4]||(e[4]=s=>k.value=s),type:"text",class:"input"},null,512),[[u,k.value]])])]),t("div",null,[e[17]||(e[17]=t("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," E-Mail * ",-1)),o(t("input",{"onUpdate:modelValue":e[5]||(e[5]=s=>x.value=s),type:"email",class:"input"},null,512),[[u,x.value]])]),t("div",null,[e[18]||(e[18]=t("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Telefon ",-1)),o(t("input",{"onUpdate:modelValue":e[6]||(e[6]=s=>h.value=s),type:"tel",class:"input",placeholder:"Optional"},null,512),[[u,h.value]])]),t("div",null,[e[19]||(e[19]=t("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Passwort * ",-1)),o(t("input",{"onUpdate:modelValue":e[7]||(e[7]=s=>v.value=s),type:"password",class:"input",placeholder:"Mindestens 8 Zeichen"},null,512),[[u,v.value]])]),t("div",null,[e[20]||(e[20]=t("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Passwort bestätigen * ",-1)),o(t("input",{"onUpdate:modelValue":e[8]||(e[8]=s=>b.value=s),type:"password",class:"input"},null,512),[[u,b.value]]),v.value&&b.value&&v.value!==b.value?(r(),n("p",le," Passwörter stimmen nicht überein ")):g("",!0)]),y.value?(r(),n("div",ae,j(y.value),1)):g("",!0),t("div",ne,[t("button",{type:"button",onClick:e[9]||(e[9]=s=>d.value=1),class:"btn btn-secondary"}," ← Zurück "),t("button",{type:"submit",disabled:!N.value||c.value,class:"btn btn-primary"},j(c.value?"Wird erstellt...":"Organisation erstellen"),9,re)])],32)])):g("",!0)]),e[23]||(e[23]=t("div",{class:"mt-6 text-center text-sm text-gray-500 dark:text-gray-400"},[t("p",null,"Nach der Registrierung können Sie sofort loslegen."),t("p",{class:"mt-1"},"Kostenlos starten • Keine Kreditkarte nötig")],-1))])])}}});export{ue as default}; +import{d as T,h as U,c as n,a as t,n as C,b as o,v as u,e as g,i as B,j as L,w as M,t as j,r as l,k as z,l as O,o as r,m as R,f as $,p as E}from"./index-CVUlgynU.js";const D={class:"min-h-screen flex items-center justify-center bg-gray-50 dark:bg-gray-900 py-12 px-4"},W={class:"max-w-lg w-full"},Z={class:"flex items-center justify-center mb-8"},A={class:"flex items-center"},F={class:"card"},q={key:0},G={class:"space-y-4"},H={class:"flex items-center gap-2"},I={key:0,class:"text-gray-400"},J={key:1,class:"text-green-500"},Q={key:2,class:"text-red-500"},X={key:0,class:"mt-1 text-xs text-red-500"},Y={class:"mt-6 flex justify-between"},ee=["disabled"],te={key:1},se={class:"grid grid-cols-2 gap-4"},le={key:0,class:"mt-1 text-xs text-red-500"},ae={key:0,class:"p-3 bg-red-50 dark:bg-red-900/20 text-red-600 dark:text-red-400 rounded-lg text-sm"},ne={class:"mt-6 flex justify-between"},re=["disabled"],ue=T({__name:"RegisterOrgView",setup(ie){const P=$(),d=l(1),c=l(!1),y=l(""),w=l(!1),m=l(null),p=l(""),i=l(""),x=l(""),v=l(""),b=l(""),f=l(""),k=l(""),h=l("");U(p,a=>{a&&!i.value&&(i.value=a.toLowerCase().replace(/[äöüß]/g,e=>({ä:"ae",ö:"oe",ü:"ue",ß:"ss"})[e]||e).replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,30))});let _;U(i,async a=>{clearTimeout(_),m.value=null,!(a.length<3)&&(w.value=!0,_=setTimeout(async()=>{try{const V=await(await fetch(`/api/organizations/check/${a}`)).json();m.value=V.available}catch{m.value=null}w.value=!1},500))});const S=z(()=>p.value.length>=2&&i.value.length>=3&&m.value===!0),N=z(()=>x.value.includes("@")&&v.value.length>=8&&v.value===b.value&&f.value.length>=2&&k.value.length>=2);async function K(){if(N.value){y.value="",c.value=!0;try{await R.post("/organizations/register",{name:p.value,slug:i.value,admin_email:x.value,admin_password:v.value,admin_first_name:f.value,admin_last_name:k.value,admin_phone:h.value||void 0}),P.push({name:"login",query:{registered:"true",org:i.value,email:x.value}})}catch(a){y.value=a instanceof Error?a.message:"Registrierung fehlgeschlagen"}finally{c.value=!1}}}return(a,e)=>{const V=O("router-link");return r(),n("div",D,[t("div",W,[e[22]||(e[22]=t("div",{class:"text-center mb-8"},[t("h1",{class:"text-4xl font-bold text-primary-600"},"🔐 SeCu"),t("p",{class:"mt-2 text-gray-600 dark:text-gray-400"},"Organisation registrieren")],-1)),t("div",Z,[t("div",A,[t("div",{class:C(["w-10 h-10 rounded-full flex items-center justify-center text-white font-bold",d.value>=1?"bg-primary-600":"bg-gray-300"])},"1",2),t("div",{class:C(["w-24 h-1 mx-2",d.value>=2?"bg-primary-600":"bg-gray-300"])},null,2),t("div",{class:C(["w-10 h-10 rounded-full flex items-center justify-center font-bold",d.value>=2?"bg-primary-600 text-white":"bg-gray-300 text-gray-600"])},"2",2)])]),t("div",F,[d.value===1?(r(),n("div",q,[e[14]||(e[14]=t("h2",{class:"text-xl font-semibold text-gray-900 dark:text-white mb-6"}," Ihre Organisation ",-1)),t("div",G,[t("div",null,[e[10]||(e[10]=t("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Firmenname * ",-1)),o(t("input",{"onUpdate:modelValue":e[0]||(e[0]=s=>p.value=s),type:"text",class:"input",placeholder:"z.B. Muster Sicherheit GmbH"},null,512),[[u,p.value]])]),t("div",null,[e[11]||(e[11]=t("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," URL-Kürzel * ",-1)),t("div",H,[o(t("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>i.value=s),type:"text",class:"input",placeholder:"muster-sicherheit"},null,512),[[u,i.value]]),w.value?(r(),n("span",I,"⏳")):m.value===!0?(r(),n("span",J,"✓")):m.value===!1?(r(),n("span",Q,"✗")):g("",!0)]),e[12]||(e[12]=t("p",{class:"mt-1 text-xs text-gray-500"}," Wird für den Login verwendet. Nur Kleinbuchstaben und Bindestriche. ",-1)),m.value===!1?(r(),n("p",X," Dieses Kürzel ist bereits vergeben. ")):g("",!0)])]),t("div",Y,[B(V,{to:"/login",class:"btn btn-secondary"},{default:L(()=>[...e[13]||(e[13]=[E(" ← Zurück zum Login ",-1)])]),_:1}),t("button",{onClick:e[2]||(e[2]=s=>d.value=2),disabled:!S.value,class:"btn btn-primary"}," Weiter → ",8,ee)])])):g("",!0),d.value===2?(r(),n("div",te,[e[21]||(e[21]=t("h2",{class:"text-xl font-semibold text-gray-900 dark:text-white mb-6"}," Administrator-Konto ",-1)),t("form",{onSubmit:M(K,["prevent"]),class:"space-y-4"},[t("div",se,[t("div",null,[e[15]||(e[15]=t("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Vorname * ",-1)),o(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>f.value=s),type:"text",class:"input"},null,512),[[u,f.value]])]),t("div",null,[e[16]||(e[16]=t("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Nachname * ",-1)),o(t("input",{"onUpdate:modelValue":e[4]||(e[4]=s=>k.value=s),type:"text",class:"input"},null,512),[[u,k.value]])])]),t("div",null,[e[17]||(e[17]=t("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," E-Mail * ",-1)),o(t("input",{"onUpdate:modelValue":e[5]||(e[5]=s=>x.value=s),type:"email",class:"input"},null,512),[[u,x.value]])]),t("div",null,[e[18]||(e[18]=t("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Telefon ",-1)),o(t("input",{"onUpdate:modelValue":e[6]||(e[6]=s=>h.value=s),type:"tel",class:"input",placeholder:"Optional"},null,512),[[u,h.value]])]),t("div",null,[e[19]||(e[19]=t("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Passwort * ",-1)),o(t("input",{"onUpdate:modelValue":e[7]||(e[7]=s=>v.value=s),type:"password",class:"input",placeholder:"Mindestens 8 Zeichen"},null,512),[[u,v.value]])]),t("div",null,[e[20]||(e[20]=t("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"}," Passwort bestätigen * ",-1)),o(t("input",{"onUpdate:modelValue":e[8]||(e[8]=s=>b.value=s),type:"password",class:"input"},null,512),[[u,b.value]]),v.value&&b.value&&v.value!==b.value?(r(),n("p",le," Passwörter stimmen nicht überein ")):g("",!0)]),y.value?(r(),n("div",ae,j(y.value),1)):g("",!0),t("div",ne,[t("button",{type:"button",onClick:e[9]||(e[9]=s=>d.value=1),class:"btn btn-secondary"}," ← Zurück "),t("button",{type:"submit",disabled:!N.value||c.value,class:"btn btn-primary"},j(c.value?"Wird erstellt...":"Organisation erstellen"),9,re)])],32)])):g("",!0)]),e[23]||(e[23]=t("div",{class:"mt-6 text-center text-sm text-gray-500 dark:text-gray-400"},[t("p",null,"Nach der Registrierung können Sie sofort loslegen."),t("p",{class:"mt-1"},"Kostenlos starten • Keine Kreditkarte nötig")],-1))])])}}});export{ue as default}; diff --git a/dist/assets/SettingsView-CiueANf-.js b/dist/assets/SettingsView-Dui31Esj.js similarity index 97% rename from dist/assets/SettingsView-CiueANf-.js rename to dist/assets/SettingsView-Dui31Esj.js index e1a9382..cb5ac21 100644 --- a/dist/assets/SettingsView-CiueANf-.js +++ b/dist/assets/SettingsView-Dui31Esj.js @@ -1 +1 @@ -import{d as k,u as h,c as p,a as e,t as a,y as b,w as S,b as c,v as f,e as y,r as o,o as w,m as V}from"./index-Dox4jtA_.js";const N={class:"space-y-6"},E={class:"card"},_={class:"grid grid-cols-2 gap-4"},q={class:"font-medium"},B={class:"font-medium"},M={class:"font-medium capitalize"},U={class:"card"},A={key:0,class:"text-red-600 text-sm"},C={key:1,class:"text-green-600 text-sm"},D=["disabled"],R=k({__name:"SettingsView",setup(z){const m=h(),r=o(""),t=o(""),i=o(""),u=o(!1),d=o(""),l=o("");async function P(){if(t.value!==i.value){l.value="Passwörter stimmen nicht überein";return}if(t.value.length<8){l.value="Passwort muss mindestens 8 Zeichen haben";return}u.value=!0,l.value="",d.value="";try{await V.post("/auth/change-password",{currentPassword:r.value,newPassword:t.value}),d.value="Passwort erfolgreich geändert",r.value="",t.value="",i.value=""}catch(v){l.value=v instanceof Error?v.message:"Fehler beim Ändern"}finally{u.value=!1}}return(v,s)=>{var x,g;return w(),p("div",N,[s[11]||(s[11]=e("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"🔧 Einstellungen",-1)),e("div",E,[s[6]||(s[6]=e("h2",{class:"text-lg font-semibold mb-4"},"Profil",-1)),e("div",_,[e("div",null,[s[3]||(s[3]=e("label",{class:"block text-sm text-gray-500"},"Name",-1)),e("p",q,a(b(m).fullName),1)]),e("div",null,[s[4]||(s[4]=e("label",{class:"block text-sm text-gray-500"},"E-Mail",-1)),e("p",B,a((x=b(m).user)==null?void 0:x.email),1)]),e("div",null,[s[5]||(s[5]=e("label",{class:"block text-sm text-gray-500"},"Rolle",-1)),e("p",M,a((g=b(m).user)==null?void 0:g.role),1)])])]),e("div",U,[s[10]||(s[10]=e("h2",{class:"text-lg font-semibold mb-4"},"Passwort ändern",-1)),e("form",{onSubmit:S(P,["prevent"]),class:"space-y-4 max-w-md"},[e("div",null,[s[7]||(s[7]=e("label",{class:"block text-sm font-medium mb-1"},"Aktuelles Passwort",-1)),c(e("input",{"onUpdate:modelValue":s[0]||(s[0]=n=>r.value=n),type:"password",required:"",class:"input"},null,512),[[f,r.value]])]),e("div",null,[s[8]||(s[8]=e("label",{class:"block text-sm font-medium mb-1"},"Neues Passwort",-1)),c(e("input",{"onUpdate:modelValue":s[1]||(s[1]=n=>t.value=n),type:"password",required:"",class:"input"},null,512),[[f,t.value]])]),e("div",null,[s[9]||(s[9]=e("label",{class:"block text-sm font-medium mb-1"},"Passwort bestätigen",-1)),c(e("input",{"onUpdate:modelValue":s[2]||(s[2]=n=>i.value=n),type:"password",required:"",class:"input"},null,512),[[f,i.value]])]),l.value?(w(),p("div",A,a(l.value),1)):y("",!0),d.value?(w(),p("div",C,a(d.value),1)):y("",!0),e("button",{type:"submit",disabled:u.value,class:"btn btn-primary"},a(u.value?"Speichern...":"Passwort ändern"),9,D)],32)])])}}});export{R as default}; +import{d as k,u as h,c as p,a as e,t as a,y as b,w as S,b as c,v as f,e as y,r as o,o as w,m as V}from"./index-CVUlgynU.js";const N={class:"space-y-6"},E={class:"card"},_={class:"grid grid-cols-2 gap-4"},q={class:"font-medium"},B={class:"font-medium"},M={class:"font-medium capitalize"},U={class:"card"},A={key:0,class:"text-red-600 text-sm"},C={key:1,class:"text-green-600 text-sm"},D=["disabled"],R=k({__name:"SettingsView",setup(z){const m=h(),r=o(""),t=o(""),i=o(""),u=o(!1),d=o(""),l=o("");async function P(){if(t.value!==i.value){l.value="Passwörter stimmen nicht überein";return}if(t.value.length<8){l.value="Passwort muss mindestens 8 Zeichen haben";return}u.value=!0,l.value="",d.value="";try{await V.post("/auth/change-password",{currentPassword:r.value,newPassword:t.value}),d.value="Passwort erfolgreich geändert",r.value="",t.value="",i.value=""}catch(v){l.value=v instanceof Error?v.message:"Fehler beim Ändern"}finally{u.value=!1}}return(v,s)=>{var x,g;return w(),p("div",N,[s[11]||(s[11]=e("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"🔧 Einstellungen",-1)),e("div",E,[s[6]||(s[6]=e("h2",{class:"text-lg font-semibold mb-4"},"Profil",-1)),e("div",_,[e("div",null,[s[3]||(s[3]=e("label",{class:"block text-sm text-gray-500"},"Name",-1)),e("p",q,a(b(m).fullName),1)]),e("div",null,[s[4]||(s[4]=e("label",{class:"block text-sm text-gray-500"},"E-Mail",-1)),e("p",B,a((x=b(m).user)==null?void 0:x.email),1)]),e("div",null,[s[5]||(s[5]=e("label",{class:"block text-sm text-gray-500"},"Rolle",-1)),e("p",M,a((g=b(m).user)==null?void 0:g.role),1)])])]),e("div",U,[s[10]||(s[10]=e("h2",{class:"text-lg font-semibold mb-4"},"Passwort ändern",-1)),e("form",{onSubmit:S(P,["prevent"]),class:"space-y-4 max-w-md"},[e("div",null,[s[7]||(s[7]=e("label",{class:"block text-sm font-medium mb-1"},"Aktuelles Passwort",-1)),c(e("input",{"onUpdate:modelValue":s[0]||(s[0]=n=>r.value=n),type:"password",required:"",class:"input"},null,512),[[f,r.value]])]),e("div",null,[s[8]||(s[8]=e("label",{class:"block text-sm font-medium mb-1"},"Neues Passwort",-1)),c(e("input",{"onUpdate:modelValue":s[1]||(s[1]=n=>t.value=n),type:"password",required:"",class:"input"},null,512),[[f,t.value]])]),e("div",null,[s[9]||(s[9]=e("label",{class:"block text-sm font-medium mb-1"},"Passwort bestätigen",-1)),c(e("input",{"onUpdate:modelValue":s[2]||(s[2]=n=>i.value=n),type:"password",required:"",class:"input"},null,512),[[f,i.value]])]),l.value?(w(),p("div",A,a(l.value),1)):y("",!0),d.value?(w(),p("div",C,a(d.value),1)):y("",!0),e("button",{type:"submit",disabled:u.value,class:"btn btn-primary"},a(u.value?"Speichern...":"Passwort ändern"),9,D)],32)])])}}});export{R as default}; diff --git a/dist/assets/TimesheetsView-DD5Ozo6b.js b/dist/assets/TimesheetsView-icu2yWhU.js similarity index 98% rename from dist/assets/TimesheetsView-DD5Ozo6b.js rename to dist/assets/TimesheetsView-icu2yWhU.js index b6143e1..2656909 100644 --- a/dist/assets/TimesheetsView-DD5Ozo6b.js +++ b/dist/assets/TimesheetsView-icu2yWhU.js @@ -1 +1 @@ -import{d as A,u as M,q as T,m,c as a,a as s,F as y,x as w,w as D,b as p,v as _,s as E,e as i,r as d,o as r,t as l,p as U,y as h,n as z}from"./index-Dox4jtA_.js";const N={class:"space-y-6"},$={class:"flex items-center justify-between"},B={class:"card"},F={key:0,class:"text-center py-8 text-gray-500"},L={key:1,class:"text-center py-8 text-gray-500"},q={key:2,class:"space-y-3"},K={class:"font-medium"},G={class:"text-sm text-gray-500"},O={key:0},P={key:0,class:"text-sm text-gray-500"},H={key:1,class:"text-sm text-gray-500"},I={class:"flex items-center gap-2"},J=["onClick"],Q=["onClick"],R={key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50"},W={class:"card w-full max-w-md m-4"},X={class:"grid grid-cols-2 gap-4"},Y=["value"],Z={class:"flex justify-end gap-3 pt-4"},se=A({__name:"TimesheetsView",setup(ee){const f=M(),v=d([]),b=d(!0),u=d(!1),o=d({work_date:"",start_time:"",end_time:"",order_id:""}),x=d([]);T(async()=>{await Promise.all([g(),S()])});async function g(){b.value=!0;try{const n=await m.get("/timesheets");v.value=n.data.timesheets}catch(n){console.error(n)}finally{b.value=!1}}async function S(){try{const n=await m.get("/orders");x.value=n.data.orders}catch(n){console.error(n)}}async function j(){try{await m.post("/timesheets",o.value),u.value=!1,o.value={work_date:"",start_time:"",end_time:"",order_id:""},await g()}catch(n){alert(n instanceof Error?n.message:"Fehler")}}async function k(n,e){const t=e==="rejected"?prompt("Ablehnungsgrund:"):null;if(!(e==="rejected"&&!t))try{await m.post(`/timesheets/${n}/review`,{status:e,rejection_reason:t}),await g()}catch(c){alert(c instanceof Error?c.message:"Fehler")}}function C(n){return{pending:"badge-warning",approved:"badge-success",rejected:"badge-danger"}[n]||""}function V(n){return{pending:"Ausstehend",approved:"Genehmigt",rejected:"Abgelehnt"}[n]||n}return(n,e)=>(r(),a("div",N,[s("div",$,[e[6]||(e[6]=s("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"⏱️ Stundenzettel",-1)),s("button",{class:"btn btn-primary",onClick:e[0]||(e[0]=t=>u.value=!0)},"+ Neu")]),s("div",B,[b.value?(r(),a("div",F,"Lädt...")):v.value.length===0?(r(),a("div",L,"Keine Stundenzettel")):(r(),a("div",q,[(r(!0),a(y,null,w(v.value,t=>(r(),a("div",{key:t.id,class:"flex items-center justify-between p-4 bg-gray-50 dark:bg-gray-700/50 rounded-lg"},[s("div",null,[s("p",K,l(new Date(t.work_date).toLocaleDateString("de-DE")),1),s("p",G,[U(l(t.start_time)+" - "+l(t.end_time)+" ",1),t.hours_worked?(r(),a("span",O,"("+l(t.hours_worked)+"h)",1)):i("",!0)]),t.order_title?(r(),a("p",P,"📋 "+l(t.order_title),1)):i("",!0),h(f).canManageUsers?(r(),a("p",H,"👤 "+l(t.user_name),1)):i("",!0)]),s("div",I,[s("span",{class:z(["badge",C(t.status)])},l(V(t.status)),3),h(f).canManageUsers&&t.status==="pending"?(r(),a(y,{key:0},[s("button",{class:"btn btn-success text-sm",onClick:c=>k(t.id,"approved")},"✓",8,J),s("button",{class:"btn btn-danger text-sm",onClick:c=>k(t.id,"rejected")},"✗",8,Q)],64)):i("",!0)])]))),128))]))]),u.value?(r(),a("div",R,[s("div",W,[e[13]||(e[13]=s("h2",{class:"text-xl font-semibold mb-6"},"Neuer Stundenzettel",-1)),s("form",{onSubmit:D(j,["prevent"]),class:"space-y-4"},[s("div",null,[e[7]||(e[7]=s("label",{class:"block text-sm font-medium mb-1"},"Datum *",-1)),p(s("input",{"onUpdate:modelValue":e[1]||(e[1]=t=>o.value.work_date=t),type:"date",required:"",class:"input"},null,512),[[_,o.value.work_date]])]),s("div",X,[s("div",null,[e[8]||(e[8]=s("label",{class:"block text-sm font-medium mb-1"},"Start",-1)),p(s("input",{"onUpdate:modelValue":e[2]||(e[2]=t=>o.value.start_time=t),type:"time",class:"input"},null,512),[[_,o.value.start_time]])]),s("div",null,[e[9]||(e[9]=s("label",{class:"block text-sm font-medium mb-1"},"Ende",-1)),p(s("input",{"onUpdate:modelValue":e[3]||(e[3]=t=>o.value.end_time=t),type:"time",class:"input"},null,512),[[_,o.value.end_time]])])]),s("div",null,[e[11]||(e[11]=s("label",{class:"block text-sm font-medium mb-1"},"Auftrag",-1)),p(s("select",{"onUpdate:modelValue":e[4]||(e[4]=t=>o.value.order_id=t),class:"input"},[e[10]||(e[10]=s("option",{value:""},"-- Kein Auftrag --",-1)),(r(!0),a(y,null,w(x.value,t=>(r(),a("option",{key:t.id,value:t.id},"#"+l(t.number)+" - "+l(t.title),9,Y))),128))],512),[[E,o.value.order_id]])]),s("div",Z,[s("button",{type:"button",class:"btn btn-secondary",onClick:e[5]||(e[5]=t=>u.value=!1)},"Abbrechen"),e[12]||(e[12]=s("button",{type:"submit",class:"btn btn-primary"},"Einreichen",-1))])],32)])])):i("",!0)]))}});export{se as default}; +import{d as A,u as M,q as T,m,c as a,a as s,F as y,x as w,w as D,b as p,v as _,s as E,e as i,r as d,o as r,t as l,p as U,y as h,n as z}from"./index-CVUlgynU.js";const N={class:"space-y-6"},$={class:"flex items-center justify-between"},B={class:"card"},F={key:0,class:"text-center py-8 text-gray-500"},L={key:1,class:"text-center py-8 text-gray-500"},q={key:2,class:"space-y-3"},K={class:"font-medium"},G={class:"text-sm text-gray-500"},O={key:0},P={key:0,class:"text-sm text-gray-500"},H={key:1,class:"text-sm text-gray-500"},I={class:"flex items-center gap-2"},J=["onClick"],Q=["onClick"],R={key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50"},W={class:"card w-full max-w-md m-4"},X={class:"grid grid-cols-2 gap-4"},Y=["value"],Z={class:"flex justify-end gap-3 pt-4"},se=A({__name:"TimesheetsView",setup(ee){const f=M(),v=d([]),b=d(!0),u=d(!1),o=d({work_date:"",start_time:"",end_time:"",order_id:""}),x=d([]);T(async()=>{await Promise.all([g(),S()])});async function g(){b.value=!0;try{const n=await m.get("/timesheets");v.value=n.data.timesheets}catch(n){console.error(n)}finally{b.value=!1}}async function S(){try{const n=await m.get("/orders");x.value=n.data.orders}catch(n){console.error(n)}}async function j(){try{await m.post("/timesheets",o.value),u.value=!1,o.value={work_date:"",start_time:"",end_time:"",order_id:""},await g()}catch(n){alert(n instanceof Error?n.message:"Fehler")}}async function k(n,e){const t=e==="rejected"?prompt("Ablehnungsgrund:"):null;if(!(e==="rejected"&&!t))try{await m.post(`/timesheets/${n}/review`,{status:e,rejection_reason:t}),await g()}catch(c){alert(c instanceof Error?c.message:"Fehler")}}function C(n){return{pending:"badge-warning",approved:"badge-success",rejected:"badge-danger"}[n]||""}function V(n){return{pending:"Ausstehend",approved:"Genehmigt",rejected:"Abgelehnt"}[n]||n}return(n,e)=>(r(),a("div",N,[s("div",$,[e[6]||(e[6]=s("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"⏱️ Stundenzettel",-1)),s("button",{class:"btn btn-primary",onClick:e[0]||(e[0]=t=>u.value=!0)},"+ Neu")]),s("div",B,[b.value?(r(),a("div",F,"Lädt...")):v.value.length===0?(r(),a("div",L,"Keine Stundenzettel")):(r(),a("div",q,[(r(!0),a(y,null,w(v.value,t=>(r(),a("div",{key:t.id,class:"flex items-center justify-between p-4 bg-gray-50 dark:bg-gray-700/50 rounded-lg"},[s("div",null,[s("p",K,l(new Date(t.work_date).toLocaleDateString("de-DE")),1),s("p",G,[U(l(t.start_time)+" - "+l(t.end_time)+" ",1),t.hours_worked?(r(),a("span",O,"("+l(t.hours_worked)+"h)",1)):i("",!0)]),t.order_title?(r(),a("p",P,"📋 "+l(t.order_title),1)):i("",!0),h(f).canManageUsers?(r(),a("p",H,"👤 "+l(t.user_name),1)):i("",!0)]),s("div",I,[s("span",{class:z(["badge",C(t.status)])},l(V(t.status)),3),h(f).canManageUsers&&t.status==="pending"?(r(),a(y,{key:0},[s("button",{class:"btn btn-success text-sm",onClick:c=>k(t.id,"approved")},"✓",8,J),s("button",{class:"btn btn-danger text-sm",onClick:c=>k(t.id,"rejected")},"✗",8,Q)],64)):i("",!0)])]))),128))]))]),u.value?(r(),a("div",R,[s("div",W,[e[13]||(e[13]=s("h2",{class:"text-xl font-semibold mb-6"},"Neuer Stundenzettel",-1)),s("form",{onSubmit:D(j,["prevent"]),class:"space-y-4"},[s("div",null,[e[7]||(e[7]=s("label",{class:"block text-sm font-medium mb-1"},"Datum *",-1)),p(s("input",{"onUpdate:modelValue":e[1]||(e[1]=t=>o.value.work_date=t),type:"date",required:"",class:"input"},null,512),[[_,o.value.work_date]])]),s("div",X,[s("div",null,[e[8]||(e[8]=s("label",{class:"block text-sm font-medium mb-1"},"Start",-1)),p(s("input",{"onUpdate:modelValue":e[2]||(e[2]=t=>o.value.start_time=t),type:"time",class:"input"},null,512),[[_,o.value.start_time]])]),s("div",null,[e[9]||(e[9]=s("label",{class:"block text-sm font-medium mb-1"},"Ende",-1)),p(s("input",{"onUpdate:modelValue":e[3]||(e[3]=t=>o.value.end_time=t),type:"time",class:"input"},null,512),[[_,o.value.end_time]])])]),s("div",null,[e[11]||(e[11]=s("label",{class:"block text-sm font-medium mb-1"},"Auftrag",-1)),p(s("select",{"onUpdate:modelValue":e[4]||(e[4]=t=>o.value.order_id=t),class:"input"},[e[10]||(e[10]=s("option",{value:""},"-- Kein Auftrag --",-1)),(r(!0),a(y,null,w(x.value,t=>(r(),a("option",{key:t.id,value:t.id},"#"+l(t.number)+" - "+l(t.title),9,Y))),128))],512),[[E,o.value.order_id]])]),s("div",Z,[s("button",{type:"button",class:"btn btn-secondary",onClick:e[5]||(e[5]=t=>u.value=!1)},"Abbrechen"),e[12]||(e[12]=s("button",{type:"submit",class:"btn btn-primary"},"Einreichen",-1))])],32)])])):i("",!0)]))}});export{se as default}; diff --git a/dist/assets/UsersView-BzAufK3M.js b/dist/assets/UsersView-D-cYRxCO.js similarity index 98% rename from dist/assets/UsersView-BzAufK3M.js rename to dist/assets/UsersView-D-cYRxCO.js index 98e16b5..af30d2a 100644 --- a/dist/assets/UsersView-BzAufK3M.js +++ b/dist/assets/UsersView-D-cYRxCO.js @@ -1 +1 @@ -import{d as C,u as U,q as V,m,c as n,a as e,F as E,x as N,w as S,b as o,v as d,y as x,s as q,e as y,r as b,o as i,t as r,n as k}from"./index-Dox4jtA_.js";const A={class:"space-y-6"},D={class:"flex items-center justify-between"},$={class:"card"},B={key:0,class:"text-center py-8 text-gray-500"},F={key:1,class:"text-center py-8 text-gray-500"},R={key:2,class:"w-full"},j={class:"py-3 font-medium"},L={class:"py-3 text-gray-500"},z={class:"py-3"},T={class:"py-3"},I={class:"py-3 text-right"},K=["onClick"],P={key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50"},G={class:"card w-full max-w-md m-4"},H={class:"grid grid-cols-2 gap-4"},J={key:0},O={class:"flex justify-end gap-3 pt-4"},Y=C({__name:"UsersView",setup(Q){const f=U(),p=b([]),c=b(!0),u=b(!1),l=b({email:"",password:"",first_name:"",last_name:"",phone:"",role:"mitarbeiter"});V(async()=>{await v()});async function v(){c.value=!0;try{const a=await m.get("/users");p.value=a.data.users}catch(a){console.error(a)}finally{c.value=!1}}async function w(){try{await m.post("/users",l.value),u.value=!1,l.value={email:"",password:"",first_name:"",last_name:"",phone:"",role:"mitarbeiter"},await v()}catch(a){alert(a instanceof Error?a.message:"Fehler beim Erstellen")}}async function _(a){try{a.active?await m.delete(`/users/${a.id}`):await m.put(`/users/${a.id}`,{active:!0}),await v()}catch(t){alert(t instanceof Error?t.message:"Fehler")}}function h(a){return{chef:"badge-danger",disponent:"badge-primary",mitarbeiter:"badge-success"}[a]||"badge-secondary"}function M(a){return{chef:"Chef",disponent:"Disponent",mitarbeiter:"Mitarbeiter"}[a]||a}return(a,t)=>(i(),n("div",A,[e("div",D,[t[8]||(t[8]=e("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"👥 Mitarbeiter",-1)),e("button",{class:"btn btn-primary",onClick:t[0]||(t[0]=s=>u.value=!0)},"+ Neu")]),e("div",$,[c.value?(i(),n("div",B,"Lädt...")):p.value.length===0?(i(),n("div",F,"Keine Mitarbeiter")):(i(),n("table",R,[t[9]||(t[9]=e("thead",null,[e("tr",{class:"text-left text-sm text-gray-500 border-b border-gray-200 dark:border-gray-700"},[e("th",{class:"pb-3"},"Name"),e("th",{class:"pb-3"},"E-Mail"),e("th",{class:"pb-3"},"Rolle"),e("th",{class:"pb-3"},"Status"),e("th",{class:"pb-3"})])],-1)),e("tbody",null,[(i(!0),n(E,null,N(p.value,s=>{var g;return i(),n("tr",{key:s.id,class:"border-b border-gray-100 dark:border-gray-800"},[e("td",j,r(s.first_name)+" "+r(s.last_name),1),e("td",L,r(s.email),1),e("td",z,[e("span",{class:k(["badge",h(s.role)])},r(M(s.role)),3)]),e("td",T,[e("span",{class:k(s.active?"text-green-600":"text-red-600")},r(s.active?"Aktiv":"Inaktiv"),3)]),e("td",I,[s.id!==((g=x(f).user)==null?void 0:g.id)&&s.role!=="chef"?(i(),n("button",{key:0,class:"text-sm text-gray-500 hover:text-red-600",onClick:W=>_(s)},r(s.active?"Deaktivieren":"Aktivieren"),9,K)):y("",!0)])])}),128))])]))]),u.value?(i(),n("div",P,[e("div",G,[t[18]||(t[18]=e("h2",{class:"text-xl font-semibold mb-6"},"Neuer Mitarbeiter",-1)),e("form",{onSubmit:S(w,["prevent"]),class:"space-y-4"},[e("div",H,[e("div",null,[t[10]||(t[10]=e("label",{class:"block text-sm font-medium mb-1"},"Vorname *",-1)),o(e("input",{"onUpdate:modelValue":t[1]||(t[1]=s=>l.value.first_name=s),type:"text",required:"",class:"input"},null,512),[[d,l.value.first_name]])]),e("div",null,[t[11]||(t[11]=e("label",{class:"block text-sm font-medium mb-1"},"Nachname *",-1)),o(e("input",{"onUpdate:modelValue":t[2]||(t[2]=s=>l.value.last_name=s),type:"text",required:"",class:"input"},null,512),[[d,l.value.last_name]])])]),e("div",null,[t[12]||(t[12]=e("label",{class:"block text-sm font-medium mb-1"},"E-Mail *",-1)),o(e("input",{"onUpdate:modelValue":t[3]||(t[3]=s=>l.value.email=s),type:"email",required:"",class:"input"},null,512),[[d,l.value.email]])]),e("div",null,[t[13]||(t[13]=e("label",{class:"block text-sm font-medium mb-1"},"Passwort *",-1)),o(e("input",{"onUpdate:modelValue":t[4]||(t[4]=s=>l.value.password=s),type:"password",required:"",class:"input"},null,512),[[d,l.value.password]])]),e("div",null,[t[14]||(t[14]=e("label",{class:"block text-sm font-medium mb-1"},"Telefon",-1)),o(e("input",{"onUpdate:modelValue":t[5]||(t[5]=s=>l.value.phone=s),type:"tel",class:"input"},null,512),[[d,l.value.phone]])]),x(f).isChef?(i(),n("div",J,[t[16]||(t[16]=e("label",{class:"block text-sm font-medium mb-1"},"Rolle",-1)),o(e("select",{"onUpdate:modelValue":t[6]||(t[6]=s=>l.value.role=s),class:"input"},[...t[15]||(t[15]=[e("option",{value:"mitarbeiter"},"Mitarbeiter",-1),e("option",{value:"disponent"},"Disponent",-1)])],512),[[q,l.value.role]])])):y("",!0),e("div",O,[e("button",{type:"button",class:"btn btn-secondary",onClick:t[7]||(t[7]=s=>u.value=!1)},"Abbrechen"),t[17]||(t[17]=e("button",{type:"submit",class:"btn btn-primary"},"Erstellen",-1))])],32)])])):y("",!0)]))}});export{Y as default}; +import{d as C,u as U,q as V,m,c as n,a as e,F as E,x as N,w as S,b as o,v as d,y as x,s as q,e as y,r as b,o as i,t as r,n as k}from"./index-CVUlgynU.js";const A={class:"space-y-6"},D={class:"flex items-center justify-between"},$={class:"card"},B={key:0,class:"text-center py-8 text-gray-500"},F={key:1,class:"text-center py-8 text-gray-500"},R={key:2,class:"w-full"},j={class:"py-3 font-medium"},L={class:"py-3 text-gray-500"},z={class:"py-3"},T={class:"py-3"},I={class:"py-3 text-right"},K=["onClick"],P={key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50"},G={class:"card w-full max-w-md m-4"},H={class:"grid grid-cols-2 gap-4"},J={key:0},O={class:"flex justify-end gap-3 pt-4"},Y=C({__name:"UsersView",setup(Q){const f=U(),p=b([]),c=b(!0),u=b(!1),l=b({email:"",password:"",first_name:"",last_name:"",phone:"",role:"mitarbeiter"});V(async()=>{await v()});async function v(){c.value=!0;try{const a=await m.get("/users");p.value=a.data.users}catch(a){console.error(a)}finally{c.value=!1}}async function w(){try{await m.post("/users",l.value),u.value=!1,l.value={email:"",password:"",first_name:"",last_name:"",phone:"",role:"mitarbeiter"},await v()}catch(a){alert(a instanceof Error?a.message:"Fehler beim Erstellen")}}async function _(a){try{a.active?await m.delete(`/users/${a.id}`):await m.put(`/users/${a.id}`,{active:!0}),await v()}catch(t){alert(t instanceof Error?t.message:"Fehler")}}function h(a){return{chef:"badge-danger",disponent:"badge-primary",mitarbeiter:"badge-success"}[a]||"badge-secondary"}function M(a){return{chef:"Chef",disponent:"Disponent",mitarbeiter:"Mitarbeiter"}[a]||a}return(a,t)=>(i(),n("div",A,[e("div",D,[t[8]||(t[8]=e("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"👥 Mitarbeiter",-1)),e("button",{class:"btn btn-primary",onClick:t[0]||(t[0]=s=>u.value=!0)},"+ Neu")]),e("div",$,[c.value?(i(),n("div",B,"Lädt...")):p.value.length===0?(i(),n("div",F,"Keine Mitarbeiter")):(i(),n("table",R,[t[9]||(t[9]=e("thead",null,[e("tr",{class:"text-left text-sm text-gray-500 border-b border-gray-200 dark:border-gray-700"},[e("th",{class:"pb-3"},"Name"),e("th",{class:"pb-3"},"E-Mail"),e("th",{class:"pb-3"},"Rolle"),e("th",{class:"pb-3"},"Status"),e("th",{class:"pb-3"})])],-1)),e("tbody",null,[(i(!0),n(E,null,N(p.value,s=>{var g;return i(),n("tr",{key:s.id,class:"border-b border-gray-100 dark:border-gray-800"},[e("td",j,r(s.first_name)+" "+r(s.last_name),1),e("td",L,r(s.email),1),e("td",z,[e("span",{class:k(["badge",h(s.role)])},r(M(s.role)),3)]),e("td",T,[e("span",{class:k(s.active?"text-green-600":"text-red-600")},r(s.active?"Aktiv":"Inaktiv"),3)]),e("td",I,[s.id!==((g=x(f).user)==null?void 0:g.id)&&s.role!=="chef"?(i(),n("button",{key:0,class:"text-sm text-gray-500 hover:text-red-600",onClick:W=>_(s)},r(s.active?"Deaktivieren":"Aktivieren"),9,K)):y("",!0)])])}),128))])]))]),u.value?(i(),n("div",P,[e("div",G,[t[18]||(t[18]=e("h2",{class:"text-xl font-semibold mb-6"},"Neuer Mitarbeiter",-1)),e("form",{onSubmit:S(w,["prevent"]),class:"space-y-4"},[e("div",H,[e("div",null,[t[10]||(t[10]=e("label",{class:"block text-sm font-medium mb-1"},"Vorname *",-1)),o(e("input",{"onUpdate:modelValue":t[1]||(t[1]=s=>l.value.first_name=s),type:"text",required:"",class:"input"},null,512),[[d,l.value.first_name]])]),e("div",null,[t[11]||(t[11]=e("label",{class:"block text-sm font-medium mb-1"},"Nachname *",-1)),o(e("input",{"onUpdate:modelValue":t[2]||(t[2]=s=>l.value.last_name=s),type:"text",required:"",class:"input"},null,512),[[d,l.value.last_name]])])]),e("div",null,[t[12]||(t[12]=e("label",{class:"block text-sm font-medium mb-1"},"E-Mail *",-1)),o(e("input",{"onUpdate:modelValue":t[3]||(t[3]=s=>l.value.email=s),type:"email",required:"",class:"input"},null,512),[[d,l.value.email]])]),e("div",null,[t[13]||(t[13]=e("label",{class:"block text-sm font-medium mb-1"},"Passwort *",-1)),o(e("input",{"onUpdate:modelValue":t[4]||(t[4]=s=>l.value.password=s),type:"password",required:"",class:"input"},null,512),[[d,l.value.password]])]),e("div",null,[t[14]||(t[14]=e("label",{class:"block text-sm font-medium mb-1"},"Telefon",-1)),o(e("input",{"onUpdate:modelValue":t[5]||(t[5]=s=>l.value.phone=s),type:"tel",class:"input"},null,512),[[d,l.value.phone]])]),x(f).isChef?(i(),n("div",J,[t[16]||(t[16]=e("label",{class:"block text-sm font-medium mb-1"},"Rolle",-1)),o(e("select",{"onUpdate:modelValue":t[6]||(t[6]=s=>l.value.role=s),class:"input"},[...t[15]||(t[15]=[e("option",{value:"mitarbeiter"},"Mitarbeiter",-1),e("option",{value:"disponent"},"Disponent",-1)])],512),[[q,l.value.role]])])):y("",!0),e("div",O,[e("button",{type:"button",class:"btn btn-secondary",onClick:t[7]||(t[7]=s=>u.value=!1)},"Abbrechen"),t[17]||(t[17]=e("button",{type:"submit",class:"btn btn-primary"},"Erstellen",-1))])],32)])])):y("",!0)]))}});export{Y as default}; diff --git a/dist/assets/index-CA5dNQfW.css b/dist/assets/index-CA5dNQfW.css new file mode 100644 index 0000000..636f261 --- /dev/null +++ b/dist/assets/index-CA5dNQfW.css @@ -0,0 +1 @@ +*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}body{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}body:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.btn{border-radius:.5rem;padding:.5rem 1rem;font-weight:500;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.btn-primary{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-primary:hover{--tw-bg-opacity: 1;background-color:rgb(67 56 202 / var(--tw-bg-opacity, 1))}.btn-primary:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity, 1));--tw-ring-offset-width: 2px}.btn-secondary{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.btn-secondary:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.btn-secondary:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.btn-secondary:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.btn-danger{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-danger:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.btn-success{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-success:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.input{width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));padding:.5rem .75rem}.input:focus{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity, 1));--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity, 1))}.input:is(.dark *){--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.card{border-radius:.75rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:1.5rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.card:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.badge{display:inline-flex;align-items:center;border-radius:9999px;padding:.125rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500}.badge-primary{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(55 48 163 / var(--tw-text-opacity, 1))}.badge-primary:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(49 46 129 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(199 210 254 / var(--tw-text-opacity, 1))}.badge-success{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.badge-success:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(20 83 45 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(187 247 208 / var(--tw-text-opacity, 1))}.badge-warning{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.badge-warning:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.badge-danger{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.badge-danger:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.right-3{right:.75rem}.top-0{top:0}.top-1\/2{top:50%}.z-40{z-index:40}.z-50{z-index:50}.z-\[60\]{z-index:60}.col-span-2{grid-column:span 2 / span 2}.m-4{margin:1rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-8{height:2rem}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-24{width:6rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-64{width:16rem}.w-8{width:2rem}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-7xl{max-width:80rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.flex-1{flex:1 1 0%}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-6{--tw-translate-x: 1.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity, 1))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-blue-600{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-500{--tw-border-opacity: 1;border-color:rgb(234 179 8 / var(--tw-border-opacity, 1))}.border-t-transparent{border-top-color:transparent}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-primary-100{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1))}.bg-primary-600{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-opacity-50{--tw-bg-opacity: .5}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-primary-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-primary-700{--tw-gradient-to: #4338ca var(--tw-gradient-to-position)}.p-12{padding:3rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pr-10{padding-right:2.5rem}.pr-4{padding-right:1rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-primary-100{--tw-text-opacity: 1;color:rgb(224 231 255 / var(--tw-text-opacity, 1))}.text-primary-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-primary-700{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-purple-800{--tw-text-opacity: 1;color:rgb(107 33 168 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.opacity-50{opacity:.5}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.hover\:scale-\[1\.02\]:hover{--tw-scale-x: 1.02;--tw-scale-y: 1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-blue-500:hover{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-green-600:hover{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-red-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.hover\:bg-red-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 202 202 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-yellow-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.hover\:text-blue-800:hover{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.hover\:text-green-800:hover{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.hover\:text-primary-700:hover{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.hover\:text-primary-800:hover{--tw-text-opacity: 1;color:rgb(55 48 163 / var(--tw-text-opacity, 1))}.hover\:text-red-600:hover{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-red-800:hover{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.disabled\:opacity-50:disabled{opacity:.5}.dark\:divide-gray-700:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(55 65 81 / var(--tw-divide-opacity, 1))}.dark\:border-gray-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.dark\:border-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:border-gray-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-900\/20:is(.dark *){background-color:#1e3a8a33}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-700\/50:is(.dark *){background-color:#37415180}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(20 83 45 / var(--tw-bg-opacity, 1))}.dark\:bg-primary-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(49 46 129 / var(--tw-bg-opacity, 1))}.dark\:bg-red-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.dark\:bg-red-900\/20:is(.dark *){background-color:#7f1d1d33}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-900\/20:is(.dark *){background-color:#713f1233}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-green-200:is(.dark *){--tw-text-opacity: 1;color:rgb(187 247 208 / var(--tw-text-opacity, 1))}.dark\:text-primary-200:is(.dark *){--tw-text-opacity: 1;color:rgb(199 210 254 / var(--tw-text-opacity, 1))}.dark\:text-primary-300:is(.dark *){--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity, 1))}.dark\:text-red-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-500:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700\/50:hover:is(.dark *){background-color:#37415180}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-red-900:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-red-900\/20:hover:is(.dark *){background-color:#7f1d1d33}@media (min-width: 640px){.sm\:block{display:block}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media (min-width: 768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 1024px){.lg\:ml-0{margin-left:0}.lg\:block{display:block}.lg\:hidden{display:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pl-64{padding-left:16rem}} diff --git a/dist/assets/index-CVUlgynU.js b/dist/assets/index-CVUlgynU.js new file mode 100644 index 0000000..3a1778b --- /dev/null +++ b/dist/assets/index-CVUlgynU.js @@ -0,0 +1,29 @@ +var Ni=Object.defineProperty;var Di=(e,t,n)=>t in e?Ni(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Zs=(e,t,n)=>Di(e,typeof t!="symbol"?t+"":t,n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();/** +* @vue/shared v3.5.30 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Os(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ee={},Mt=[],qe=()=>{},Zr=()=>!1,Ln=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ts=e=>e.startsWith("onUpdate:"),ae=Object.assign,Ps=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Mi=Object.prototype.hasOwnProperty,Y=(e,t)=>Mi.call(e,t),V=Array.isArray,Lt=e=>pn(e)==="[object Map]",Bt=e=>pn(e)==="[object Set]",er=e=>pn(e)==="[object Date]",k=e=>typeof e=="function",ue=e=>typeof e=="string",$e=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",eo=e=>(Z(e)||k(e))&&k(e.then)&&k(e.catch),to=Object.prototype.toString,pn=e=>to.call(e),Li=e=>pn(e).slice(8,-1),no=e=>pn(e)==="[object Object]",Vn=e=>ue(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Qt=Os(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Fn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Vi=/-\w/g,be=Fn(e=>e.replace(Vi,t=>t.slice(1).toUpperCase())),Fi=/\B([A-Z])/g,wt=Fn(e=>e.replace(Fi,"-$1").toLowerCase()),jn=Fn(e=>e.charAt(0).toUpperCase()+e.slice(1)),Xn=Fn(e=>e?`on${jn(e)}`:""),We=(e,t)=>!Object.is(e,t),En=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Hn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let tr;const Un=()=>tr||(tr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Is(e){if(V(e)){const t={};for(let n=0;n{if(n){const s=n.split(Hi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Ns(e){let t="";if(ue(e))t=e;else if(V(e))for(let n=0;nKt(n,t))}const oo=e=>!!(e&&e.__v_isRef===!0),Wi=e=>ue(e)?e:e==null?"":V(e)||Z(e)&&(e.toString===to||!k(e.toString))?oo(e)?Wi(e.value):JSON.stringify(e,io,2):String(e),io=(e,t)=>oo(t)?io(e,t.value):Lt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[Zn(s,o)+" =>"]=r,n),{})}:Bt(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Zn(n))}:$e(t)?Zn(t):Z(t)&&!V(t)&&!no(t)?String(t):t,Zn=(e,t="")=>{var n;return $e(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.30 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let de;class lo{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=de,!t&&de&&(this.index=(de.scopes||(de.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(de=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(Xt){let t=Xt;for(Xt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Yt;){let t=Yt;for(Yt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function po(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function go(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Vs(s),$i(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function hs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(mo(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function mo(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===ln)||(e.globalVersion=ln,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!hs(e))))return;e.flags|=2;const t=e.dep,n=ne,s=Me;ne=e,Me=!0;try{po(e);const r=e.fn(e._value);(t.version===0||We(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ne=n,Me=s,go(e),e.flags&=-3}}function Vs(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)Vs(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function $i(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Me=!0;const _o=[];function ot(){_o.push(Me),Me=!1}function it(){const e=_o.pop();Me=e===void 0?!0:e}function nr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ne;ne=void 0;try{t()}finally{ne=n}}}let ln=0;class Ji{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Fs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ne||!Me||ne===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ne)n=this.activeLink=new Ji(ne,this),ne.deps?(n.prevDep=ne.depsTail,ne.depsTail.nextDep=n,ne.depsTail=n):ne.deps=ne.depsTail=n,yo(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ne.depsTail,n.nextDep=void 0,ne.depsTail.nextDep=n,ne.depsTail=n,ne.deps===n&&(ne.deps=s)}return n}trigger(t){this.version++,ln++,this.notify(t)}notify(t){Ms();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Ls()}}}function yo(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)yo(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const wn=new WeakMap,At=Symbol(""),ds=Symbol(""),cn=Symbol("");function pe(e,t,n){if(Me&&ne){let s=wn.get(e);s||wn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Fs),r.map=s,r.key=n),r.track()}}function tt(e,t,n,s,r,o){const i=wn.get(e);if(!i){ln++;return}const l=c=>{c&&c.trigger()};if(Ms(),t==="clear")i.forEach(l);else{const c=V(e),a=c&&Vn(n);if(c&&n==="length"){const f=Number(s);i.forEach((d,g)=>{(g==="length"||g===cn||!$e(g)&&g>=f)&&l(d)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),a&&l(i.get(cn)),t){case"add":c?a&&l(i.get("length")):(l(i.get(At)),Lt(e)&&l(i.get(ds)));break;case"delete":c||(l(i.get(At)),Lt(e)&&l(i.get(ds)));break;case"set":Lt(e)&&l(i.get(At));break}}Ls()}function zi(e,t){const n=wn.get(e);return n&&n.get(t)}function Tt(e){const t=J(e);return t===e?t:(pe(t,"iterate",cn),Ie(e)?t:t.map(Le))}function kn(e){return pe(e=J(e),"iterate",cn),e}function Ke(e,t){return lt(e)?Ft(st(e)?Le(t):t):Le(t)}const Qi={__proto__:null,[Symbol.iterator](){return ts(this,Symbol.iterator,e=>Ke(this,e))},concat(...e){return Tt(this).concat(...e.map(t=>V(t)?Tt(t):t))},entries(){return ts(this,"entries",e=>(e[1]=Ke(this,e[1]),e))},every(e,t){return Qe(this,"every",e,t,void 0,arguments)},filter(e,t){return Qe(this,"filter",e,t,n=>n.map(s=>Ke(this,s)),arguments)},find(e,t){return Qe(this,"find",e,t,n=>Ke(this,n),arguments)},findIndex(e,t){return Qe(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Qe(this,"findLast",e,t,n=>Ke(this,n),arguments)},findLastIndex(e,t){return Qe(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Qe(this,"forEach",e,t,void 0,arguments)},includes(...e){return ns(this,"includes",e)},indexOf(...e){return ns(this,"indexOf",e)},join(e){return Tt(this).join(e)},lastIndexOf(...e){return ns(this,"lastIndexOf",e)},map(e,t){return Qe(this,"map",e,t,void 0,arguments)},pop(){return Wt(this,"pop")},push(...e){return Wt(this,"push",e)},reduce(e,...t){return sr(this,"reduce",e,t)},reduceRight(e,...t){return sr(this,"reduceRight",e,t)},shift(){return Wt(this,"shift")},some(e,t){return Qe(this,"some",e,t,void 0,arguments)},splice(...e){return Wt(this,"splice",e)},toReversed(){return Tt(this).toReversed()},toSorted(e){return Tt(this).toSorted(e)},toSpliced(...e){return Tt(this).toSpliced(...e)},unshift(...e){return Wt(this,"unshift",e)},values(){return ts(this,"values",e=>Ke(this,e))}};function ts(e,t,n){const s=kn(e),r=s[t]();return s!==e&&!Ie(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.done||(o.value=n(o.value)),o}),r}const Yi=Array.prototype;function Qe(e,t,n,s,r,o){const i=kn(e),l=i!==e&&!Ie(e),c=i[t];if(c!==Yi[t]){const d=c.apply(e,o);return l?Le(d):d}let a=n;i!==e&&(l?a=function(d,g){return n.call(this,Ke(e,d),g,e)}:n.length>2&&(a=function(d,g){return n.call(this,d,g,e)}));const f=c.call(i,a,s);return l&&r?r(f):f}function sr(e,t,n,s){const r=kn(e),o=r!==e&&!Ie(e);let i=n,l=!1;r!==e&&(o?(l=s.length===0,i=function(a,f,d){return l&&(l=!1,a=Ke(e,a)),n.call(this,a,Ke(e,f),d,e)}):n.length>3&&(i=function(a,f,d){return n.call(this,a,f,d,e)}));const c=r[t](i,...s);return l?Ke(e,c):c}function ns(e,t,n){const s=J(e);pe(s,"iterate",cn);const r=s[t](...n);return(r===-1||r===!1)&&Bn(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function Wt(e,t,n=[]){ot(),Ms();const s=J(e)[t].apply(e,n);return Ls(),it(),s}const Xi=Os("__proto__,__v_isRef,__isVue"),vo=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter($e));function Zi(e){$e(e)||(e=String(e));const t=J(this);return pe(t,"has",e),t.hasOwnProperty(e)}class bo{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?ul:Ro:o?Ao:So).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=V(t);if(!r){let c;if(i&&(c=Qi[n]))return c;if(n==="hasOwnProperty")return Zi}const l=Reflect.get(t,n,ie(t)?t:s);if(($e(n)?vo.has(n):Xi(n))||(r||pe(t,"get",n),o))return l;if(ie(l)){const c=i&&Vn(n)?l:l.value;return r&&Z(c)?gs(c):c}return Z(l)?r?gs(l):gn(l):l}}class Eo extends bo{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];const i=V(t)&&Vn(n);if(!this._isShallow){const a=lt(o);if(!Ie(s)&&!lt(s)&&(o=J(o),s=J(s)),!i&&ie(o)&&!ie(s))return a||(o.value=s),!0}const l=i?Number(n)e,yn=e=>Reflect.getPrototypeOf(e);function rl(e,t,n){return function(...s){const r=this.__v_raw,o=J(r),i=Lt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=r[e](...s),f=n?ps:t?Ft:Le;return!t&&pe(o,"iterate",c?ds:At),ae(Object.create(a),{next(){const{value:d,done:g}=a.next();return g?{value:d,done:g}:{value:l?[f(d[0]),f(d[1])]:f(d),done:g}}})}}function vn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function ol(e,t){const n={get(r){const o=this.__v_raw,i=J(o),l=J(r);e||(We(r,l)&&pe(i,"get",r),pe(i,"get",l));const{has:c}=yn(i),a=t?ps:e?Ft:Le;if(c.call(i,r))return a(o.get(r));if(c.call(i,l))return a(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&pe(J(r),"iterate",At),r.size},has(r){const o=this.__v_raw,i=J(o),l=J(r);return e||(We(r,l)&&pe(i,"has",r),pe(i,"has",l)),r===l?o.has(r):o.has(r)||o.has(l)},forEach(r,o){const i=this,l=i.__v_raw,c=J(l),a=t?ps:e?Ft:Le;return!e&&pe(c,"iterate",At),l.forEach((f,d)=>r.call(o,a(f),a(d),i))}};return ae(n,e?{add:vn("add"),set:vn("set"),delete:vn("delete"),clear:vn("clear")}:{add(r){const o=J(this),i=yn(o),l=J(r),c=!t&&!Ie(r)&&!lt(r)?l:r;return i.has.call(o,c)||We(r,c)&&i.has.call(o,r)||We(l,c)&&i.has.call(o,l)||(o.add(c),tt(o,"add",c,c)),this},set(r,o){!t&&!Ie(o)&&!lt(o)&&(o=J(o));const i=J(this),{has:l,get:c}=yn(i);let a=l.call(i,r);a||(r=J(r),a=l.call(i,r));const f=c.call(i,r);return i.set(r,o),a?We(o,f)&&tt(i,"set",r,o):tt(i,"add",r,o),this},delete(r){const o=J(this),{has:i,get:l}=yn(o);let c=i.call(o,r);c||(r=J(r),c=i.call(o,r)),l&&l.call(o,r);const a=o.delete(r);return c&&tt(o,"delete",r,void 0),a},clear(){const r=J(this),o=r.size!==0,i=r.clear();return o&&tt(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=rl(r,e,t)}),n}function js(e,t){const n=ol(e,t);return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(Y(n,r)&&r in s?n:s,r,o)}const il={get:js(!1,!1)},ll={get:js(!1,!0)},cl={get:js(!0,!1)};const So=new WeakMap,Ao=new WeakMap,Ro=new WeakMap,ul=new WeakMap;function fl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function al(e){return e.__v_skip||!Object.isExtensible(e)?0:fl(Li(e))}function gn(e){return lt(e)?e:Hs(e,!1,tl,il,So)}function xo(e){return Hs(e,!1,sl,ll,Ao)}function gs(e){return Hs(e,!0,nl,cl,Ro)}function Hs(e,t,n,s,r){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=al(e);if(o===0)return e;const i=r.get(e);if(i)return i;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function st(e){return lt(e)?st(e.__v_raw):!!(e&&e.__v_isReactive)}function lt(e){return!!(e&&e.__v_isReadonly)}function Ie(e){return!!(e&&e.__v_isShallow)}function Bn(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function Us(e){return!Y(e,"__v_skip")&&Object.isExtensible(e)&&so(e,"__v_skip",!0),e}const Le=e=>Z(e)?gn(e):e,Ft=e=>Z(e)?gs(e):e;function ie(e){return e?e.__v_isRef===!0:!1}function Dt(e){return wo(e,!1)}function hl(e){return wo(e,!0)}function wo(e,t){return ie(e)?e:new dl(e,t)}class dl{constructor(t,n){this.dep=new Fs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:Le(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Ie(t)||lt(t);t=s?t:J(t),We(t,n)&&(this._rawValue=t,this._value=s?t:Le(t),this.dep.trigger())}}function Rt(e){return ie(e)?e.value:e}const pl={get:(e,t,n)=>t==="__v_raw"?e:Rt(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ie(r)&&!ie(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Co(e){return st(e)?e:new Proxy(e,pl)}function gl(e){const t=V(e)?new Array(e.length):{};for(const n in e)t[n]=_l(e,n);return t}class ml{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._raw=J(t);let r=!0,o=t;if(!V(t)||!Vn(String(n)))do r=!Bn(o)||Ie(o);while(r&&(o=o.__v_raw));this._shallow=r}get value(){let t=this._object[this._key];return this._shallow&&(t=Rt(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&ie(this._raw[this._key])){const n=this._object[this._key];if(ie(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return zi(this._raw,this._key)}}function _l(e,t,n){return new ml(e,t,n)}class yl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Fs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=ln-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ne!==this)return ho(this,!0),!0}get value(){const t=this.dep.track();return mo(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function vl(e,t,n=!1){let s,r;return k(e)?s=e:(s=e.get,r=e.set),new yl(s,r,n)}const bn={},Cn=new WeakMap;let Et;function bl(e,t=!1,n=Et){if(n){let s=Cn.get(n);s||Cn.set(n,s=[]),s.push(e)}}function El(e,t,n=ee){const{immediate:s,deep:r,once:o,scheduler:i,augmentJob:l,call:c}=n,a=S=>r?S:Ie(S)||r===!1||r===0?nt(S,1):nt(S);let f,d,g,m,O=!1,R=!1;if(ie(e)?(d=()=>e.value,O=Ie(e)):st(e)?(d=()=>a(e),O=!0):V(e)?(R=!0,O=e.some(S=>st(S)||Ie(S)),d=()=>e.map(S=>{if(ie(S))return S.value;if(st(S))return a(S);if(k(S))return c?c(S,2):S()})):k(e)?t?d=c?()=>c(e,2):e:d=()=>{if(g){ot();try{g()}finally{it()}}const S=Et;Et=f;try{return c?c(e,3,[m]):e(m)}finally{Et=S}}:d=qe,t&&r){const S=d,U=r===!0?1/0:r;d=()=>nt(S(),U)}const j=uo(),L=()=>{f.stop(),j&&j.active&&Ps(j.effects,f)};if(o&&t){const S=t;t=(...U)=>{S(...U),L()}}let T=R?new Array(e.length).fill(bn):bn;const N=S=>{if(!(!(f.flags&1)||!f.dirty&&!S))if(t){const U=f.run();if(r||O||(R?U.some((le,W)=>We(le,T[W])):We(U,T))){g&&g();const le=Et;Et=f;try{const W=[U,T===bn?void 0:R&&T[0]===bn?[]:T,m];T=U,c?c(t,3,W):t(...W)}finally{Et=le}}}else f.run()};return l&&l(N),f=new fo(d),f.scheduler=i?()=>i(N,!1):N,m=S=>bl(S,!1,f),g=f.onStop=()=>{const S=Cn.get(f);if(S){if(c)c(S,4);else for(const U of S)U();Cn.delete(f)}},t?s?N(!0):T=f.run():i?i(N.bind(null,!0),!0):f.run(),L.pause=f.pause.bind(f),L.resume=f.resume.bind(f),L.stop=L,L}function nt(e,t=1/0,n){if(t<=0||!Z(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,ie(e))nt(e.value,t,n);else if(V(e))for(let s=0;s{nt(s,t,n)});else if(no(e)){for(const s in e)nt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&nt(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.30 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function mn(e,t,n,s){try{return s?e(...s):e()}catch(r){Kn(r,t,n)}}function Je(e,t,n,s){if(k(e)){const r=mn(e,t,n,s);return r&&eo(r)&&r.catch(o=>{Kn(o,t,n)}),r}if(V(e)){const r=[];for(let o=0;o>>1,r=ve[s],o=un(r);o=un(n)?ve.push(e):ve.splice(Al(t),0,e),e.flags|=1,To()}}function To(){On||(On=Oo.then(Io))}function Rl(e){V(e)?Vt.push(...e):dt&&e.id===-1?dt.splice(It+1,0,e):e.flags&1||(Vt.push(e),e.flags|=1),To()}function rr(e,t,n=Be+1){for(;nun(n)-un(s));if(Vt.length=0,dt){dt.push(...t);return}for(dt=t,It=0;Ite.id==null?e.flags&2?-1:1/0:e.id;function Io(e){try{for(Be=0;Be{s._d&&Nn(-1);const o=Tn(t);let i;try{i=e(...r)}finally{Tn(o),s._d&&Nn(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function Tf(e,t){if(Te===null)return e;const n=Jn(Te),s=e.dirs||(e.dirs=[]);for(let r=0;r1)return n&&k(t)?t.call(s&&s.proxy):t}}function wl(){return!!(ci()||xt)}const Cl=Symbol.for("v-scx"),Ol=()=>De(Cl);function Zt(e,t,n){return Do(e,t,n)}function Do(e,t,n=ee){const{immediate:s,deep:r,flush:o,once:i}=n,l=ae({},n),c=t&&s||!t&&o!=="post";let a;if(an){if(o==="sync"){const m=Ol();a=m.__watcherHandles||(m.__watcherHandles=[])}else if(!c){const m=()=>{};return m.stop=qe,m.resume=qe,m.pause=qe,m}}const f=ge;l.call=(m,O,R)=>Je(m,f,O,R);let d=!1;o==="post"?l.scheduler=m=>{xe(m,f&&f.suspense)}:o!=="sync"&&(d=!0,l.scheduler=(m,O)=>{O?m():ks(m)}),l.augmentJob=m=>{t&&(m.flags|=4),d&&(m.flags|=2,f&&(m.id=f.uid,m.i=f))};const g=El(e,t,l);return an&&(a?a.push(g):c&&g()),g}function Tl(e,t,n){const s=this.proxy,r=ue(e)?e.includes(".")?Mo(s,e):()=>s[e]:e.bind(s,s);let o;k(t)?o=t:(o=t.handler,n=t);const i=_n(this),l=Do(r,o.bind(s),n);return i(),l}function Mo(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;re.__isTeleport,Nl=Symbol("_leaveCb");function Bs(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Bs(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ks(e,t){return k(e)?ae({name:e.name},t,{setup:e}):e}function Lo(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function or(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const Pn=new WeakMap;function en(e,t,n,s,r=!1){if(V(e)){e.forEach((R,j)=>en(R,t&&(V(t)?t[j]:t),n,s,r));return}if(tn(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&en(e,t,n,s.component.subTree);return}const o=s.shapeFlag&4?Jn(s.component):s.el,i=r?null:o,{i:l,r:c}=e,a=t&&t.r,f=l.refs===ee?l.refs={}:l.refs,d=l.setupState,g=J(d),m=d===ee?Zr:R=>or(f,R)?!1:Y(g,R),O=(R,j)=>!(j&&or(f,j));if(a!=null&&a!==c){if(ir(t),ue(a))f[a]=null,m(a)&&(d[a]=null);else if(ie(a)){const R=t;O(a,R.k)&&(a.value=null),R.k&&(f[R.k]=null)}}if(k(c))mn(c,l,12,[i,f]);else{const R=ue(c),j=ie(c);if(R||j){const L=()=>{if(e.f){const T=R?m(c)?d[c]:f[c]:O()||!e.k?c.value:f[e.k];if(r)V(T)&&Ps(T,o);else if(V(T))T.includes(o)||T.push(o);else if(R)f[c]=[o],m(c)&&(d[c]=f[c]);else{const N=[o];O(c,e.k)&&(c.value=N),e.k&&(f[e.k]=N)}}else R?(f[c]=i,m(c)&&(d[c]=i)):j&&(O(c,e.k)&&(c.value=i),e.k&&(f[e.k]=i))};if(i){const T=()=>{L(),Pn.delete(e)};T.id=-1,Pn.set(e,T),xe(T,n)}else ir(e),L()}}}function ir(e){const t=Pn.get(e);t&&(t.flags|=8,Pn.delete(e))}Un().requestIdleCallback;Un().cancelIdleCallback;const tn=e=>!!e.type.__asyncLoader,Vo=e=>e.type.__isKeepAlive;function Dl(e,t){Fo(e,"a",t)}function Ml(e,t){Fo(e,"da",t)}function Fo(e,t,n=ge){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Wn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Vo(r.parent.vnode)&&Ll(s,t,n,r),r=r.parent}}function Ll(e,t,n,s){const r=Wn(t,e,s,!0);Ho(()=>{Ps(s[t],r)},n)}function Wn(e,t,n=ge,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{ot();const l=_n(n),c=Je(t,n,e,i);return l(),it(),c});return s?r.unshift(o):r.push(o),o}}const ct=e=>(t,n=ge)=>{(!an||e==="sp")&&Wn(e,(...s)=>t(...s),n)},Vl=ct("bm"),jo=ct("m"),Fl=ct("bu"),jl=ct("u"),Hl=ct("bum"),Ho=ct("um"),Ul=ct("sp"),kl=ct("rtg"),Bl=ct("rtc");function Kl(e,t=ge){Wn("ec",e,t)}const Gl="components";function Wl(e,t){return $l(Gl,e,!0,t)||e}const ql=Symbol.for("v-ndc");function $l(e,t,n=!0,s=!1){const r=Te||ge;if(r){const o=r.type;{const l=Nc(o,!1);if(l&&(l===t||l===be(t)||l===jn(be(t))))return o}const i=lr(r[e]||o[e],t)||lr(r.appContext[e],t);return!i&&s?o:i}}function lr(e,t){return e&&(e[t]||e[be(t)]||e[jn(be(t))])}function Pf(e,t,n,s){let r;const o=n,i=V(e);if(i||ue(e)){const l=i&&st(e);let c=!1,a=!1;l&&(c=!Ie(e),a=lt(e),e=kn(e)),r=new Array(e.length);for(let f=0,d=e.length;ft(l,c,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,a=l.length;ce?ui(e)?Jn(e):ms(e.parent):null,nn=ae(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ms(e.parent),$root:e=>ms(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>ko(e),$forceUpdate:e=>e.f||(e.f=()=>{ks(e.update)}),$nextTick:e=>e.n||(e.n=Gn.bind(e.proxy)),$watch:e=>Tl.bind(e)}),ss=(e,t)=>e!==ee&&!e.__isScriptSetup&&Y(e,t),Jl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:c}=e;if(t[0]!=="$"){const g=i[t];if(g!==void 0)switch(g){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(ss(s,t))return i[t]=1,s[t];if(r!==ee&&Y(r,t))return i[t]=2,r[t];if(Y(o,t))return i[t]=3,o[t];if(n!==ee&&Y(n,t))return i[t]=4,n[t];_s&&(i[t]=0)}}const a=nn[t];let f,d;if(a)return t==="$attrs"&&pe(e.attrs,"get",""),a(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==ee&&Y(n,t))return i[t]=4,n[t];if(d=c.config.globalProperties,Y(d,t))return d[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return ss(r,t)?(r[t]=n,!0):s!==ee&&Y(s,t)?(s[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,props:o,type:i}},l){let c;return!!(n[l]||e!==ee&&l[0]!=="$"&&Y(e,l)||ss(t,l)||Y(o,l)||Y(s,l)||Y(nn,l)||Y(r.config.globalProperties,l)||(c=i.__cssModules)&&c[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function cr(e){return V(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let _s=!0;function zl(e){const t=ko(e),n=e.proxy,s=e.ctx;_s=!1,t.beforeCreate&&ur(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:a,created:f,beforeMount:d,mounted:g,beforeUpdate:m,updated:O,activated:R,deactivated:j,beforeDestroy:L,beforeUnmount:T,destroyed:N,unmounted:S,render:U,renderTracked:le,renderTriggered:W,errorCaptured:K,serverPrefetch:G,expose:re,inheritAttrs:me,components:Ce,directives:Ee,filters:_t}=t;if(a&&Ql(a,s,null),i)for(const B in i){const z=i[B];k(z)&&(s[B]=z.bind(n))}if(r){const B=r.call(n,n);Z(B)&&(e.data=gn(B))}if(_s=!0,o)for(const B in o){const z=o[B],ze=k(z)?z.bind(n,n):k(z.get)?z.get.bind(n,n):qe,ft=!k(z)&&k(z.set)?z.set.bind(n):qe,Fe=ce({get:ze,set:ft});Object.defineProperty(s,B,{enumerable:!0,configurable:!0,get:()=>Fe.value,set:Se=>Fe.value=Se})}if(l)for(const B in l)Uo(l[B],s,n,B);if(c){const B=k(c)?c.call(n):c;Reflect.ownKeys(B).forEach(z=>{Sn(z,B[z])})}f&&ur(f,e,"c");function se(B,z){V(z)?z.forEach(ze=>B(ze.bind(n))):z&&B(z.bind(n))}if(se(Vl,d),se(jo,g),se(Fl,m),se(jl,O),se(Dl,R),se(Ml,j),se(Kl,K),se(Bl,le),se(kl,W),se(Hl,T),se(Ho,S),se(Ul,G),V(re))if(re.length){const B=e.exposed||(e.exposed={});re.forEach(z=>{Object.defineProperty(B,z,{get:()=>n[z],set:ze=>n[z]=ze,enumerable:!0})})}else e.exposed||(e.exposed={});U&&e.render===qe&&(e.render=U),me!=null&&(e.inheritAttrs=me),Ce&&(e.components=Ce),Ee&&(e.directives=Ee),G&&Lo(e)}function Ql(e,t,n=qe){V(e)&&(e=ys(e));for(const s in e){const r=e[s];let o;Z(r)?"default"in r?o=De(r.from||s,r.default,!0):o=De(r.from||s):o=De(r),ie(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function ur(e,t,n){Je(V(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Uo(e,t,n,s){let r=s.includes(".")?Mo(n,s):()=>n[s];if(ue(e)){const o=t[e];k(o)&&Zt(r,o)}else if(k(e))Zt(r,e.bind(n));else if(Z(e))if(V(e))e.forEach(o=>Uo(o,t,n,s));else{const o=k(e.handler)?e.handler.bind(n):t[e.handler];k(o)&&Zt(r,o,e)}}function ko(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>In(c,a,i,!0)),In(c,t,i)),Z(t)&&o.set(t,c),c}function In(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&In(e,o,n,!0),r&&r.forEach(i=>In(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=Yl[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Yl={data:fr,props:ar,emits:ar,methods:zt,computed:zt,beforeCreate:_e,created:_e,beforeMount:_e,mounted:_e,beforeUpdate:_e,updated:_e,beforeDestroy:_e,beforeUnmount:_e,destroyed:_e,unmounted:_e,activated:_e,deactivated:_e,errorCaptured:_e,serverPrefetch:_e,components:zt,directives:zt,watch:Zl,provide:fr,inject:Xl};function fr(e,t){return t?e?function(){return ae(k(e)?e.call(this,this):e,k(t)?t.call(this,this):t)}:t:e}function Xl(e,t){return zt(ys(e),ys(t))}function ys(e){if(V(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${be(t)}Modifiers`]||e[`${wt(t)}Modifiers`];function sc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ee;let r=n;const o=t.startsWith("update:"),i=o&&nc(s,t.slice(7));i&&(i.trim&&(r=n.map(f=>ue(f)?f.trim():f)),i.number&&(r=n.map(Hn)));let l,c=s[l=Xn(t)]||s[l=Xn(be(t))];!c&&o&&(c=s[l=Xn(wt(t))]),c&&Je(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Je(a,e,6,r)}}const rc=new WeakMap;function Ko(e,t,n=!1){const s=n?rc:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!k(e)){const c=a=>{const f=Ko(a,t,!0);f&&(l=!0,ae(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&s.set(e,null),null):(V(o)?o.forEach(c=>i[c]=null):ae(i,o),Z(e)&&s.set(e,i),i)}function qn(e,t){return!e||!Ln(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,wt(t))||Y(e,t))}function hr(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:c,render:a,renderCache:f,props:d,data:g,setupState:m,ctx:O,inheritAttrs:R}=e,j=Tn(e);let L,T;try{if(n.shapeFlag&4){const S=r||s,U=S;L=Ge(a.call(U,S,f,d,m,g,O)),T=l}else{const S=t;L=Ge(S.length>1?S(d,{attrs:l,slots:i,emit:c}):S(d,null)),T=t.props?l:oc(l)}}catch(S){sn.length=0,Kn(S,e,1),L=we(mt)}let N=L;if(T&&R!==!1){const S=Object.keys(T),{shapeFlag:U}=N;S.length&&U&7&&(o&&S.some(Ts)&&(T=ic(T,o)),N=jt(N,T,!1,!0))}return n.dirs&&(N=jt(N,null,!1,!0),N.dirs=N.dirs?N.dirs.concat(n.dirs):n.dirs),n.transition&&Bs(N,n.transition),L=N,Tn(j),L}const oc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Ln(n))&&((t||(t={}))[n]=e[n]);return t},ic=(e,t)=>{const n={};for(const s in e)(!Ts(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function lc(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?dr(s,i,a):!!i;if(c&8){const f=t.dynamicProps;for(let d=0;dObject.create(Wo),$o=e=>Object.getPrototypeOf(e)===Wo;function uc(e,t,n,s=!1){const r={},o=qo();e.propsDefaults=Object.create(null),Jo(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:xo(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function fc(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=J(r),[c]=e.propsOptions;let a=!1;if((s||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let d=0;d{c=!0;const[g,m]=zo(d,t,!0);ae(i,g),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Z(e)&&s.set(e,Mt),Mt;if(V(o))for(let f=0;fe==="_"||e==="_ctx"||e==="$stable",Ws=e=>V(e)?e.map(Ge):[Ge(e)],hc=(e,t,n)=>{if(t._n)return t;const s=xl((...r)=>Ws(t(...r)),n);return s._c=!1,s},Qo=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Gs(r))continue;const o=e[r];if(k(o))t[r]=hc(r,o,s);else if(o!=null){const i=Ws(o);t[r]=()=>i}}},Yo=(e,t)=>{const n=Ws(t);e.slots.default=()=>n},Xo=(e,t,n)=>{for(const s in t)(n||!Gs(s))&&(e[s]=t[s])},dc=(e,t,n)=>{const s=e.slots=qo();if(e.vnode.shapeFlag&32){const r=t._;r?(Xo(s,t,n),n&&so(s,"_",r,!0)):Qo(t,s)}else t&&Yo(e,t)},pc=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=ee;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:Xo(r,t,n):(o=!t.$stable,Qo(t,r)),i=t}else t&&(Yo(e,t),i={default:1});if(o)for(const l in r)!Gs(l)&&i[l]==null&&delete r[l]},xe=vc;function gc(e){return mc(e)}function mc(e,t){const n=Un();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:f,parentNode:d,nextSibling:g,setScopeId:m=qe,insertStaticContent:O}=e,R=(u,h,p,_=null,b=null,y=null,w=void 0,x=null,A=!!h.dynamicChildren)=>{if(u===h)return;u&&!qt(u,h)&&(_=v(u),Se(u,b,y,!0),u=null),h.patchFlag===-2&&(A=!1,h.dynamicChildren=null);const{type:E,ref:F,shapeFlag:P}=h;switch(E){case $n:j(u,h,p,_);break;case mt:L(u,h,p,_);break;case An:u==null&&T(h,p,_,w);break;case Ze:Ce(u,h,p,_,b,y,w,x,A);break;default:P&1?U(u,h,p,_,b,y,w,x,A):P&6?Ee(u,h,p,_,b,y,w,x,A):(P&64||P&128)&&E.process(u,h,p,_,b,y,w,x,A,D)}F!=null&&b?en(F,u&&u.ref,y,h||u,!h):F==null&&u&&u.ref!=null&&en(u.ref,null,y,u,!0)},j=(u,h,p,_)=>{if(u==null)s(h.el=l(h.children),p,_);else{const b=h.el=u.el;h.children!==u.children&&a(b,h.children)}},L=(u,h,p,_)=>{u==null?s(h.el=c(h.children||""),p,_):h.el=u.el},T=(u,h,p,_)=>{[u.el,u.anchor]=O(u.children,h,p,_,u.el,u.anchor)},N=({el:u,anchor:h},p,_)=>{let b;for(;u&&u!==h;)b=g(u),s(u,p,_),u=b;s(h,p,_)},S=({el:u,anchor:h})=>{let p;for(;u&&u!==h;)p=g(u),r(u),u=p;r(h)},U=(u,h,p,_,b,y,w,x,A)=>{if(h.type==="svg"?w="svg":h.type==="math"&&(w="mathml"),u==null)le(h,p,_,b,y,w,x,A);else{const E=u.el&&u.el._isVueCE?u.el:null;try{E&&E._beginPatch(),G(u,h,b,y,w,x,A)}finally{E&&E._endPatch()}}},le=(u,h,p,_,b,y,w,x)=>{let A,E;const{props:F,shapeFlag:P,transition:M,dirs:H}=u;if(A=u.el=i(u.type,y,F&&F.is,F),P&8?f(A,u.children):P&16&&K(u.children,A,null,_,b,rs(u,y),w,x),H&&vt(u,null,_,"created"),W(A,u,u.scopeId,w,_),F){for(const te in F)te!=="value"&&!Qt(te)&&o(A,te,null,F[te],y,_);"value"in F&&o(A,"value",null,F.value,y),(E=F.onVnodeBeforeMount)&&ke(E,_,u)}H&&vt(u,null,_,"beforeMount");const $=_c(b,M);$&&M.beforeEnter(A),s(A,h,p),((E=F&&F.onVnodeMounted)||$||H)&&xe(()=>{E&&ke(E,_,u),$&&M.enter(A),H&&vt(u,null,_,"mounted")},b)},W=(u,h,p,_,b)=>{if(p&&m(u,p),_)for(let y=0;y<_.length;y++)m(u,_[y]);if(b){let y=b.subTree;if(h===y||ni(y.type)&&(y.ssContent===h||y.ssFallback===h)){const w=b.vnode;W(u,w,w.scopeId,w.slotScopeIds,b.parent)}}},K=(u,h,p,_,b,y,w,x,A=0)=>{for(let E=A;E{const x=h.el=u.el;let{patchFlag:A,dynamicChildren:E,dirs:F}=h;A|=u.patchFlag&16;const P=u.props||ee,M=h.props||ee;let H;if(p&&bt(p,!1),(H=M.onVnodeBeforeUpdate)&&ke(H,p,h,u),F&&vt(h,u,p,"beforeUpdate"),p&&bt(p,!0),(P.innerHTML&&M.innerHTML==null||P.textContent&&M.textContent==null)&&f(x,""),E?re(u.dynamicChildren,E,x,p,_,rs(h,b),y):w||z(u,h,x,null,p,_,rs(h,b),y,!1),A>0){if(A&16)me(x,P,M,p,b);else if(A&2&&P.class!==M.class&&o(x,"class",null,M.class,b),A&4&&o(x,"style",P.style,M.style,b),A&8){const $=h.dynamicProps;for(let te=0;te<$.length;te++){const X=$[te],Ae=P[X],Re=M[X];(Re!==Ae||X==="value")&&o(x,X,Ae,Re,b,p)}}A&1&&u.children!==h.children&&f(x,h.children)}else!w&&E==null&&me(x,P,M,p,b);((H=M.onVnodeUpdated)||F)&&xe(()=>{H&&ke(H,p,h,u),F&&vt(h,u,p,"updated")},_)},re=(u,h,p,_,b,y,w)=>{for(let x=0;x{if(h!==p){if(h!==ee)for(const y in h)!Qt(y)&&!(y in p)&&o(u,y,h[y],null,b,_);for(const y in p){if(Qt(y))continue;const w=p[y],x=h[y];w!==x&&y!=="value"&&o(u,y,x,w,b,_)}"value"in p&&o(u,"value",h.value,p.value,b)}},Ce=(u,h,p,_,b,y,w,x,A)=>{const E=h.el=u?u.el:l(""),F=h.anchor=u?u.anchor:l("");let{patchFlag:P,dynamicChildren:M,slotScopeIds:H}=h;H&&(x=x?x.concat(H):H),u==null?(s(E,p,_),s(F,p,_),K(h.children||[],p,F,b,y,w,x,A)):P>0&&P&64&&M&&u.dynamicChildren&&u.dynamicChildren.length===M.length?(re(u.dynamicChildren,M,p,b,y,w,x),(h.key!=null||b&&h===b.subTree)&&Zo(u,h,!0)):z(u,h,p,F,b,y,w,x,A)},Ee=(u,h,p,_,b,y,w,x,A)=>{h.slotScopeIds=x,u==null?h.shapeFlag&512?b.ctx.activate(h,p,_,w,A):_t(h,p,_,b,y,w,A):ut(u,h,A)},_t=(u,h,p,_,b,y,w)=>{const x=u.component=Cc(u,_,b);if(Vo(u)&&(x.ctx.renderer=D),Oc(x,!1,w),x.asyncDep){if(b&&b.registerDep(x,se,w),!u.el){const A=x.subTree=we(mt);L(null,A,h,p),u.placeholder=A.el}}else se(x,u,h,p,b,y,w)},ut=(u,h,p)=>{const _=h.component=u.component;if(lc(u,h,p))if(_.asyncDep&&!_.asyncResolved){B(_,h,p);return}else _.next=h,_.update();else h.el=u.el,_.vnode=h},se=(u,h,p,_,b,y,w)=>{const x=()=>{if(u.isMounted){let{next:P,bu:M,u:H,parent:$,vnode:te}=u;{const He=ei(u);if(He){P&&(P.el=te.el,B(u,P,w)),He.asyncDep.then(()=>{xe(()=>{u.isUnmounted||E()},b)});return}}let X=P,Ae;bt(u,!1),P?(P.el=te.el,B(u,P,w)):P=te,M&&En(M),(Ae=P.props&&P.props.onVnodeBeforeUpdate)&&ke(Ae,$,P,te),bt(u,!0);const Re=hr(u),je=u.subTree;u.subTree=Re,R(je,Re,d(je.el),v(je),u,b,y),P.el=Re.el,X===null&&cc(u,Re.el),H&&xe(H,b),(Ae=P.props&&P.props.onVnodeUpdated)&&xe(()=>ke(Ae,$,P,te),b)}else{let P;const{el:M,props:H}=h,{bm:$,m:te,parent:X,root:Ae,type:Re}=u,je=tn(h);bt(u,!1),$&&En($),!je&&(P=H&&H.onVnodeBeforeMount)&&ke(P,X,h),bt(u,!0);{Ae.ce&&Ae.ce._hasShadowRoot()&&Ae.ce._injectChildStyle(Re,u.parent?u.parent.type:void 0);const He=u.subTree=hr(u);R(null,He,p,_,u,b,y),h.el=He.el}if(te&&xe(te,b),!je&&(P=H&&H.onVnodeMounted)){const He=h;xe(()=>ke(P,X,He),b)}(h.shapeFlag&256||X&&tn(X.vnode)&&X.vnode.shapeFlag&256)&&u.a&&xe(u.a,b),u.isMounted=!0,h=p=_=null}};u.scope.on();const A=u.effect=new fo(x);u.scope.off();const E=u.update=A.run.bind(A),F=u.job=A.runIfDirty.bind(A);F.i=u,F.id=u.uid,A.scheduler=()=>ks(F),bt(u,!0),E()},B=(u,h,p)=>{h.component=u;const _=u.vnode.props;u.vnode=h,u.next=null,fc(u,h.props,_,p),pc(u,h.children,p),ot(),rr(u),it()},z=(u,h,p,_,b,y,w,x,A=!1)=>{const E=u&&u.children,F=u?u.shapeFlag:0,P=h.children,{patchFlag:M,shapeFlag:H}=h;if(M>0){if(M&128){ft(E,P,p,_,b,y,w,x,A);return}else if(M&256){ze(E,P,p,_,b,y,w,x,A);return}}H&8?(F&16&&Ne(E,b,y),P!==E&&f(p,P)):F&16?H&16?ft(E,P,p,_,b,y,w,x,A):Ne(E,b,y,!0):(F&8&&f(p,""),H&16&&K(P,p,_,b,y,w,x,A))},ze=(u,h,p,_,b,y,w,x,A)=>{u=u||Mt,h=h||Mt;const E=u.length,F=h.length,P=Math.min(E,F);let M;for(M=0;MF?Ne(u,b,y,!0,!1,P):K(h,p,_,b,y,w,x,A,P)},ft=(u,h,p,_,b,y,w,x,A)=>{let E=0;const F=h.length;let P=u.length-1,M=F-1;for(;E<=P&&E<=M;){const H=u[E],$=h[E]=A?et(h[E]):Ge(h[E]);if(qt(H,$))R(H,$,p,null,b,y,w,x,A);else break;E++}for(;E<=P&&E<=M;){const H=u[P],$=h[M]=A?et(h[M]):Ge(h[M]);if(qt(H,$))R(H,$,p,null,b,y,w,x,A);else break;P--,M--}if(E>P){if(E<=M){const H=M+1,$=HM)for(;E<=P;)Se(u[E],b,y,!0),E++;else{const H=E,$=E,te=new Map;for(E=$;E<=M;E++){const Oe=h[E]=A?et(h[E]):Ge(h[E]);Oe.key!=null&&te.set(Oe.key,E)}let X,Ae=0;const Re=M-$+1;let je=!1,He=0;const Gt=new Array(Re);for(E=0;E=Re){Se(Oe,b,y,!0);continue}let Ue;if(Oe.key!=null)Ue=te.get(Oe.key);else for(X=$;X<=M;X++)if(Gt[X-$]===0&&qt(Oe,h[X])){Ue=X;break}Ue===void 0?Se(Oe,b,y,!0):(Gt[Ue-$]=E+1,Ue>=He?He=Ue:je=!0,R(Oe,h[Ue],p,null,b,y,w,x,A),Ae++)}const Qs=je?yc(Gt):Mt;for(X=Qs.length-1,E=Re-1;E>=0;E--){const Oe=$+E,Ue=h[Oe],Ys=h[Oe+1],Xs=Oe+1{const{el:y,type:w,transition:x,children:A,shapeFlag:E}=u;if(E&6){Fe(u.component.subTree,h,p,_);return}if(E&128){u.suspense.move(h,p,_);return}if(E&64){w.move(u,h,p,D);return}if(w===Ze){s(y,h,p);for(let P=0;Px.enter(y),b);else{const{leave:P,delayLeave:M,afterLeave:H}=x,$=()=>{u.ctx.isUnmounted?r(y):s(y,h,p)},te=()=>{y._isLeaving&&y[Nl](!0),P(y,()=>{$(),H&&H()})};M?M(y,$,te):te()}else s(y,h,p)},Se=(u,h,p,_=!1,b=!1)=>{const{type:y,props:w,ref:x,children:A,dynamicChildren:E,shapeFlag:F,patchFlag:P,dirs:M,cacheIndex:H}=u;if(P===-2&&(b=!1),x!=null&&(ot(),en(x,null,p,u,!0),it()),H!=null&&(h.renderCache[H]=void 0),F&256){h.ctx.deactivate(u);return}const $=F&1&&M,te=!tn(u);let X;if(te&&(X=w&&w.onVnodeBeforeUnmount)&&ke(X,h,u),F&6)yt(u.component,p,_);else{if(F&128){u.suspense.unmount(p,_);return}$&&vt(u,null,h,"beforeUnmount"),F&64?u.type.remove(u,h,p,D,_):E&&!E.hasOnce&&(y!==Ze||P>0&&P&64)?Ne(E,h,p,!1,!0):(y===Ze&&P&384||!b&&F&16)&&Ne(A,h,p),_&&Ct(u)}(te&&(X=w&&w.onVnodeUnmounted)||$)&&xe(()=>{X&&ke(X,h,u),$&&vt(u,null,h,"unmounted")},p)},Ct=u=>{const{type:h,el:p,anchor:_,transition:b}=u;if(h===Ze){Ot(p,_);return}if(h===An){S(u);return}const y=()=>{r(p),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(u.shapeFlag&1&&b&&!b.persisted){const{leave:w,delayLeave:x}=b,A=()=>w(p,y);x?x(u.el,y,A):A()}else y()},Ot=(u,h)=>{let p;for(;u!==h;)p=g(u),r(u),u=p;r(h)},yt=(u,h,p)=>{const{bum:_,scope:b,job:y,subTree:w,um:x,m:A,a:E}=u;gr(A),gr(E),_&&En(_),b.stop(),y&&(y.flags|=8,Se(w,u,h,p)),x&&xe(x,h),xe(()=>{u.isUnmounted=!0},h)},Ne=(u,h,p,_=!1,b=!1,y=0)=>{for(let w=y;w{if(u.shapeFlag&6)return v(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const h=g(u.anchor||u.el),p=h&&h[Pl];return p?g(p):h};let I=!1;const C=(u,h,p)=>{let _;u==null?h._vnode&&(Se(h._vnode,null,null,!0),_=h._vnode.component):R(h._vnode||null,u,h,null,null,null,p),h._vnode=u,I||(I=!0,rr(_),Po(),I=!1)},D={p:R,um:Se,m:Fe,r:Ct,mt:_t,mc:K,pc:z,pbc:re,n:v,o:e};return{render:C,hydrate:void 0,createApp:tc(C)}}function rs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function bt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function _c(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Zo(e,t,n=!1){const s=e.children,r=t.children;if(V(s)&&V(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function ei(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ei(t)}function gr(e){if(e)for(let t=0;te.__isSuspense;function vc(e,t){t&&t.pendingBranch?V(e)?t.effects.push(...e):t.effects.push(e):Rl(e)}const Ze=Symbol.for("v-fgt"),$n=Symbol.for("v-txt"),mt=Symbol.for("v-cmt"),An=Symbol.for("v-stc"),sn=[];let Pe=null;function si(e=!1){sn.push(Pe=e?null:[])}function bc(){sn.pop(),Pe=sn[sn.length-1]||null}let fn=1;function Nn(e,t=!1){fn+=e,e<0&&Pe&&t&&(Pe.hasOnce=!0)}function ri(e){return e.dynamicChildren=fn>0?Pe||Mt:null,bc(),fn>0&&Pe&&Pe.push(e),e}function If(e,t,n,s,r,o){return ri(li(e,t,n,s,r,o,!0))}function oi(e,t,n,s,r){return ri(we(e,t,n,s,r,!0))}function Dn(e){return e?e.__v_isVNode===!0:!1}function qt(e,t){return e.type===t.type&&e.key===t.key}const ii=({key:e})=>e??null,Rn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ue(e)||ie(e)||k(e)?{i:Te,r:e,k:t,f:!!n}:e:null);function li(e,t=null,n=null,s=0,r=null,o=e===Ze?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ii(t),ref:t&&Rn(t),scopeId:No,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Te};return l?(qs(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ue(n)?8:16),fn>0&&!i&&Pe&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Pe.push(c),c}const we=Ec;function Ec(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===ql)&&(e=mt),Dn(e)){const l=jt(e,t,!0);return n&&qs(l,n),fn>0&&!o&&Pe&&(l.shapeFlag&6?Pe[Pe.indexOf(e)]=l:Pe.push(l)),l.patchFlag=-2,l}if(Dc(e)&&(e=e.__vccOpts),t){t=Sc(t);let{class:l,style:c}=t;l&&!ue(l)&&(t.class=Ns(l)),Z(c)&&(Bn(c)&&!V(c)&&(c=ae({},c)),t.style=Is(c))}const i=ue(e)?1:ni(e)?128:Il(e)?64:Z(e)?4:k(e)?2:0;return li(e,t,n,s,r,i,o,!0)}function Sc(e){return e?Bn(e)||$o(e)?ae({},e):e:null}function jt(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:c}=e,a=t?Rc(r||{},t):r,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&ii(a),ref:t&&t.ref?n&&o?V(o)?o.concat(Rn(t)):[o,Rn(t)]:Rn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ze?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&jt(e.ssContent),ssFallback:e.ssFallback&&jt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Bs(f,c.clone(f)),f}function Ac(e=" ",t=0){return we($n,null,e,t)}function Nf(e,t){const n=we(An,null,e);return n.staticCount=t,n}function Df(e="",t=!1){return t?(si(),oi(mt,null,e)):we(mt,null,e)}function Ge(e){return e==null||typeof e=="boolean"?we(mt):V(e)?we(Ze,null,e.slice()):Dn(e)?et(e):we($n,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:jt(e)}function qs(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(V(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),qs(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!$o(t)?t._ctx=Te:r===3&&Te&&(Te.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else k(t)?(t={default:t,_ctx:Te},n=32):(t=String(t),s&64?(n=16,t=[Ac(t)]):n=8);e.children=t,e.shapeFlag|=n}function Rc(...e){const t={};for(let n=0;nge||Te;let Mn,bs;{const e=Un(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};Mn=t("__VUE_INSTANCE_SETTERS__",n=>ge=n),bs=t("__VUE_SSR_SETTERS__",n=>an=n)}const _n=e=>{const t=ge;return Mn(e),e.scope.on(),()=>{e.scope.off(),Mn(t)}},mr=()=>{ge&&ge.scope.off(),Mn(null)};function ui(e){return e.vnode.shapeFlag&4}let an=!1;function Oc(e,t=!1,n=!1){t&&bs(t);const{props:s,children:r}=e.vnode,o=ui(e);uc(e,s,o,t),dc(e,r,n||t);const i=o?Tc(e,t):void 0;return t&&bs(!1),i}function Tc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Jl);const{setup:s}=n;if(s){ot();const r=e.setupContext=s.length>1?Ic(e):null,o=_n(e),i=mn(s,e,0,[e.props,r]),l=eo(i);if(it(),o(),(l||e.sp)&&!tn(e)&&Lo(e),l){if(i.then(mr,mr),t)return i.then(c=>{_r(e,c)}).catch(c=>{Kn(c,e,0)});e.asyncDep=i}else _r(e,i)}else fi(e)}function _r(e,t,n){k(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=Co(t)),fi(e)}function fi(e,t,n){const s=e.type;e.render||(e.render=s.render||qe);{const r=_n(e);ot();try{zl(e)}finally{it(),r()}}}const Pc={get(e,t){return pe(e,"get",""),e[t]}};function Ic(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Pc),slots:e.slots,emit:e.emit,expose:t}}function Jn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Co(Us(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in nn)return nn[n](e)},has(t,n){return n in t||n in nn}})):e.proxy}function Nc(e,t=!0){return k(e)?e.displayName||e.name:e.name||t&&e.__name}function Dc(e){return k(e)&&"__vccOpts"in e}const ce=(e,t)=>vl(e,t,an);function ai(e,t,n){try{Nn(-1);const s=arguments.length;return s===2?Z(t)&&!V(t)?Dn(t)?we(e,null,[t]):we(e,t):we(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Dn(n)&&(n=[n]),we(e,t,n))}finally{Nn(1)}}const Mc="3.5.30";/** +* @vue/runtime-dom v3.5.30 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Es;const yr=typeof window<"u"&&window.trustedTypes;if(yr)try{Es=yr.createPolicy("vue",{createHTML:e=>e})}catch{}const hi=Es?e=>Es.createHTML(e):e=>e,Lc="http://www.w3.org/2000/svg",Vc="http://www.w3.org/1998/Math/MathML",Xe=typeof document<"u"?document:null,vr=Xe&&Xe.createElement("template"),Fc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Xe.createElementNS(Lc,e):t==="mathml"?Xe.createElementNS(Vc,e):n?Xe.createElement(e,{is:n}):Xe.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Xe.createTextNode(e),createComment:e=>Xe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Xe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{vr.innerHTML=hi(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=vr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},jc=Symbol("_vtc");function Hc(e,t,n){const s=e[jc];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const br=Symbol("_vod"),Uc=Symbol("_vsh"),kc=Symbol(""),Bc=/(?:^|;)\s*display\s*:/;function Kc(e,t,n){const s=e.style,r=ue(n);let o=!1;if(n&&!r){if(t)if(ue(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&xn(s,l,"")}else for(const i in t)n[i]==null&&xn(s,i,"");for(const i in n)i==="display"&&(o=!0),xn(s,i,n[i])}else if(r){if(t!==n){const i=s[kc];i&&(n+=";"+i),s.cssText=n,o=Bc.test(n)}}else t&&e.removeAttribute("style");br in e&&(e[br]=o?s.display:"",e[Uc]&&(s.display="none"))}const Er=/\s*!important$/;function xn(e,t,n){if(V(n))n.forEach(s=>xn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Gc(e,t);Er.test(n)?e.setProperty(wt(s),n.replace(Er,""),"important"):e[s]=n}}const Sr=["Webkit","Moz","ms"],os={};function Gc(e,t){const n=os[t];if(n)return n;let s=be(t);if(s!=="filter"&&s in e)return os[t]=s;s=jn(s);for(let r=0;ris||(Jc.then(()=>is=0),is=Date.now());function Qc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Je(Yc(s,n.value),t,5,[s])};return n.value=e,n.attached=zc(),n}function Yc(e,t){if(V(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Or=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Xc=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?Hc(e,s,i):t==="style"?Kc(e,n,s):Ln(t)?Ts(t)||qc(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Zc(e,t,s,i))?(xr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Rr(e,t,s,i,o,t!=="value")):e._isVueCE&&(eu(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!ue(s)))?xr(e,be(t),s,o,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Rr(e,t,s,i))};function Zc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Or(t)&&k(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Or(t)&&ue(n)?!1:t in e}function eu(e,t){const n=e._def.props;if(!n)return!1;const s=be(t);return Array.isArray(n)?n.some(r=>be(r)===s):Object.keys(n).some(r=>be(r)===s)}const Ht=e=>{const t=e.props["onUpdate:modelValue"]||!1;return V(t)?n=>En(t,n):t};function tu(e){e.target.composing=!0}function Tr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const rt=Symbol("_assign");function Pr(e,t,n){return t&&(e=e.trim()),n&&(e=Hn(e)),e}const Mf={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[rt]=Ht(r);const o=s||r.props&&r.props.type==="number";gt(e,t?"change":"input",i=>{i.target.composing||e[rt](Pr(e.value,n,o))}),(n||o)&>(e,"change",()=>{e.value=Pr(e.value,n,o)}),t||(gt(e,"compositionstart",tu),gt(e,"compositionend",Tr),gt(e,"change",Tr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:o}},i){if(e[rt]=Ht(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?Hn(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},Lf={deep:!0,created(e,t,n){e[rt]=Ht(n),gt(e,"change",()=>{const s=e._modelValue,r=hn(e),o=e.checked,i=e[rt];if(V(s)){const l=Ds(s,r),c=l!==-1;if(o&&!c)i(s.concat(r));else if(!o&&c){const a=[...s];a.splice(l,1),i(a)}}else if(Bt(s)){const l=new Set(s);o?l.add(r):l.delete(r),i(l)}else i(di(e,o))})},mounted:Ir,beforeUpdate(e,t,n){e[rt]=Ht(n),Ir(e,t,n)}};function Ir(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(V(t))r=Ds(t,s.props.value)>-1;else if(Bt(t))r=t.has(s.props.value);else{if(t===n)return;r=Kt(t,di(e,!0))}e.checked!==r&&(e.checked=r)}const Vf={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=Bt(t);gt(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?Hn(hn(i)):hn(i));e[rt](e.multiple?r?new Set(o):o:o[0]),e._assigning=!0,Gn(()=>{e._assigning=!1})}),e[rt]=Ht(s)},mounted(e,{value:t}){Nr(e,t)},beforeUpdate(e,t,n){e[rt]=Ht(n)},updated(e,{value:t}){e._assigning||Nr(e,t)}};function Nr(e,t){const n=e.multiple,s=V(t);if(!(n&&!s&&!Bt(t))){for(let r=0,o=e.options.length;rString(a)===String(l)):i.selected=Ds(t,l)>-1}else i.selected=t.has(l);else if(Kt(hn(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function hn(e){return"_value"in e?e._value:e.value}function di(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const nu=["ctrl","shift","alt","meta"],su={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>nu.some(n=>e[`${n}Key`]&&!t.includes(n))},Ff=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...o)=>{for(let i=0;i{const t=ou().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=cu(s);if(!r)return;const o=t._component;!k(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=n(r,!1,lu(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t};function lu(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function cu(e){return ue(e)?document.querySelector(e):e}/*! + * pinia v2.3.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let pi;const zn=e=>pi=e,gi=Symbol();function Ss(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var rn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(rn||(rn={}));function uu(){const e=co(!0),t=e.run(()=>Dt({}));let n=[],s=[];const r=Us({install(o){zn(r),r._a=o,o.provide(gi,r),o.config.globalProperties.$pinia=r,s.forEach(i=>n.push(i)),s=[]},use(o){return this._a?n.push(o):s.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const mi=()=>{};function Mr(e,t,n,s=mi){e.push(t);const r=()=>{const o=e.indexOf(t);o>-1&&(e.splice(o,1),s())};return!n&&uo()&&qi(r),r}function Pt(e,...t){e.slice().forEach(n=>{n(...t)})}const fu=e=>e(),Lr=Symbol(),ls=Symbol();function As(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,s)=>e.set(s,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const s=t[n],r=e[n];Ss(r)&&Ss(s)&&e.hasOwnProperty(n)&&!ie(s)&&!st(s)?e[n]=As(r,s):e[n]=s}return e}const au=Symbol();function hu(e){return!Ss(e)||!e.hasOwnProperty(au)}const{assign:ht}=Object;function du(e){return!!(ie(e)&&e.effect)}function pu(e,t,n,s){const{state:r,actions:o,getters:i}=t,l=n.state.value[e];let c;function a(){l||(n.state.value[e]=r?r():{});const f=gl(n.state.value[e]);return ht(f,o,Object.keys(i||{}).reduce((d,g)=>(d[g]=Us(ce(()=>{zn(n);const m=n._s.get(e);return i[g].call(m,m)})),d),{}))}return c=_i(e,a,t,n,s,!0),c}function _i(e,t,n={},s,r,o){let i;const l=ht({actions:{}},n),c={deep:!0};let a,f,d=[],g=[],m;const O=s.state.value[e];!o&&!O&&(s.state.value[e]={});let R;function j(K){let G;a=f=!1,typeof K=="function"?(K(s.state.value[e]),G={type:rn.patchFunction,storeId:e,events:m}):(As(s.state.value[e],K),G={type:rn.patchObject,payload:K,storeId:e,events:m});const re=R=Symbol();Gn().then(()=>{R===re&&(a=!0)}),f=!0,Pt(d,G,s.state.value[e])}const L=o?function(){const{state:G}=n,re=G?G():{};this.$patch(me=>{ht(me,re)})}:mi;function T(){i.stop(),d=[],g=[],s._s.delete(e)}const N=(K,G="")=>{if(Lr in K)return K[ls]=G,K;const re=function(){zn(s);const me=Array.from(arguments),Ce=[],Ee=[];function _t(B){Ce.push(B)}function ut(B){Ee.push(B)}Pt(g,{args:me,name:re[ls],store:U,after:_t,onError:ut});let se;try{se=K.apply(this&&this.$id===e?this:U,me)}catch(B){throw Pt(Ee,B),B}return se instanceof Promise?se.then(B=>(Pt(Ce,B),B)).catch(B=>(Pt(Ee,B),Promise.reject(B))):(Pt(Ce,se),se)};return re[Lr]=!0,re[ls]=G,re},S={_p:s,$id:e,$onAction:Mr.bind(null,g),$patch:j,$reset:L,$subscribe(K,G={}){const re=Mr(d,K,G.detached,()=>me()),me=i.run(()=>Zt(()=>s.state.value[e],Ce=>{(G.flush==="sync"?f:a)&&K({storeId:e,type:rn.direct,events:m},Ce)},ht({},c,G)));return re},$dispose:T},U=gn(S);s._s.set(e,U);const W=(s._a&&s._a.runWithContext||fu)(()=>s._e.run(()=>(i=co()).run(()=>t({action:N}))));for(const K in W){const G=W[K];if(ie(G)&&!du(G)||st(G))o||(O&&hu(G)&&(ie(G)?G.value=O[K]:As(G,O[K])),s.state.value[e][K]=G);else if(typeof G=="function"){const re=N(G,K);W[K]=re,l.actions[K]=G}}return ht(U,W),ht(J(U),W),Object.defineProperty(U,"$state",{get:()=>s.state.value[e],set:K=>{j(G=>{ht(G,K)})}}),s._p.forEach(K=>{ht(U,i.run(()=>K({store:U,app:s._a,pinia:s,options:l})))}),O&&o&&n.hydrate&&n.hydrate(U.$state,O),a=!0,f=!0,U}/*! #__NO_SIDE_EFFECTS__ */function gu(e,t,n){let s,r;const o=typeof t=="function";s=e,r=o?n:t;function i(l,c){const a=wl();return l=l||(a?De(gi,null):null),l&&zn(l),l=pi,l._s.has(s)||(o?_i(s,t,r,l):pu(s,r,l)),l._s.get(s)}return i.$id=s,i}const mu="/api";class _u{constructor(t){Zs(this,"baseUrl");this.baseUrl=t}getToken(){return localStorage.getItem("accessToken")}async request(t,n,s){const r={"Content-Type":"application/json"},o=this.getToken();o&&(r.Authorization=`Bearer ${o}`);const i={method:t,headers:r};s&&(i.body=JSON.stringify(s));const l=await fetch(`${this.baseUrl}${n}`,i);if(l.status===401&&await this.tryRefreshToken()){r.Authorization=`Bearer ${this.getToken()}`;const f=await fetch(`${this.baseUrl}${n}`,{...i,headers:r});return{data:await f.json(),status:f.status}}const c=await l.json();if(!l.ok)throw new Error(c.error||"Request failed");return{data:c,status:l.status}}async tryRefreshToken(){const t=localStorage.getItem("refreshToken");if(!t)return!1;try{const n=await fetch(`${this.baseUrl}/auth/refresh`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:t})});if(!n.ok)return!1;const s=await n.json();return localStorage.setItem("accessToken",s.accessToken),!0}catch{return!1}}get(t){return this.request("GET",t)}post(t,n){return this.request("POST",t,n)}put(t,n){return this.request("PUT",t,n)}delete(t){return this.request("DELETE",t)}}const $t=new _u(mu),yi=gu("auth",()=>{const e=Dt(null),t=Dt(localStorage.getItem("accessToken")),n=Dt(localStorage.getItem("refreshToken")),s=Dt(localStorage.getItem("orgSlug")||""),r=ce(()=>!!e.value&&!!t.value),o=ce(()=>!!t.value),i=ce(()=>{var S;return((S=e.value)==null?void 0:S.role)==="chef"}),l=ce(()=>{var S;return((S=e.value)==null?void 0:S.role)==="disponent"}),c=ce(()=>{var S;return((S=e.value)==null?void 0:S.role)==="mitarbeiter"}),a=ce(()=>i.value||l.value),f=ce(()=>i.value||l.value),d=ce(()=>e.value?`${e.value.first_name} ${e.value.last_name}`:"");function g(S,U){t.value=S,n.value=U,localStorage.setItem("accessToken",S),localStorage.setItem("refreshToken",U)}function m(S){s.value=S,localStorage.setItem("orgSlug",S)}function O(){e.value=null,t.value=null,n.value=null,localStorage.removeItem("accessToken"),localStorage.removeItem("refreshToken")}async function R(S,U,le){const W=await $t.post("/auth/login",{email:S,password:U,org_slug:le});return g(W.data.accessToken,W.data.refreshToken),m(le),e.value=W.data.user,W.data}async function j(S){return(await $t.post("/auth/register",S)).data}async function L(){try{await $t.post("/auth/logout")}catch{}O()}async function T(){try{const S=await $t.get("/auth/me");e.value=S.data.user}catch{O()}}async function N(){if(!n.value)throw new Error("No refresh token");const S=await $t.post("/auth/refresh",{refreshToken:n.value});return t.value=S.data.accessToken,localStorage.setItem("accessToken",S.data.accessToken),S.data.accessToken}return{user:e,accessToken:t,refreshToken:n,orgSlug:s,isAuthenticated:r,hasStoredToken:o,isChef:i,isDisponent:l,isMitarbeiter:c,canManageUsers:a,canManageOrders:f,fullName:d,login:R,register:j,logout:L,fetchCurrentUser:T,refreshAccessToken:N,setOrgSlug:m}}),yu=Ks({__name:"App",setup(e){const t=yi();return jo(async()=>{t.hasStoredToken&&await t.fetchCurrentUser()}),(n,s)=>{const r=Wl("router-view");return si(),oi(r)}}}),vu="modulepreload",bu=function(e){return"/"+e},Vr={},he=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),l=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=bu(c),c in Vr)return;Vr[c]=!0;const a=c.endsWith(".css"),f=a?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${f}`))return;const d=document.createElement("link");if(d.rel=a?"stylesheet":vu,a||(d.as="script"),d.crossOrigin="",d.href=c,l&&d.setAttribute("nonce",l),document.head.appendChild(d),a)return new Promise((g,m)=>{d.addEventListener("load",g),d.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${c}`)))})}))}function o(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return r.then(i=>{for(const l of i||[])l.status==="rejected"&&o(l.reason);return t().catch(o)})};/*! + * vue-router v4.6.4 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */const Nt=typeof document<"u";function vi(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Eu(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&vi(e.default)}const Q=Object.assign;function cs(e,t){const n={};for(const s in t){const r=t[s];n[s]=Ve(r)?r.map(e):e(r)}return n}const on=()=>{},Ve=Array.isArray;function Fr(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const bi=/#/g,Su=/&/g,Au=/\//g,Ru=/=/g,xu=/\?/g,Ei=/\+/g,wu=/%5B/g,Cu=/%5D/g,Si=/%5E/g,Ou=/%60/g,Ai=/%7B/g,Tu=/%7C/g,Ri=/%7D/g,Pu=/%20/g;function $s(e){return e==null?"":encodeURI(""+e).replace(Tu,"|").replace(wu,"[").replace(Cu,"]")}function Iu(e){return $s(e).replace(Ai,"{").replace(Ri,"}").replace(Si,"^")}function Rs(e){return $s(e).replace(Ei,"%2B").replace(Pu,"+").replace(bi,"%23").replace(Su,"%26").replace(Ou,"`").replace(Ai,"{").replace(Ri,"}").replace(Si,"^")}function Nu(e){return Rs(e).replace(Ru,"%3D")}function Du(e){return $s(e).replace(bi,"%23").replace(xu,"%3F")}function Mu(e){return Du(e).replace(Au,"%2F")}function dn(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const Lu=/\/$/,Vu=e=>e.replace(Lu,"");function us(e,t,n="/"){let s,r={},o="",i="";const l=t.indexOf("#");let c=t.indexOf("?");return c=l>=0&&c>l?-1:c,c>=0&&(s=t.slice(0,c),o=t.slice(c,l>0?l:t.length),r=e(o.slice(1))),l>=0&&(s=s||t.slice(0,l),i=t.slice(l,t.length)),s=Uu(s??t,n),{fullPath:s+o+i,path:s,query:r,hash:dn(i)}}function Fu(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function jr(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function ju(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Ut(t.matched[s],n.matched[r])&&xi(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Ut(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function xi(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!Hu(e[n],t[n]))return!1;return!0}function Hu(e,t){return Ve(e)?Hr(e,t):Ve(t)?Hr(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function Hr(e,t){return Ve(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function Uu(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let o=n.length-1,i,l;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+s.slice(i).join("/")}const at={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let xs=function(e){return e.pop="pop",e.push="push",e}({}),fs=function(e){return e.back="back",e.forward="forward",e.unknown="",e}({});function ku(e){if(!e)if(Nt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Vu(e)}const Bu=/^[^#]+#/;function Ku(e,t){return e.replace(Bu,"#")+t}function Gu(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const Qn=()=>({left:window.scrollX,top:window.scrollY});function Wu(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=Gu(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Ur(e,t){return(history.state?history.state.position-t:-1)+e}const ws=new Map;function qu(e,t){ws.set(e,t)}function $u(e){const t=ws.get(e);return ws.delete(e),t}function Ju(e){return typeof e=="string"||e&&typeof e=="object"}function wi(e){return typeof e=="string"||typeof e=="symbol"}let oe=function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e}({});const Ci=Symbol("");oe.MATCHER_NOT_FOUND+"",oe.NAVIGATION_GUARD_REDIRECT+"",oe.NAVIGATION_ABORTED+"",oe.NAVIGATION_CANCELLED+"",oe.NAVIGATION_DUPLICATED+"";function kt(e,t){return Q(new Error,{type:e,[Ci]:!0},t)}function Ye(e,t){return e instanceof Error&&Ci in e&&(t==null||!!(e.type&t))}const zu=["params","query","hash"];function Qu(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of zu)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Yu(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sr&&Rs(r)):[s&&Rs(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function Xu(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=Ve(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Zu=Symbol(""),Br=Symbol(""),Yn=Symbol(""),Js=Symbol(""),Cs=Symbol("");function Jt(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function pt(e,t,n,s,r,o=i=>i()){const i=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,c)=>{const a=g=>{g===!1?c(kt(oe.NAVIGATION_ABORTED,{from:n,to:t})):g instanceof Error?c(g):Ju(g)?c(kt(oe.NAVIGATION_GUARD_REDIRECT,{from:t,to:g})):(i&&s.enterCallbacks[r]===i&&typeof g=="function"&&i.push(g),l())},f=o(()=>e.call(s&&s.instances[r],t,n,a));let d=Promise.resolve(f);e.length<3&&(d=d.then(a)),d.catch(g=>c(g))})}function as(e,t,n,s,r=o=>o()){const o=[];for(const i of e)for(const l in i.components){let c=i.components[l];if(!(t!=="beforeRouteEnter"&&!i.instances[l]))if(vi(c)){const a=(c.__vccOpts||c)[t];a&&o.push(pt(a,n,s,i,l,r))}else{let a=c();o.push(()=>a.then(f=>{if(!f)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const d=Eu(f)?f.default:f;i.mods[l]=f,i.components[l]=d;const g=(d.__vccOpts||d)[t];return g&&pt(g,n,s,i,l,r)()}))}}return o}function ef(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iUt(a,l))?s.push(l):n.push(l));const c=e.matched[i];c&&(t.matched.find(a=>Ut(a,c))||r.push(c))}return[n,s,r]}/*! + * vue-router v4.6.4 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let tf=()=>location.protocol+"//"+location.host;function Oi(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let i=r.includes(e.slice(o))?e.slice(o).length:1,l=r.slice(i);return l[0]!=="/"&&(l="/"+l),jr(l,"")}return jr(n,e)+s+r}function nf(e,t,n,s){let r=[],o=[],i=null;const l=({state:g})=>{const m=Oi(e,location),O=n.value,R=t.value;let j=0;if(g){if(n.value=m,t.value=g,i&&i===O){i=null;return}j=R?g.position-R.position:0}else s(m);r.forEach(L=>{L(n.value,O,{delta:j,type:xs.pop,direction:j?j>0?fs.forward:fs.back:fs.unknown})})};function c(){i=n.value}function a(g){r.push(g);const m=()=>{const O=r.indexOf(g);O>-1&&r.splice(O,1)};return o.push(m),m}function f(){if(document.visibilityState==="hidden"){const{history:g}=window;if(!g.state)return;g.replaceState(Q({},g.state,{scroll:Qn()}),"")}}function d(){for(const g of o)g();o=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",f),document.removeEventListener("visibilitychange",f)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",f),document.addEventListener("visibilitychange",f),{pauseListeners:c,listen:a,destroy:d}}function Kr(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?Qn():null}}function sf(e){const{history:t,location:n}=window,s={value:Oi(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(c,a,f){const d=e.indexOf("#"),g=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+c:tf()+e+c;try{t[f?"replaceState":"pushState"](a,"",g),r.value=a}catch(m){console.error(m),n[f?"replace":"assign"](g)}}function i(c,a){o(c,Q({},t.state,Kr(r.value.back,c,r.value.forward,!0),a,{position:r.value.position}),!0),s.value=c}function l(c,a){const f=Q({},r.value,t.state,{forward:c,scroll:Qn()});o(f.current,f,!0),o(c,Q({},Kr(s.value,c,null),{position:f.position+1},a),!1),s.value=c}return{location:s,state:r,push:l,replace:i}}function rf(e){e=ku(e);const t=sf(e),n=nf(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=Q({location:"",base:e,go:s,createHref:Ku.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let St=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var fe=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(fe||{});const of={type:St.Static,value:""},lf=/[a-zA-Z0-9_]/;function cf(e){if(!e)return[[]];if(e==="/")return[[of]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${a}": ${m}`)}let n=fe.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,c,a="",f="";function d(){a&&(n===fe.Static?o.push({type:St.Static,value:a}):n===fe.Param||n===fe.ParamRegExp||n===fe.ParamRegExpEnd?(o.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${a}) must be alone in its segment. eg: '/:ids+.`),o.push({type:St.Param,value:a,regexp:f,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),a="")}function g(){a+=c}for(;lt.length?t.length===1&&t[0]===ye.Static+ye.Segment?1:-1:0}function Ti(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const df={strict:!1,end:!0,sensitive:!1};function pf(e,t,n){const s=af(cf(e.path),n),r=Q(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function gf(e,t){const n=[],s=new Map;t=Fr(df,t);function r(d){return s.get(d)}function o(d,g,m){const O=!m,R=$r(d);R.aliasOf=m&&m.record;const j=Fr(t,d),L=[R];if("alias"in d){const S=typeof d.alias=="string"?[d.alias]:d.alias;for(const U of S)L.push($r(Q({},R,{components:m?m.record.components:R.components,path:U,aliasOf:m?m.record:R})))}let T,N;for(const S of L){const{path:U}=S;if(g&&U[0]!=="/"){const le=g.record.path,W=le[le.length-1]==="/"?"":"/";S.path=g.record.path+(U&&W+U)}if(T=pf(S,g,j),m?m.alias.push(T):(N=N||T,N!==T&&N.alias.push(T),O&&d.name&&!Jr(T)&&i(d.name)),Pi(T)&&c(T),R.children){const le=R.children;for(let W=0;W{i(N)}:on}function i(d){if(wi(d)){const g=s.get(d);g&&(s.delete(d),n.splice(n.indexOf(g),1),g.children.forEach(i),g.alias.forEach(i))}else{const g=n.indexOf(d);g>-1&&(n.splice(g,1),d.record.name&&s.delete(d.record.name),d.children.forEach(i),d.alias.forEach(i))}}function l(){return n}function c(d){const g=yf(d,n);n.splice(g,0,d),d.record.name&&!Jr(d)&&s.set(d.record.name,d)}function a(d,g){let m,O={},R,j;if("name"in d&&d.name){if(m=s.get(d.name),!m)throw kt(oe.MATCHER_NOT_FOUND,{location:d});j=m.record.name,O=Q(qr(g.params,m.keys.filter(N=>!N.optional).concat(m.parent?m.parent.keys.filter(N=>N.optional):[]).map(N=>N.name)),d.params&&qr(d.params,m.keys.map(N=>N.name))),R=m.stringify(O)}else if(d.path!=null)R=d.path,m=n.find(N=>N.re.test(R)),m&&(O=m.parse(R),j=m.record.name);else{if(m=g.name?s.get(g.name):n.find(N=>N.re.test(g.path)),!m)throw kt(oe.MATCHER_NOT_FOUND,{location:d,currentLocation:g});j=m.record.name,O=Q({},g.params,d.params),R=m.stringify(O)}const L=[];let T=m;for(;T;)L.unshift(T.record),T=T.parent;return{name:j,path:R,params:O,matched:L,meta:_f(L)}}e.forEach(d=>o(d));function f(){n.length=0,s.clear()}return{addRoute:o,resolve:a,removeRoute:i,clearRoutes:f,getRoutes:l,getRecordMatcher:r}}function qr(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function $r(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:mf(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function mf(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Jr(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function _f(e){return e.reduce((t,n)=>Q(t,n.meta),{})}function yf(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;Ti(e,t[o])<0?s=o:n=o+1}const r=vf(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function vf(e){let t=e;for(;t=t.parent;)if(Pi(t)&&Ti(e,t)===0)return t}function Pi({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function zr(e){const t=De(Yn),n=De(Js),s=ce(()=>{const c=Rt(e.to);return t.resolve(c)}),r=ce(()=>{const{matched:c}=s.value,{length:a}=c,f=c[a-1],d=n.matched;if(!f||!d.length)return-1;const g=d.findIndex(Ut.bind(null,f));if(g>-1)return g;const m=Qr(c[a-2]);return a>1&&Qr(f)===m&&d[d.length-1].path!==m?d.findIndex(Ut.bind(null,c[a-2])):g}),o=ce(()=>r.value>-1&&Rf(n.params,s.value.params)),i=ce(()=>r.value>-1&&r.value===n.matched.length-1&&xi(n.params,s.value.params));function l(c={}){if(Af(c)){const a=t[Rt(e.replace)?"replace":"push"](Rt(e.to)).catch(on);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>a),a}return Promise.resolve()}return{route:s,href:ce(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function bf(e){return e.length===1?e[0]:e}const Ef=Ks({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:zr,setup(e,{slots:t}){const n=gn(zr(e)),{options:s}=De(Yn),r=ce(()=>({[Yr(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Yr(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&bf(t.default(n));return e.custom?o:ai("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Sf=Ef;function Af(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Rf(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!Ve(r)||r.length!==s.length||s.some((o,i)=>o.valueOf()!==r[i].valueOf()))return!1}return!0}function Qr(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Yr=(e,t,n)=>e??t??n,xf=Ks({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=De(Cs),r=ce(()=>e.route||s.value),o=De(Br,0),i=ce(()=>{let a=Rt(o);const{matched:f}=r.value;let d;for(;(d=f[a])&&!d.components;)a++;return a}),l=ce(()=>r.value.matched[i.value]);Sn(Br,ce(()=>i.value+1)),Sn(Zu,l),Sn(Cs,r);const c=Dt();return Zt(()=>[c.value,l.value,e.name],([a,f,d],[g,m,O])=>{f&&(f.instances[d]=a,m&&m!==f&&a&&a===g&&(f.leaveGuards.size||(f.leaveGuards=m.leaveGuards),f.updateGuards.size||(f.updateGuards=m.updateGuards))),a&&f&&(!m||!Ut(f,m)||!g)&&(f.enterCallbacks[d]||[]).forEach(R=>R(a))},{flush:"post"}),()=>{const a=r.value,f=e.name,d=l.value,g=d&&d.components[f];if(!g)return Xr(n.default,{Component:g,route:a});const m=d.props[f],O=m?m===!0?a.params:typeof m=="function"?m(a):m:null,j=ai(g,Q({},O,t,{onVnodeUnmounted:L=>{L.component.isUnmounted&&(d.instances[f]=null)},ref:c}));return Xr(n.default,{Component:j,route:a})||j}}});function Xr(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const wf=xf;function Cf(e){const t=gf(e.routes,e),n=e.parseQuery||Yu,s=e.stringifyQuery||kr,r=e.history,o=Jt(),i=Jt(),l=Jt(),c=hl(at);let a=at;Nt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=cs.bind(null,v=>""+v),d=cs.bind(null,Mu),g=cs.bind(null,dn);function m(v,I){let C,D;return wi(v)?(C=t.getRecordMatcher(v),D=I):D=v,t.addRoute(D,C)}function O(v){const I=t.getRecordMatcher(v);I&&t.removeRoute(I)}function R(){return t.getRoutes().map(v=>v.record)}function j(v){return!!t.getRecordMatcher(v)}function L(v,I){if(I=Q({},I||c.value),typeof v=="string"){const p=us(n,v,I.path),_=t.resolve({path:p.path},I),b=r.createHref(p.fullPath);return Q(p,_,{params:g(_.params),hash:dn(p.hash),redirectedFrom:void 0,href:b})}let C;if(v.path!=null)C=Q({},v,{path:us(n,v.path,I.path).path});else{const p=Q({},v.params);for(const _ in p)p[_]==null&&delete p[_];C=Q({},v,{params:d(p)}),I.params=d(I.params)}const D=t.resolve(C,I),q=v.hash||"";D.params=f(g(D.params));const u=Fu(s,Q({},v,{hash:Iu(q),path:D.path})),h=r.createHref(u);return Q({fullPath:u,hash:q,query:s===kr?Xu(v.query):v.query||{}},D,{redirectedFrom:void 0,href:h})}function T(v){return typeof v=="string"?us(n,v,c.value.path):Q({},v)}function N(v,I){if(a!==v)return kt(oe.NAVIGATION_CANCELLED,{from:I,to:v})}function S(v){return W(v)}function U(v){return S(Q(T(v),{replace:!0}))}function le(v,I){const C=v.matched[v.matched.length-1];if(C&&C.redirect){const{redirect:D}=C;let q=typeof D=="function"?D(v,I):D;return typeof q=="string"&&(q=q.includes("?")||q.includes("#")?q=T(q):{path:q},q.params={}),Q({query:v.query,hash:v.hash,params:q.path!=null?{}:v.params},q)}}function W(v,I){const C=a=L(v),D=c.value,q=v.state,u=v.force,h=v.replace===!0,p=le(C,D);if(p)return W(Q(T(p),{state:typeof p=="object"?Q({},q,p.state):q,force:u,replace:h}),I||C);const _=C;_.redirectedFrom=I;let b;return!u&&ju(s,D,C)&&(b=kt(oe.NAVIGATION_DUPLICATED,{to:_,from:D}),Fe(D,D,!0,!1)),(b?Promise.resolve(b):re(_,D)).catch(y=>Ye(y)?Ye(y,oe.NAVIGATION_GUARD_REDIRECT)?y:ft(y):z(y,_,D)).then(y=>{if(y){if(Ye(y,oe.NAVIGATION_GUARD_REDIRECT))return W(Q({replace:h},T(y.to),{state:typeof y.to=="object"?Q({},q,y.to.state):q,force:u}),I||_)}else y=Ce(_,D,!0,h,q);return me(_,D,y),y})}function K(v,I){const C=N(v,I);return C?Promise.reject(C):Promise.resolve()}function G(v){const I=Ot.values().next().value;return I&&typeof I.runWithContext=="function"?I.runWithContext(v):v()}function re(v,I){let C;const[D,q,u]=ef(v,I);C=as(D.reverse(),"beforeRouteLeave",v,I);for(const p of D)p.leaveGuards.forEach(_=>{C.push(pt(_,v,I))});const h=K.bind(null,v,I);return C.push(h),Ne(C).then(()=>{C=[];for(const p of o.list())C.push(pt(p,v,I));return C.push(h),Ne(C)}).then(()=>{C=as(q,"beforeRouteUpdate",v,I);for(const p of q)p.updateGuards.forEach(_=>{C.push(pt(_,v,I))});return C.push(h),Ne(C)}).then(()=>{C=[];for(const p of u)if(p.beforeEnter)if(Ve(p.beforeEnter))for(const _ of p.beforeEnter)C.push(pt(_,v,I));else C.push(pt(p.beforeEnter,v,I));return C.push(h),Ne(C)}).then(()=>(v.matched.forEach(p=>p.enterCallbacks={}),C=as(u,"beforeRouteEnter",v,I,G),C.push(h),Ne(C))).then(()=>{C=[];for(const p of i.list())C.push(pt(p,v,I));return C.push(h),Ne(C)}).catch(p=>Ye(p,oe.NAVIGATION_CANCELLED)?p:Promise.reject(p))}function me(v,I,C){l.list().forEach(D=>G(()=>D(v,I,C)))}function Ce(v,I,C,D,q){const u=N(v,I);if(u)return u;const h=I===at,p=Nt?history.state:{};C&&(D||h?r.replace(v.fullPath,Q({scroll:h&&p&&p.scroll},q)):r.push(v.fullPath,q)),c.value=v,Fe(v,I,C,h),ft()}let Ee;function _t(){Ee||(Ee=r.listen((v,I,C)=>{if(!yt.listening)return;const D=L(v),q=le(D,yt.currentRoute.value);if(q){W(Q(q,{replace:!0,force:!0}),D).catch(on);return}a=D;const u=c.value;Nt&&qu(Ur(u.fullPath,C.delta),Qn()),re(D,u).catch(h=>Ye(h,oe.NAVIGATION_ABORTED|oe.NAVIGATION_CANCELLED)?h:Ye(h,oe.NAVIGATION_GUARD_REDIRECT)?(W(Q(T(h.to),{force:!0}),D).then(p=>{Ye(p,oe.NAVIGATION_ABORTED|oe.NAVIGATION_DUPLICATED)&&!C.delta&&C.type===xs.pop&&r.go(-1,!1)}).catch(on),Promise.reject()):(C.delta&&r.go(-C.delta,!1),z(h,D,u))).then(h=>{h=h||Ce(D,u,!1),h&&(C.delta&&!Ye(h,oe.NAVIGATION_CANCELLED)?r.go(-C.delta,!1):C.type===xs.pop&&Ye(h,oe.NAVIGATION_ABORTED|oe.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),me(D,u,h)}).catch(on)}))}let ut=Jt(),se=Jt(),B;function z(v,I,C){ft(v);const D=se.list();return D.length?D.forEach(q=>q(v,I,C)):console.error(v),Promise.reject(v)}function ze(){return B&&c.value!==at?Promise.resolve():new Promise((v,I)=>{ut.add([v,I])})}function ft(v){return B||(B=!v,_t(),ut.list().forEach(([I,C])=>v?C(v):I()),ut.reset()),v}function Fe(v,I,C,D){const{scrollBehavior:q}=e;if(!Nt||!q)return Promise.resolve();const u=!C&&$u(Ur(v.fullPath,0))||(D||!C)&&history.state&&history.state.scroll||null;return Gn().then(()=>q(v,I,u)).then(h=>h&&Wu(h)).catch(h=>z(h,v,I))}const Se=v=>r.go(v);let Ct;const Ot=new Set,yt={currentRoute:c,listening:!0,addRoute:m,removeRoute:O,clearRoutes:t.clearRoutes,hasRoute:j,getRoutes:R,resolve:L,options:e,push:S,replace:U,go:Se,back:()=>Se(-1),forward:()=>Se(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:se.add,isReady:ze,install(v){v.component("RouterLink",Sf),v.component("RouterView",wf),v.config.globalProperties.$router=yt,Object.defineProperty(v.config.globalProperties,"$route",{enumerable:!0,get:()=>Rt(c)}),Nt&&!Ct&&c.value===at&&(Ct=!0,S(r.location).catch(D=>{}));const I={};for(const D in at)Object.defineProperty(I,D,{get:()=>c.value[D],enumerable:!0});v.provide(Yn,yt),v.provide(Js,xo(I)),v.provide(Cs,c);const C=v.unmount;Ot.add(v),v.unmount=function(){Ot.delete(v),Ot.size<1&&(a=at,Ee&&Ee(),Ee=null,c.value=at,Ct=!1,B=!1),C()}}};function Ne(v){return v.reduce((I,C)=>I.then(()=>G(C)),Promise.resolve())}return yt}function jf(){return De(Yn)}function Hf(e){return De(Js)}const Ii=Cf({history:rf(),routes:[{path:"/login",name:"login",component:()=>he(()=>import("./LoginView-Do3PQjab.js"),[]),meta:{guest:!0}},{path:"/register",name:"register-org",component:()=>he(()=>import("./RegisterOrgView-BLP8qTxS.js"),[]),meta:{guest:!0}},{path:"/admin",name:"admin",component:()=>he(()=>import("./AdminDashboardView-B1X380mB.js"),[]),meta:{requiresAuth:!0}},{path:"/",component:()=>he(()=>import("./AppLayout-Dn1Dax5w.js"),[]),meta:{requiresAuth:!0},children:[{path:"",name:"dashboard",component:()=>he(()=>import("./DashboardView-Dm3JX8-R.js"),[])},{path:"orders",name:"orders",component:()=>he(()=>import("./OrdersView-mynFcmCT.js"),[])},{path:"orders/:id",name:"order-detail",component:()=>he(()=>import("./OrderDetailView-BOsK7PdF.js"),[])},{path:"users",name:"users",component:()=>he(()=>import("./UsersView-D-cYRxCO.js"),[]),meta:{roles:["chef","disponent"]}},{path:"availability",name:"availability",component:()=>he(()=>import("./AvailabilityView-B7DXJOIF.js"),[])},{path:"timesheets",name:"timesheets",component:()=>he(()=>import("./TimesheetsView-icu2yWhU.js"),[])},{path:"settings",name:"settings",component:()=>he(()=>import("./SettingsView-Dui31Esj.js"),[])},{path:"modules",name:"modules",component:()=>he(()=>import("./ModulesView-FSR3_RHO.js"),[]),meta:{roles:["chef"]}},{path:"partnerships",name:"partnerships",component:()=>he(()=>import("./PartnershipsView-B4wJavhc.js"),[])},{path:"help",name:"help",component:()=>he(()=>import("./HelpView-D57TqZOy.js"),[])},{path:"qualifications",name:"qualifications",component:()=>he(()=>import("./QualificationsView-HIWg4xhg.js"),[])},{path:"objects",name:"objects",component:()=>he(()=>import("./ObjectsView-CqpXdUlY.js"),[])}]}]});Ii.beforeEach(async(e,t,n)=>{var l;const s=yi();!s.isAuthenticated&&s.hasStoredToken&&await s.fetchCurrentUser();const r=e.matched.some(c=>c.meta.requiresAuth),o=e.matched.some(c=>c.meta.guest),i=e.meta.roles;r&&!s.isAuthenticated?n({name:"login",query:{redirect:e.fullPath}}):o&&s.isAuthenticated?n({name:"dashboard"}):i&&!i.includes(((l=s.user)==null?void 0:l.role)||"")?n({name:"dashboard"}):n()});const zs=iu(yu);zs.use(uu());zs.use(Ii);zs.mount("#app");export{Nf as A,Lf as B,Ze as F,li as a,Tf as b,If as c,Ks as d,Df as e,jf as f,Hf as g,Zt as h,we as i,xl as j,ce as k,Wl as l,$t as m,Ns as n,si as o,Ac as p,jo as q,Dt as r,Vf as s,Wi as t,yi as u,Mf as v,Ff as w,Pf as x,Rt as y,oi as z}; diff --git a/dist/assets/index-DjccJ3o_.css b/dist/assets/index-DjccJ3o_.css deleted file mode 100644 index 14a2510..0000000 --- a/dist/assets/index-DjccJ3o_.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}body{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}body:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.btn{border-radius:.5rem;padding:.5rem 1rem;font-weight:500;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.btn-primary{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-primary:hover{--tw-bg-opacity: 1;background-color:rgb(67 56 202 / var(--tw-bg-opacity, 1))}.btn-primary:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity, 1));--tw-ring-offset-width: 2px}.btn-secondary{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.btn-secondary:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.btn-secondary:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.btn-secondary:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.btn-danger{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-danger:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.btn-success{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-success:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.input{width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));padding:.5rem .75rem}.input:focus{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity, 1));--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity, 1))}.input:is(.dark *){--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.card{border-radius:.75rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:1.5rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.card:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.badge{display:inline-flex;align-items:center;border-radius:9999px;padding:.125rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500}.badge-primary{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(55 48 163 / var(--tw-text-opacity, 1))}.badge-primary:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(49 46 129 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(199 210 254 / var(--tw-text-opacity, 1))}.badge-success{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.badge-success:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(20 83 45 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(187 247 208 / var(--tw-text-opacity, 1))}.badge-warning{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.badge-warning:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.badge-danger{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.badge-danger:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.right-3{right:.75rem}.top-1\/2{top:50%}.z-40{z-index:40}.z-50{z-index:50}.m-4{margin:1rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-2{margin-left:.5rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-8{height:2rem}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-24{width:6rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-64{width:16rem}.w-8{width:2rem}.w-full{width:100%}.min-w-0{min-width:0px}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-7xl{max-width:80rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.flex-1{flex:1 1 0%}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-6{--tw-translate-x: 1.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity, 1))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-primary-100{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1))}.bg-primary-600{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-primary-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-primary-700{--tw-gradient-to: #4338ca var(--tw-gradient-to-position)}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pr-10{padding-right:2.5rem}.pr-4{padding-right:1rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.capitalize{text-transform:capitalize}.italic{font-style:italic}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-primary-100{--tw-text-opacity: 1;color:rgb(224 231 255 / var(--tw-text-opacity, 1))}.text-primary-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-primary-700{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-purple-800{--tw-text-opacity: 1;color:rgb(107 33 168 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.opacity-50{opacity:.5}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.hover\:scale-\[1\.02\]:hover{--tw-scale-x: 1.02;--tw-scale-y: 1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-blue-500:hover{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-green-600:hover{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:text-primary-700:hover{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.hover\:text-primary-800:hover{--tw-text-opacity: 1;color:rgb(55 48 163 / var(--tw-text-opacity, 1))}.hover\:text-red-600:hover{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:divide-gray-700:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(55 65 81 / var(--tw-divide-opacity, 1))}.dark\:border-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:border-gray-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-900\/20:is(.dark *){background-color:#1e3a8a33}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-700\/50:is(.dark *){background-color:#37415180}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(20 83 45 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/20:is(.dark *){background-color:#14532d33}.dark\:bg-primary-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(49 46 129 / var(--tw-bg-opacity, 1))}.dark\:bg-red-900\/20:is(.dark *){background-color:#7f1d1d33}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-900\/20:is(.dark *){background-color:#713f1233}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-primary-200:is(.dark *){--tw-text-opacity: 1;color:rgb(199 210 254 / var(--tw-text-opacity, 1))}.dark\:text-primary-300:is(.dark *){--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-500:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700\/50:hover:is(.dark *){background-color:#37415180}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-red-900\/20:hover:is(.dark *){background-color:#7f1d1d33}@media (min-width: 640px){.sm\:block{display:block}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media (min-width: 768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 1024px){.lg\:ml-0{margin-left:0}.lg\:block{display:block}.lg\:hidden{display:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pl-64{padding-left:16rem}} diff --git a/dist/assets/index-Dox4jtA_.js b/dist/assets/index-Dox4jtA_.js deleted file mode 100644 index f91cfdd..0000000 --- a/dist/assets/index-Dox4jtA_.js +++ /dev/null @@ -1,29 +0,0 @@ -var Ti=Object.defineProperty;var Pi=(e,t,n)=>t in e?Ti(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Xs=(e,t,n)=>Pi(e,typeof t!="symbol"?t+"":t,n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();/** -* @vue/shared v3.5.30 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Cs(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ee={},Dt=[],qe=()=>{},Yr=()=>!1,Mn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ts=e=>e.startsWith("onUpdate:"),ae=Object.assign,Ps=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ii=Object.prototype.hasOwnProperty,Y=(e,t)=>Ii.call(e,t),j=Array.isArray,Mt=e=>fn(e)==="[object Map]",Ln=e=>fn(e)==="[object Set]",Zs=e=>fn(e)==="[object Date]",B=e=>typeof e=="function",ue=e=>typeof e=="string",$e=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Xr=e=>(Z(e)||B(e))&&B(e.then)&&B(e.catch),Zr=Object.prototype.toString,fn=e=>Zr.call(e),Ni=e=>fn(e).slice(8,-1),eo=e=>fn(e)==="[object Object]",Vn=e=>ue(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,$t=Cs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Fn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Di=/-\w/g,ye=Fn(e=>e.replace(Di,t=>t.slice(1).toUpperCase())),Mi=/\B([A-Z])/g,xt=Fn(e=>e.replace(Mi,"-$1").toLowerCase()),jn=Fn(e=>e.charAt(0).toUpperCase()+e.slice(1)),Xn=Fn(e=>e?`on${jn(e)}`:""),We=(e,t)=>!Object.is(e,t),vn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Hn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let er;const Un=()=>er||(er=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Is(e){if(j(e)){const t={};for(let n=0;n{if(n){const s=n.split(Vi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Ns(e){let t="";if(ue(e))t=e;else if(j(e))for(let n=0;nan(n,t))}const so=e=>!!(e&&e.__v_isRef===!0),Ki=e=>ue(e)?e:e==null?"":j(e)||Z(e)&&(e.toString===Zr||!B(e.toString))?so(e)?Ki(e.value):JSON.stringify(e,ro,2):String(e),ro=(e,t)=>so(t)?ro(e,t.value):Mt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[Zn(s,o)+" =>"]=r,n),{})}:Ln(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Zn(n))}:$e(t)?Zn(t):Z(t)&&!j(t)&&!eo(t)?String(t):t,Zn=(e,t="")=>{var n;return $e(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.5.30 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let he;class oo{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=he,!t&&he&&(this.index=(he.scopes||(he.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(he=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(zt){let t=zt;for(zt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Jt;){let t=Jt;for(Jt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function ao(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function ho(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Ls(s),Wi(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function hs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(po(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function po(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===sn)||(e.globalVersion=sn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!hs(e))))return;e.flags|=2;const t=e.dep,n=ne,s=Me;ne=e,Me=!0;try{ao(e);const r=e.fn(e._value);(t.version===0||We(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ne=n,Me=s,ho(e),e.flags&=-3}}function Ls(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)Ls(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Wi(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Me=!0;const go=[];function rt(){go.push(Me),Me=!1}function ot(){const e=go.pop();Me=e===void 0?!0:e}function tr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ne;ne=void 0;try{t()}finally{ne=n}}}let sn=0;class qi{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Vs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ne||!Me||ne===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ne)n=this.activeLink=new qi(ne,this),ne.deps?(n.prevDep=ne.depsTail,ne.depsTail.nextDep=n,ne.depsTail=n):ne.deps=ne.depsTail=n,mo(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ne.depsTail,n.nextDep=void 0,ne.depsTail.nextDep=n,ne.depsTail=n,ne.deps===n&&(ne.deps=s)}return n}trigger(t){this.version++,sn++,this.notify(t)}notify(t){Ds();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Ms()}}}function mo(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)mo(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const An=new WeakMap,St=Symbol(""),ds=Symbol(""),rn=Symbol("");function de(e,t,n){if(Me&&ne){let s=An.get(e);s||An.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Vs),r.map=s,r.key=n),r.track()}}function tt(e,t,n,s,r,o){const i=An.get(e);if(!i){sn++;return}const l=c=>{c&&c.trigger()};if(Ds(),t==="clear")i.forEach(l);else{const c=j(e),a=c&&Vn(n);if(c&&n==="length"){const f=Number(s);i.forEach((d,g)=>{(g==="length"||g===rn||!$e(g)&&g>=f)&&l(d)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),a&&l(i.get(rn)),t){case"add":c?a&&l(i.get("length")):(l(i.get(St)),Mt(e)&&l(i.get(ds)));break;case"delete":c||(l(i.get(St)),Mt(e)&&l(i.get(ds)));break;case"set":Mt(e)&&l(i.get(St));break}}Ms()}function $i(e,t){const n=An.get(e);return n&&n.get(t)}function Ct(e){const t=J(e);return t===e?t:(de(t,"iterate",rn),Ie(e)?t:t.map(Le))}function Bn(e){return de(e=J(e),"iterate",rn),e}function Ke(e,t){return it(e)?Ft(st(e)?Le(t):t):Le(t)}const Ji={__proto__:null,[Symbol.iterator](){return ts(this,Symbol.iterator,e=>Ke(this,e))},concat(...e){return Ct(this).concat(...e.map(t=>j(t)?Ct(t):t))},entries(){return ts(this,"entries",e=>(e[1]=Ke(this,e[1]),e))},every(e,t){return Qe(this,"every",e,t,void 0,arguments)},filter(e,t){return Qe(this,"filter",e,t,n=>n.map(s=>Ke(this,s)),arguments)},find(e,t){return Qe(this,"find",e,t,n=>Ke(this,n),arguments)},findIndex(e,t){return Qe(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Qe(this,"findLast",e,t,n=>Ke(this,n),arguments)},findLastIndex(e,t){return Qe(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Qe(this,"forEach",e,t,void 0,arguments)},includes(...e){return ns(this,"includes",e)},indexOf(...e){return ns(this,"indexOf",e)},join(e){return Ct(this).join(e)},lastIndexOf(...e){return ns(this,"lastIndexOf",e)},map(e,t){return Qe(this,"map",e,t,void 0,arguments)},pop(){return kt(this,"pop")},push(...e){return kt(this,"push",e)},reduce(e,...t){return nr(this,"reduce",e,t)},reduceRight(e,...t){return nr(this,"reduceRight",e,t)},shift(){return kt(this,"shift")},some(e,t){return Qe(this,"some",e,t,void 0,arguments)},splice(...e){return kt(this,"splice",e)},toReversed(){return Ct(this).toReversed()},toSorted(e){return Ct(this).toSorted(e)},toSpliced(...e){return Ct(this).toSpliced(...e)},unshift(...e){return kt(this,"unshift",e)},values(){return ts(this,"values",e=>Ke(this,e))}};function ts(e,t,n){const s=Bn(e),r=s[t]();return s!==e&&!Ie(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.done||(o.value=n(o.value)),o}),r}const zi=Array.prototype;function Qe(e,t,n,s,r,o){const i=Bn(e),l=i!==e&&!Ie(e),c=i[t];if(c!==zi[t]){const d=c.apply(e,o);return l?Le(d):d}let a=n;i!==e&&(l?a=function(d,g){return n.call(this,Ke(e,d),g,e)}:n.length>2&&(a=function(d,g){return n.call(this,d,g,e)}));const f=c.call(i,a,s);return l&&r?r(f):f}function nr(e,t,n,s){const r=Bn(e),o=r!==e&&!Ie(e);let i=n,l=!1;r!==e&&(o?(l=s.length===0,i=function(a,f,d){return l&&(l=!1,a=Ke(e,a)),n.call(this,a,Ke(e,f),d,e)}):n.length>3&&(i=function(a,f,d){return n.call(this,a,f,d,e)}));const c=r[t](i,...s);return l?Ke(e,c):c}function ns(e,t,n){const s=J(e);de(s,"iterate",rn);const r=s[t](...n);return(r===-1||r===!1)&&kn(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function kt(e,t,n=[]){rt(),Ds();const s=J(e)[t].apply(e,n);return Ms(),ot(),s}const Qi=Cs("__proto__,__v_isRef,__isVue"),_o=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter($e));function Yi(e){$e(e)||(e=String(e));const t=J(this);return de(t,"has",e),t.hasOwnProperty(e)}class vo{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?ll:So:o?Eo:bo).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=j(t);if(!r){let c;if(i&&(c=Ji[n]))return c;if(n==="hasOwnProperty")return Yi}const l=Reflect.get(t,n,ie(t)?t:s);if(($e(n)?_o.has(n):Qi(n))||(r||de(t,"get",n),o))return l;if(ie(l)){const c=i&&Vn(n)?l:l.value;return r&&Z(c)?gs(c):c}return Z(l)?r?gs(l):hn(l):l}}class yo extends vo{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];const i=j(t)&&Vn(n);if(!this._isShallow){const a=it(o);if(!Ie(s)&&!it(s)&&(o=J(o),s=J(s)),!i&&ie(o)&&!ie(s))return a||(o.value=s),!0}const l=i?Number(n)e,gn=e=>Reflect.getPrototypeOf(e);function nl(e,t,n){return function(...s){const r=this.__v_raw,o=J(r),i=Mt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=r[e](...s),f=n?ps:t?Ft:Le;return!t&&de(o,"iterate",c?ds:St),ae(Object.create(a),{next(){const{value:d,done:g}=a.next();return g?{value:d,done:g}:{value:l?[f(d[0]),f(d[1])]:f(d),done:g}}})}}function mn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function sl(e,t){const n={get(r){const o=this.__v_raw,i=J(o),l=J(r);e||(We(r,l)&&de(i,"get",r),de(i,"get",l));const{has:c}=gn(i),a=t?ps:e?Ft:Le;if(c.call(i,r))return a(o.get(r));if(c.call(i,l))return a(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&de(J(r),"iterate",St),r.size},has(r){const o=this.__v_raw,i=J(o),l=J(r);return e||(We(r,l)&&de(i,"has",r),de(i,"has",l)),r===l?o.has(r):o.has(r)||o.has(l)},forEach(r,o){const i=this,l=i.__v_raw,c=J(l),a=t?ps:e?Ft:Le;return!e&&de(c,"iterate",St),l.forEach((f,d)=>r.call(o,a(f),a(d),i))}};return ae(n,e?{add:mn("add"),set:mn("set"),delete:mn("delete"),clear:mn("clear")}:{add(r){const o=J(this),i=gn(o),l=J(r),c=!t&&!Ie(r)&&!it(r)?l:r;return i.has.call(o,c)||We(r,c)&&i.has.call(o,r)||We(l,c)&&i.has.call(o,l)||(o.add(c),tt(o,"add",c,c)),this},set(r,o){!t&&!Ie(o)&&!it(o)&&(o=J(o));const i=J(this),{has:l,get:c}=gn(i);let a=l.call(i,r);a||(r=J(r),a=l.call(i,r));const f=c.call(i,r);return i.set(r,o),a?We(o,f)&&tt(i,"set",r,o):tt(i,"add",r,o),this},delete(r){const o=J(this),{has:i,get:l}=gn(o);let c=i.call(o,r);c||(r=J(r),c=i.call(o,r)),l&&l.call(o,r);const a=o.delete(r);return c&&tt(o,"delete",r,void 0),a},clear(){const r=J(this),o=r.size!==0,i=r.clear();return o&&tt(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=nl(r,e,t)}),n}function Fs(e,t){const n=sl(e,t);return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(Y(n,r)&&r in s?n:s,r,o)}const rl={get:Fs(!1,!1)},ol={get:Fs(!1,!0)},il={get:Fs(!0,!1)};const bo=new WeakMap,Eo=new WeakMap,So=new WeakMap,ll=new WeakMap;function cl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ul(e){return e.__v_skip||!Object.isExtensible(e)?0:cl(Ni(e))}function hn(e){return it(e)?e:js(e,!1,Zi,rl,bo)}function Ao(e){return js(e,!1,tl,ol,Eo)}function gs(e){return js(e,!0,el,il,So)}function js(e,t,n,s,r){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=ul(e);if(o===0)return e;const i=r.get(e);if(i)return i;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function st(e){return it(e)?st(e.__v_raw):!!(e&&e.__v_isReactive)}function it(e){return!!(e&&e.__v_isReadonly)}function Ie(e){return!!(e&&e.__v_isShallow)}function kn(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function Hs(e){return!Y(e,"__v_skip")&&Object.isExtensible(e)&&to(e,"__v_skip",!0),e}const Le=e=>Z(e)?hn(e):e,Ft=e=>Z(e)?gs(e):e;function ie(e){return e?e.__v_isRef===!0:!1}function Nt(e){return Ro(e,!1)}function fl(e){return Ro(e,!0)}function Ro(e,t){return ie(e)?e:new al(e,t)}class al{constructor(t,n){this.dep=new Vs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:Le(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Ie(t)||it(t);t=s?t:J(t),We(t,n)&&(this._rawValue=t,this._value=s?t:Le(t),this.dep.trigger())}}function At(e){return ie(e)?e.value:e}const hl={get:(e,t,n)=>t==="__v_raw"?e:At(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ie(r)&&!ie(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function xo(e){return st(e)?e:new Proxy(e,hl)}function dl(e){const t=j(e)?new Array(e.length):{};for(const n in e)t[n]=gl(e,n);return t}class pl{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._raw=J(t);let r=!0,o=t;if(!j(t)||!Vn(String(n)))do r=!kn(o)||Ie(o);while(r&&(o=o.__v_raw));this._shallow=r}get value(){let t=this._object[this._key];return this._shallow&&(t=At(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&ie(this._raw[this._key])){const n=this._object[this._key];if(ie(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return $i(this._raw,this._key)}}function gl(e,t,n){return new pl(e,t,n)}class ml{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Vs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=sn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ne!==this)return fo(this,!0),!0}get value(){const t=this.dep.track();return po(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function _l(e,t,n=!1){let s,r;return B(e)?s=e:(s=e.get,r=e.set),new ml(s,r,n)}const _n={},Rn=new WeakMap;let yt;function vl(e,t=!1,n=yt){if(n){let s=Rn.get(n);s||Rn.set(n,s=[]),s.push(e)}}function yl(e,t,n=ee){const{immediate:s,deep:r,once:o,scheduler:i,augmentJob:l,call:c}=n,a=S=>r?S:Ie(S)||r===!1||r===0?nt(S,1):nt(S);let f,d,g,m,C=!1,R=!1;if(ie(e)?(d=()=>e.value,C=Ie(e)):st(e)?(d=()=>a(e),C=!0):j(e)?(R=!0,C=e.some(S=>st(S)||Ie(S)),d=()=>e.map(S=>{if(ie(S))return S.value;if(st(S))return a(S);if(B(S))return c?c(S,2):S()})):B(e)?t?d=c?()=>c(e,2):e:d=()=>{if(g){rt();try{g()}finally{ot()}}const S=yt;yt=f;try{return c?c(e,3,[m]):e(m)}finally{yt=S}}:d=qe,t&&r){const S=d,U=r===!0?1/0:r;d=()=>nt(S(),U)}const F=lo(),L=()=>{f.stop(),F&&F.active&&Ps(F.effects,f)};if(o&&t){const S=t;t=(...U)=>{S(...U),L()}}let T=R?new Array(e.length).fill(_n):_n;const N=S=>{if(!(!(f.flags&1)||!f.dirty&&!S))if(t){const U=f.run();if(r||C||(R?U.some((le,W)=>We(le,T[W])):We(U,T))){g&&g();const le=yt;yt=f;try{const W=[U,T===_n?void 0:R&&T[0]===_n?[]:T,m];T=U,c?c(t,3,W):t(...W)}finally{yt=le}}}else f.run()};return l&&l(N),f=new co(d),f.scheduler=i?()=>i(N,!1):N,m=S=>vl(S,!1,f),g=f.onStop=()=>{const S=Rn.get(f);if(S){if(c)c(S,4);else for(const U of S)U();Rn.delete(f)}},t?s?N(!0):T=f.run():i?i(N.bind(null,!0),!0):f.run(),L.pause=f.pause.bind(f),L.resume=f.resume.bind(f),L.stop=L,L}function nt(e,t=1/0,n){if(t<=0||!Z(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,ie(e))nt(e.value,t,n);else if(j(e))for(let s=0;s{nt(s,t,n)});else if(eo(e)){for(const s in e)nt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&nt(e[s],t,n)}return e}/** -* @vue/runtime-core v3.5.30 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function dn(e,t,n,s){try{return s?e(...s):e()}catch(r){Kn(r,t,n)}}function Je(e,t,n,s){if(B(e)){const r=dn(e,t,n,s);return r&&Xr(r)&&r.catch(o=>{Kn(o,t,n)}),r}if(j(e)){const r=[];for(let o=0;o>>1,r=ve[s],o=on(r);o=on(n)?ve.push(e):ve.splice(El(t),0,e),e.flags|=1,Oo()}}function Oo(){xn||(xn=wo.then(To))}function Sl(e){j(e)?Lt.push(...e):ht&&e.id===-1?ht.splice(Pt+1,0,e):e.flags&1||(Lt.push(e),e.flags|=1),Oo()}function sr(e,t,n=ke+1){for(;non(n)-on(s));if(Lt.length=0,ht){ht.push(...t);return}for(ht=t,Pt=0;Pte.id==null?e.flags&2?-1:1/0:e.id;function To(e){try{for(ke=0;ke{s._d&&Tn(-1);const o=wn(t);let i;try{i=e(...r)}finally{wn(o),s._d&&Tn(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function Of(e,t){if(Te===null)return e;const n=Jn(Te),s=e.dirs||(e.dirs=[]);for(let r=0;r1)return n&&B(t)?t.call(s&&s.proxy):t}}function Rl(){return!!(ii()||Rt)}const xl=Symbol.for("v-scx"),wl=()=>De(xl);function Qt(e,t,n){return Io(e,t,n)}function Io(e,t,n=ee){const{immediate:s,deep:r,flush:o,once:i}=n,l=ae({},n),c=t&&s||!t&&o!=="post";let a;if(cn){if(o==="sync"){const m=wl();a=m.__watcherHandles||(m.__watcherHandles=[])}else if(!c){const m=()=>{};return m.stop=qe,m.resume=qe,m.pause=qe,m}}const f=pe;l.call=(m,C,R)=>Je(m,f,C,R);let d=!1;o==="post"?l.scheduler=m=>{xe(m,f&&f.suspense)}:o!=="sync"&&(d=!0,l.scheduler=(m,C)=>{C?m():Us(m)}),l.augmentJob=m=>{t&&(m.flags|=4),d&&(m.flags|=2,f&&(m.id=f.uid,m.i=f))};const g=yl(e,t,l);return cn&&(a?a.push(g):c&&g()),g}function Ol(e,t,n){const s=this.proxy,r=ue(e)?e.includes(".")?No(s,e):()=>s[e]:e.bind(s,s);let o;B(t)?o=t:(o=t.handler,n=t);const i=pn(this),l=Io(r,o.bind(s),n);return i(),l}function No(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;re.__isTeleport,Pl=Symbol("_leaveCb");function Bs(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Bs(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ks(e,t){return B(e)?ae({name:e.name},t,{setup:e}):e}function Do(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function rr(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const On=new WeakMap;function Yt(e,t,n,s,r=!1){if(j(e)){e.forEach((R,F)=>Yt(R,t&&(j(t)?t[F]:t),n,s,r));return}if(Xt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Yt(e,t,n,s.component.subTree);return}const o=s.shapeFlag&4?Jn(s.component):s.el,i=r?null:o,{i:l,r:c}=e,a=t&&t.r,f=l.refs===ee?l.refs={}:l.refs,d=l.setupState,g=J(d),m=d===ee?Yr:R=>rr(f,R)?!1:Y(g,R),C=(R,F)=>!(F&&rr(f,F));if(a!=null&&a!==c){if(or(t),ue(a))f[a]=null,m(a)&&(d[a]=null);else if(ie(a)){const R=t;C(a,R.k)&&(a.value=null),R.k&&(f[R.k]=null)}}if(B(c))dn(c,l,12,[i,f]);else{const R=ue(c),F=ie(c);if(R||F){const L=()=>{if(e.f){const T=R?m(c)?d[c]:f[c]:C()||!e.k?c.value:f[e.k];if(r)j(T)&&Ps(T,o);else if(j(T))T.includes(o)||T.push(o);else if(R)f[c]=[o],m(c)&&(d[c]=f[c]);else{const N=[o];C(c,e.k)&&(c.value=N),e.k&&(f[e.k]=N)}}else R?(f[c]=i,m(c)&&(d[c]=i)):F&&(C(c,e.k)&&(c.value=i),e.k&&(f[e.k]=i))};if(i){const T=()=>{L(),On.delete(e)};T.id=-1,On.set(e,T),xe(T,n)}else or(e),L()}}}function or(e){const t=On.get(e);t&&(t.flags|=8,On.delete(e))}Un().requestIdleCallback;Un().cancelIdleCallback;const Xt=e=>!!e.type.__asyncLoader,Mo=e=>e.type.__isKeepAlive;function Il(e,t){Lo(e,"a",t)}function Nl(e,t){Lo(e,"da",t)}function Lo(e,t,n=pe){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Wn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Mo(r.parent.vnode)&&Dl(s,t,n,r),r=r.parent}}function Dl(e,t,n,s){const r=Wn(t,e,s,!0);Fo(()=>{Ps(s[t],r)},n)}function Wn(e,t,n=pe,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{rt();const l=pn(n),c=Je(t,n,e,i);return l(),ot(),c});return s?r.unshift(o):r.push(o),o}}const lt=e=>(t,n=pe)=>{(!cn||e==="sp")&&Wn(e,(...s)=>t(...s),n)},Ml=lt("bm"),Vo=lt("m"),Ll=lt("bu"),Vl=lt("u"),Fl=lt("bum"),Fo=lt("um"),jl=lt("sp"),Hl=lt("rtg"),Ul=lt("rtc");function Bl(e,t=pe){Wn("ec",e,t)}const kl="components";function Kl(e,t){return Wl(kl,e,!0,t)||e}const Gl=Symbol.for("v-ndc");function Wl(e,t,n=!0,s=!1){const r=Te||pe;if(r){const o=r.type;{const l=Pc(o,!1);if(l&&(l===t||l===ye(t)||l===jn(ye(t))))return o}const i=ir(r[e]||o[e],t)||ir(r.appContext[e],t);return!i&&s?o:i}}function ir(e,t){return e&&(e[t]||e[ye(t)]||e[jn(ye(t))])}function Cf(e,t,n,s){let r;const o=n,i=j(e);if(i||ue(e)){const l=i&&st(e);let c=!1,a=!1;l&&(c=!Ie(e),a=it(e),e=Bn(e)),r=new Array(e.length);for(let f=0,d=e.length;ft(l,c,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,a=l.length;ce?li(e)?Jn(e):ms(e.parent):null,Zt=ae(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ms(e.parent),$root:e=>ms(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ho(e),$forceUpdate:e=>e.f||(e.f=()=>{Us(e.update)}),$nextTick:e=>e.n||(e.n=Gn.bind(e.proxy)),$watch:e=>Ol.bind(e)}),ss=(e,t)=>e!==ee&&!e.__isScriptSetup&&Y(e,t),ql={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:c}=e;if(t[0]!=="$"){const g=i[t];if(g!==void 0)switch(g){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(ss(s,t))return i[t]=1,s[t];if(r!==ee&&Y(r,t))return i[t]=2,r[t];if(Y(o,t))return i[t]=3,o[t];if(n!==ee&&Y(n,t))return i[t]=4,n[t];_s&&(i[t]=0)}}const a=Zt[t];let f,d;if(a)return t==="$attrs"&&de(e.attrs,"get",""),a(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==ee&&Y(n,t))return i[t]=4,n[t];if(d=c.config.globalProperties,Y(d,t))return d[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return ss(r,t)?(r[t]=n,!0):s!==ee&&Y(s,t)?(s[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,props:o,type:i}},l){let c;return!!(n[l]||e!==ee&&l[0]!=="$"&&Y(e,l)||ss(t,l)||Y(o,l)||Y(s,l)||Y(Zt,l)||Y(r.config.globalProperties,l)||(c=i.__cssModules)&&c[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function lr(e){return j(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let _s=!0;function $l(e){const t=Ho(e),n=e.proxy,s=e.ctx;_s=!1,t.beforeCreate&&cr(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:a,created:f,beforeMount:d,mounted:g,beforeUpdate:m,updated:C,activated:R,deactivated:F,beforeDestroy:L,beforeUnmount:T,destroyed:N,unmounted:S,render:U,renderTracked:le,renderTriggered:W,errorCaptured:K,serverPrefetch:G,expose:re,inheritAttrs:ge,components:Oe,directives:be,filters:gt}=t;if(a&&Jl(a,s,null),i)for(const k in i){const z=i[k];B(z)&&(s[k]=z.bind(n))}if(r){const k=r.call(n,n);Z(k)&&(e.data=hn(k))}if(_s=!0,o)for(const k in o){const z=o[k],ze=B(z)?z.bind(n,n):B(z.get)?z.get.bind(n,n):qe,ut=!B(z)&&B(z.set)?z.set.bind(n):qe,Fe=ce({get:ze,set:ut});Object.defineProperty(s,k,{enumerable:!0,configurable:!0,get:()=>Fe.value,set:Ee=>Fe.value=Ee})}if(l)for(const k in l)jo(l[k],s,n,k);if(c){const k=B(c)?c.call(n):c;Reflect.ownKeys(k).forEach(z=>{yn(z,k[z])})}f&&cr(f,e,"c");function se(k,z){j(z)?z.forEach(ze=>k(ze.bind(n))):z&&k(z.bind(n))}if(se(Ml,d),se(Vo,g),se(Ll,m),se(Vl,C),se(Il,R),se(Nl,F),se(Bl,K),se(Ul,le),se(Hl,W),se(Fl,T),se(Fo,S),se(jl,G),j(re))if(re.length){const k=e.exposed||(e.exposed={});re.forEach(z=>{Object.defineProperty(k,z,{get:()=>n[z],set:ze=>n[z]=ze,enumerable:!0})})}else e.exposed||(e.exposed={});U&&e.render===qe&&(e.render=U),ge!=null&&(e.inheritAttrs=ge),Oe&&(e.components=Oe),be&&(e.directives=be),G&&Do(e)}function Jl(e,t,n=qe){j(e)&&(e=vs(e));for(const s in e){const r=e[s];let o;Z(r)?"default"in r?o=De(r.from||s,r.default,!0):o=De(r.from||s):o=De(r),ie(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function cr(e,t,n){Je(j(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function jo(e,t,n,s){let r=s.includes(".")?No(n,s):()=>n[s];if(ue(e)){const o=t[e];B(o)&&Qt(r,o)}else if(B(e))Qt(r,e.bind(n));else if(Z(e))if(j(e))e.forEach(o=>jo(o,t,n,s));else{const o=B(e.handler)?e.handler.bind(n):t[e.handler];B(o)&&Qt(r,o,e)}}function Ho(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>Cn(c,a,i,!0)),Cn(c,t,i)),Z(t)&&o.set(t,c),c}function Cn(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&Cn(e,o,n,!0),r&&r.forEach(i=>Cn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=zl[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const zl={data:ur,props:fr,emits:fr,methods:qt,computed:qt,beforeCreate:me,created:me,beforeMount:me,mounted:me,beforeUpdate:me,updated:me,beforeDestroy:me,beforeUnmount:me,destroyed:me,unmounted:me,activated:me,deactivated:me,errorCaptured:me,serverPrefetch:me,components:qt,directives:qt,watch:Yl,provide:ur,inject:Ql};function ur(e,t){return t?e?function(){return ae(B(e)?e.call(this,this):e,B(t)?t.call(this,this):t)}:t:e}function Ql(e,t){return qt(vs(e),vs(t))}function vs(e){if(j(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ye(t)}Modifiers`]||e[`${xt(t)}Modifiers`];function tc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ee;let r=n;const o=t.startsWith("update:"),i=o&&ec(s,t.slice(7));i&&(i.trim&&(r=n.map(f=>ue(f)?f.trim():f)),i.number&&(r=n.map(Hn)));let l,c=s[l=Xn(t)]||s[l=Xn(ye(t))];!c&&o&&(c=s[l=Xn(xt(t))]),c&&Je(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Je(a,e,6,r)}}const nc=new WeakMap;function Bo(e,t,n=!1){const s=n?nc:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!B(e)){const c=a=>{const f=Bo(a,t,!0);f&&(l=!0,ae(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&s.set(e,null),null):(j(o)?o.forEach(c=>i[c]=null):ae(i,o),Z(e)&&s.set(e,i),i)}function qn(e,t){return!e||!Mn(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,xt(t))||Y(e,t))}function ar(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:c,render:a,renderCache:f,props:d,data:g,setupState:m,ctx:C,inheritAttrs:R}=e,F=wn(e);let L,T;try{if(n.shapeFlag&4){const S=r||s,U=S;L=Ge(a.call(U,S,f,d,m,g,C)),T=l}else{const S=t;L=Ge(S.length>1?S(d,{attrs:l,slots:i,emit:c}):S(d,null)),T=t.props?l:sc(l)}}catch(S){en.length=0,Kn(S,e,1),L=we(pt)}let N=L;if(T&&R!==!1){const S=Object.keys(T),{shapeFlag:U}=N;S.length&&U&7&&(o&&S.some(Ts)&&(T=rc(T,o)),N=jt(N,T,!1,!0))}return n.dirs&&(N=jt(N,null,!1,!0),N.dirs=N.dirs?N.dirs.concat(n.dirs):n.dirs),n.transition&&Bs(N,n.transition),L=N,wn(F),L}const sc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Mn(n))&&((t||(t={}))[n]=e[n]);return t},rc=(e,t)=>{const n={};for(const s in e)(!Ts(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function oc(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?hr(s,i,a):!!i;if(c&8){const f=t.dynamicProps;for(let d=0;dObject.create(Ko),Wo=e=>Object.getPrototypeOf(e)===Ko;function lc(e,t,n,s=!1){const r={},o=Go();e.propsDefaults=Object.create(null),qo(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:Ao(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function cc(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=J(r),[c]=e.propsOptions;let a=!1;if((s||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let d=0;d{c=!0;const[g,m]=$o(d,t,!0);ae(i,g),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Z(e)&&s.set(e,Dt),Dt;if(j(o))for(let f=0;fe==="_"||e==="_ctx"||e==="$stable",Gs=e=>j(e)?e.map(Ge):[Ge(e)],fc=(e,t,n)=>{if(t._n)return t;const s=Al((...r)=>Gs(t(...r)),n);return s._c=!1,s},Jo=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Ks(r))continue;const o=e[r];if(B(o))t[r]=fc(r,o,s);else if(o!=null){const i=Gs(o);t[r]=()=>i}}},zo=(e,t)=>{const n=Gs(t);e.slots.default=()=>n},Qo=(e,t,n)=>{for(const s in t)(n||!Ks(s))&&(e[s]=t[s])},ac=(e,t,n)=>{const s=e.slots=Go();if(e.vnode.shapeFlag&32){const r=t._;r?(Qo(s,t,n),n&&to(s,"_",r,!0)):Jo(t,s)}else t&&zo(e,t)},hc=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=ee;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:Qo(r,t,n):(o=!t.$stable,Jo(t,r)),i=t}else t&&(zo(e,t),i={default:1});if(o)for(const l in r)!Ks(l)&&i[l]==null&&delete r[l]},xe=_c;function dc(e){return pc(e)}function pc(e,t){const n=Un();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:f,parentNode:d,nextSibling:g,setScopeId:m=qe,insertStaticContent:C}=e,R=(u,h,p,_=null,b=null,v=null,w=void 0,x=null,A=!!h.dynamicChildren)=>{if(u===h)return;u&&!Kt(u,h)&&(_=y(u),Ee(u,b,v,!0),u=null),h.patchFlag===-2&&(A=!1,h.dynamicChildren=null);const{type:E,ref:V,shapeFlag:P}=h;switch(E){case $n:F(u,h,p,_);break;case pt:L(u,h,p,_);break;case bn:u==null&&T(h,p,_,w);break;case Ze:Oe(u,h,p,_,b,v,w,x,A);break;default:P&1?U(u,h,p,_,b,v,w,x,A):P&6?be(u,h,p,_,b,v,w,x,A):(P&64||P&128)&&E.process(u,h,p,_,b,v,w,x,A,D)}V!=null&&b?Yt(V,u&&u.ref,v,h||u,!h):V==null&&u&&u.ref!=null&&Yt(u.ref,null,v,u,!0)},F=(u,h,p,_)=>{if(u==null)s(h.el=l(h.children),p,_);else{const b=h.el=u.el;h.children!==u.children&&a(b,h.children)}},L=(u,h,p,_)=>{u==null?s(h.el=c(h.children||""),p,_):h.el=u.el},T=(u,h,p,_)=>{[u.el,u.anchor]=C(u.children,h,p,_,u.el,u.anchor)},N=({el:u,anchor:h},p,_)=>{let b;for(;u&&u!==h;)b=g(u),s(u,p,_),u=b;s(h,p,_)},S=({el:u,anchor:h})=>{let p;for(;u&&u!==h;)p=g(u),r(u),u=p;r(h)},U=(u,h,p,_,b,v,w,x,A)=>{if(h.type==="svg"?w="svg":h.type==="math"&&(w="mathml"),u==null)le(h,p,_,b,v,w,x,A);else{const E=u.el&&u.el._isVueCE?u.el:null;try{E&&E._beginPatch(),G(u,h,b,v,w,x,A)}finally{E&&E._endPatch()}}},le=(u,h,p,_,b,v,w,x)=>{let A,E;const{props:V,shapeFlag:P,transition:M,dirs:H}=u;if(A=u.el=i(u.type,v,V&&V.is,V),P&8?f(A,u.children):P&16&&K(u.children,A,null,_,b,rs(u,v),w,x),H&&_t(u,null,_,"created"),W(A,u,u.scopeId,w,_),V){for(const te in V)te!=="value"&&!$t(te)&&o(A,te,null,V[te],v,_);"value"in V&&o(A,"value",null,V.value,v),(E=V.onVnodeBeforeMount)&&Be(E,_,u)}H&&_t(u,null,_,"beforeMount");const $=gc(b,M);$&&M.beforeEnter(A),s(A,h,p),((E=V&&V.onVnodeMounted)||$||H)&&xe(()=>{E&&Be(E,_,u),$&&M.enter(A),H&&_t(u,null,_,"mounted")},b)},W=(u,h,p,_,b)=>{if(p&&m(u,p),_)for(let v=0;v<_.length;v++)m(u,_[v]);if(b){let v=b.subTree;if(h===v||ei(v.type)&&(v.ssContent===h||v.ssFallback===h)){const w=b.vnode;W(u,w,w.scopeId,w.slotScopeIds,b.parent)}}},K=(u,h,p,_,b,v,w,x,A=0)=>{for(let E=A;E{const x=h.el=u.el;let{patchFlag:A,dynamicChildren:E,dirs:V}=h;A|=u.patchFlag&16;const P=u.props||ee,M=h.props||ee;let H;if(p&&vt(p,!1),(H=M.onVnodeBeforeUpdate)&&Be(H,p,h,u),V&&_t(h,u,p,"beforeUpdate"),p&&vt(p,!0),(P.innerHTML&&M.innerHTML==null||P.textContent&&M.textContent==null)&&f(x,""),E?re(u.dynamicChildren,E,x,p,_,rs(h,b),v):w||z(u,h,x,null,p,_,rs(h,b),v,!1),A>0){if(A&16)ge(x,P,M,p,b);else if(A&2&&P.class!==M.class&&o(x,"class",null,M.class,b),A&4&&o(x,"style",P.style,M.style,b),A&8){const $=h.dynamicProps;for(let te=0;te<$.length;te++){const X=$[te],Se=P[X],Ae=M[X];(Ae!==Se||X==="value")&&o(x,X,Se,Ae,b,p)}}A&1&&u.children!==h.children&&f(x,h.children)}else!w&&E==null&&ge(x,P,M,p,b);((H=M.onVnodeUpdated)||V)&&xe(()=>{H&&Be(H,p,h,u),V&&_t(h,u,p,"updated")},_)},re=(u,h,p,_,b,v,w)=>{for(let x=0;x{if(h!==p){if(h!==ee)for(const v in h)!$t(v)&&!(v in p)&&o(u,v,h[v],null,b,_);for(const v in p){if($t(v))continue;const w=p[v],x=h[v];w!==x&&v!=="value"&&o(u,v,x,w,b,_)}"value"in p&&o(u,"value",h.value,p.value,b)}},Oe=(u,h,p,_,b,v,w,x,A)=>{const E=h.el=u?u.el:l(""),V=h.anchor=u?u.anchor:l("");let{patchFlag:P,dynamicChildren:M,slotScopeIds:H}=h;H&&(x=x?x.concat(H):H),u==null?(s(E,p,_),s(V,p,_),K(h.children||[],p,V,b,v,w,x,A)):P>0&&P&64&&M&&u.dynamicChildren&&u.dynamicChildren.length===M.length?(re(u.dynamicChildren,M,p,b,v,w,x),(h.key!=null||b&&h===b.subTree)&&Yo(u,h,!0)):z(u,h,p,V,b,v,w,x,A)},be=(u,h,p,_,b,v,w,x,A)=>{h.slotScopeIds=x,u==null?h.shapeFlag&512?b.ctx.activate(h,p,_,w,A):gt(h,p,_,b,v,w,A):ct(u,h,A)},gt=(u,h,p,_,b,v,w)=>{const x=u.component=xc(u,_,b);if(Mo(u)&&(x.ctx.renderer=D),wc(x,!1,w),x.asyncDep){if(b&&b.registerDep(x,se,w),!u.el){const A=x.subTree=we(pt);L(null,A,h,p),u.placeholder=A.el}}else se(x,u,h,p,b,v,w)},ct=(u,h,p)=>{const _=h.component=u.component;if(oc(u,h,p))if(_.asyncDep&&!_.asyncResolved){k(_,h,p);return}else _.next=h,_.update();else h.el=u.el,_.vnode=h},se=(u,h,p,_,b,v,w)=>{const x=()=>{if(u.isMounted){let{next:P,bu:M,u:H,parent:$,vnode:te}=u;{const He=Xo(u);if(He){P&&(P.el=te.el,k(u,P,w)),He.asyncDep.then(()=>{xe(()=>{u.isUnmounted||E()},b)});return}}let X=P,Se;vt(u,!1),P?(P.el=te.el,k(u,P,w)):P=te,M&&vn(M),(Se=P.props&&P.props.onVnodeBeforeUpdate)&&Be(Se,$,P,te),vt(u,!0);const Ae=ar(u),je=u.subTree;u.subTree=Ae,R(je,Ae,d(je.el),y(je),u,b,v),P.el=Ae.el,X===null&&ic(u,Ae.el),H&&xe(H,b),(Se=P.props&&P.props.onVnodeUpdated)&&xe(()=>Be(Se,$,P,te),b)}else{let P;const{el:M,props:H}=h,{bm:$,m:te,parent:X,root:Se,type:Ae}=u,je=Xt(h);vt(u,!1),$&&vn($),!je&&(P=H&&H.onVnodeBeforeMount)&&Be(P,X,h),vt(u,!0);{Se.ce&&Se.ce._hasShadowRoot()&&Se.ce._injectChildStyle(Ae,u.parent?u.parent.type:void 0);const He=u.subTree=ar(u);R(null,He,p,_,u,b,v),h.el=He.el}if(te&&xe(te,b),!je&&(P=H&&H.onVnodeMounted)){const He=h;xe(()=>Be(P,X,He),b)}(h.shapeFlag&256||X&&Xt(X.vnode)&&X.vnode.shapeFlag&256)&&u.a&&xe(u.a,b),u.isMounted=!0,h=p=_=null}};u.scope.on();const A=u.effect=new co(x);u.scope.off();const E=u.update=A.run.bind(A),V=u.job=A.runIfDirty.bind(A);V.i=u,V.id=u.uid,A.scheduler=()=>Us(V),vt(u,!0),E()},k=(u,h,p)=>{h.component=u;const _=u.vnode.props;u.vnode=h,u.next=null,cc(u,h.props,_,p),hc(u,h.children,p),rt(),sr(u),ot()},z=(u,h,p,_,b,v,w,x,A=!1)=>{const E=u&&u.children,V=u?u.shapeFlag:0,P=h.children,{patchFlag:M,shapeFlag:H}=h;if(M>0){if(M&128){ut(E,P,p,_,b,v,w,x,A);return}else if(M&256){ze(E,P,p,_,b,v,w,x,A);return}}H&8?(V&16&&Ne(E,b,v),P!==E&&f(p,P)):V&16?H&16?ut(E,P,p,_,b,v,w,x,A):Ne(E,b,v,!0):(V&8&&f(p,""),H&16&&K(P,p,_,b,v,w,x,A))},ze=(u,h,p,_,b,v,w,x,A)=>{u=u||Dt,h=h||Dt;const E=u.length,V=h.length,P=Math.min(E,V);let M;for(M=0;MV?Ne(u,b,v,!0,!1,P):K(h,p,_,b,v,w,x,A,P)},ut=(u,h,p,_,b,v,w,x,A)=>{let E=0;const V=h.length;let P=u.length-1,M=V-1;for(;E<=P&&E<=M;){const H=u[E],$=h[E]=A?et(h[E]):Ge(h[E]);if(Kt(H,$))R(H,$,p,null,b,v,w,x,A);else break;E++}for(;E<=P&&E<=M;){const H=u[P],$=h[M]=A?et(h[M]):Ge(h[M]);if(Kt(H,$))R(H,$,p,null,b,v,w,x,A);else break;P--,M--}if(E>P){if(E<=M){const H=M+1,$=HM)for(;E<=P;)Ee(u[E],b,v,!0),E++;else{const H=E,$=E,te=new Map;for(E=$;E<=M;E++){const Ce=h[E]=A?et(h[E]):Ge(h[E]);Ce.key!=null&&te.set(Ce.key,E)}let X,Se=0;const Ae=M-$+1;let je=!1,He=0;const Bt=new Array(Ae);for(E=0;E=Ae){Ee(Ce,b,v,!0);continue}let Ue;if(Ce.key!=null)Ue=te.get(Ce.key);else for(X=$;X<=M;X++)if(Bt[X-$]===0&&Kt(Ce,h[X])){Ue=X;break}Ue===void 0?Ee(Ce,b,v,!0):(Bt[Ue-$]=E+1,Ue>=He?He=Ue:je=!0,R(Ce,h[Ue],p,null,b,v,w,x,A),Se++)}const zs=je?mc(Bt):Dt;for(X=zs.length-1,E=Ae-1;E>=0;E--){const Ce=$+E,Ue=h[Ce],Qs=h[Ce+1],Ys=Ce+1{const{el:v,type:w,transition:x,children:A,shapeFlag:E}=u;if(E&6){Fe(u.component.subTree,h,p,_);return}if(E&128){u.suspense.move(h,p,_);return}if(E&64){w.move(u,h,p,D);return}if(w===Ze){s(v,h,p);for(let P=0;Px.enter(v),b);else{const{leave:P,delayLeave:M,afterLeave:H}=x,$=()=>{u.ctx.isUnmounted?r(v):s(v,h,p)},te=()=>{v._isLeaving&&v[Pl](!0),P(v,()=>{$(),H&&H()})};M?M(v,$,te):te()}else s(v,h,p)},Ee=(u,h,p,_=!1,b=!1)=>{const{type:v,props:w,ref:x,children:A,dynamicChildren:E,shapeFlag:V,patchFlag:P,dirs:M,cacheIndex:H}=u;if(P===-2&&(b=!1),x!=null&&(rt(),Yt(x,null,p,u,!0),ot()),H!=null&&(h.renderCache[H]=void 0),V&256){h.ctx.deactivate(u);return}const $=V&1&&M,te=!Xt(u);let X;if(te&&(X=w&&w.onVnodeBeforeUnmount)&&Be(X,h,u),V&6)mt(u.component,p,_);else{if(V&128){u.suspense.unmount(p,_);return}$&&_t(u,null,h,"beforeUnmount"),V&64?u.type.remove(u,h,p,D,_):E&&!E.hasOnce&&(v!==Ze||P>0&&P&64)?Ne(E,h,p,!1,!0):(v===Ze&&P&384||!b&&V&16)&&Ne(A,h,p),_&&wt(u)}(te&&(X=w&&w.onVnodeUnmounted)||$)&&xe(()=>{X&&Be(X,h,u),$&&_t(u,null,h,"unmounted")},p)},wt=u=>{const{type:h,el:p,anchor:_,transition:b}=u;if(h===Ze){Ot(p,_);return}if(h===bn){S(u);return}const v=()=>{r(p),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(u.shapeFlag&1&&b&&!b.persisted){const{leave:w,delayLeave:x}=b,A=()=>w(p,v);x?x(u.el,v,A):A()}else v()},Ot=(u,h)=>{let p;for(;u!==h;)p=g(u),r(u),u=p;r(h)},mt=(u,h,p)=>{const{bum:_,scope:b,job:v,subTree:w,um:x,m:A,a:E}=u;pr(A),pr(E),_&&vn(_),b.stop(),v&&(v.flags|=8,Ee(w,u,h,p)),x&&xe(x,h),xe(()=>{u.isUnmounted=!0},h)},Ne=(u,h,p,_=!1,b=!1,v=0)=>{for(let w=v;w{if(u.shapeFlag&6)return y(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const h=g(u.anchor||u.el),p=h&&h[Cl];return p?g(p):h};let I=!1;const O=(u,h,p)=>{let _;u==null?h._vnode&&(Ee(h._vnode,null,null,!0),_=h._vnode.component):R(h._vnode||null,u,h,null,null,null,p),h._vnode=u,I||(I=!0,sr(_),Co(),I=!1)},D={p:R,um:Ee,m:Fe,r:wt,mt:gt,mc:K,pc:z,pbc:re,n:y,o:e};return{render:O,hydrate:void 0,createApp:Zl(O)}}function rs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function vt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function gc(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Yo(e,t,n=!1){const s=e.children,r=t.children;if(j(s)&&j(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Xo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Xo(t)}function pr(e){if(e)for(let t=0;te.__isSuspense;function _c(e,t){t&&t.pendingBranch?j(e)?t.effects.push(...e):t.effects.push(e):Sl(e)}const Ze=Symbol.for("v-fgt"),$n=Symbol.for("v-txt"),pt=Symbol.for("v-cmt"),bn=Symbol.for("v-stc"),en=[];let Pe=null;function ti(e=!1){en.push(Pe=e?null:[])}function vc(){en.pop(),Pe=en[en.length-1]||null}let ln=1;function Tn(e,t=!1){ln+=e,e<0&&Pe&&t&&(Pe.hasOnce=!0)}function ni(e){return e.dynamicChildren=ln>0?Pe||Dt:null,vc(),ln>0&&Pe&&Pe.push(e),e}function Tf(e,t,n,s,r,o){return ni(oi(e,t,n,s,r,o,!0))}function si(e,t,n,s,r){return ni(we(e,t,n,s,r,!0))}function Pn(e){return e?e.__v_isVNode===!0:!1}function Kt(e,t){return e.type===t.type&&e.key===t.key}const ri=({key:e})=>e??null,En=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ue(e)||ie(e)||B(e)?{i:Te,r:e,k:t,f:!!n}:e:null);function oi(e,t=null,n=null,s=0,r=null,o=e===Ze?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ri(t),ref:t&&En(t),scopeId:Po,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Te};return l?(Ws(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ue(n)?8:16),ln>0&&!i&&Pe&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Pe.push(c),c}const we=yc;function yc(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===Gl)&&(e=pt),Pn(e)){const l=jt(e,t,!0);return n&&Ws(l,n),ln>0&&!o&&Pe&&(l.shapeFlag&6?Pe[Pe.indexOf(e)]=l:Pe.push(l)),l.patchFlag=-2,l}if(Ic(e)&&(e=e.__vccOpts),t){t=bc(t);let{class:l,style:c}=t;l&&!ue(l)&&(t.class=Ns(l)),Z(c)&&(kn(c)&&!j(c)&&(c=ae({},c)),t.style=Is(c))}const i=ue(e)?1:ei(e)?128:Tl(e)?64:Z(e)?4:B(e)?2:0;return oi(e,t,n,s,r,i,o,!0)}function bc(e){return e?kn(e)||Wo(e)?ae({},e):e:null}function jt(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:c}=e,a=t?Sc(r||{},t):r,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&ri(a),ref:t&&t.ref?n&&o?j(o)?o.concat(En(t)):[o,En(t)]:En(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ze?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&jt(e.ssContent),ssFallback:e.ssFallback&&jt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Bs(f,c.clone(f)),f}function Ec(e=" ",t=0){return we($n,null,e,t)}function Pf(e,t){const n=we(bn,null,e);return n.staticCount=t,n}function If(e="",t=!1){return t?(ti(),si(pt,null,e)):we(pt,null,e)}function Ge(e){return e==null||typeof e=="boolean"?we(pt):j(e)?we(Ze,null,e.slice()):Pn(e)?et(e):we($n,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:jt(e)}function Ws(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(j(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Ws(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Wo(t)?t._ctx=Te:r===3&&Te&&(Te.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else B(t)?(t={default:t,_ctx:Te},n=32):(t=String(t),s&64?(n=16,t=[Ec(t)]):n=8);e.children=t,e.shapeFlag|=n}function Sc(...e){const t={};for(let n=0;npe||Te;let In,bs;{const e=Un(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};In=t("__VUE_INSTANCE_SETTERS__",n=>pe=n),bs=t("__VUE_SSR_SETTERS__",n=>cn=n)}const pn=e=>{const t=pe;return In(e),e.scope.on(),()=>{e.scope.off(),In(t)}},gr=()=>{pe&&pe.scope.off(),In(null)};function li(e){return e.vnode.shapeFlag&4}let cn=!1;function wc(e,t=!1,n=!1){t&&bs(t);const{props:s,children:r}=e.vnode,o=li(e);lc(e,s,o,t),ac(e,r,n||t);const i=o?Oc(e,t):void 0;return t&&bs(!1),i}function Oc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,ql);const{setup:s}=n;if(s){rt();const r=e.setupContext=s.length>1?Tc(e):null,o=pn(e),i=dn(s,e,0,[e.props,r]),l=Xr(i);if(ot(),o(),(l||e.sp)&&!Xt(e)&&Do(e),l){if(i.then(gr,gr),t)return i.then(c=>{mr(e,c)}).catch(c=>{Kn(c,e,0)});e.asyncDep=i}else mr(e,i)}else ci(e)}function mr(e,t,n){B(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=xo(t)),ci(e)}function ci(e,t,n){const s=e.type;e.render||(e.render=s.render||qe);{const r=pn(e);rt();try{$l(e)}finally{ot(),r()}}}const Cc={get(e,t){return de(e,"get",""),e[t]}};function Tc(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Cc),slots:e.slots,emit:e.emit,expose:t}}function Jn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(xo(Hs(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Zt)return Zt[n](e)},has(t,n){return n in t||n in Zt}})):e.proxy}function Pc(e,t=!0){return B(e)?e.displayName||e.name:e.name||t&&e.__name}function Ic(e){return B(e)&&"__vccOpts"in e}const ce=(e,t)=>_l(e,t,cn);function ui(e,t,n){try{Tn(-1);const s=arguments.length;return s===2?Z(t)&&!j(t)?Pn(t)?we(e,null,[t]):we(e,t):we(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Pn(n)&&(n=[n]),we(e,t,n))}finally{Tn(1)}}const Nc="3.5.30";/** -* @vue/runtime-dom v3.5.30 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Es;const _r=typeof window<"u"&&window.trustedTypes;if(_r)try{Es=_r.createPolicy("vue",{createHTML:e=>e})}catch{}const fi=Es?e=>Es.createHTML(e):e=>e,Dc="http://www.w3.org/2000/svg",Mc="http://www.w3.org/1998/Math/MathML",Xe=typeof document<"u"?document:null,vr=Xe&&Xe.createElement("template"),Lc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Xe.createElementNS(Dc,e):t==="mathml"?Xe.createElementNS(Mc,e):n?Xe.createElement(e,{is:n}):Xe.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Xe.createTextNode(e),createComment:e=>Xe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Xe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{vr.innerHTML=fi(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=vr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Vc=Symbol("_vtc");function Fc(e,t,n){const s=e[Vc];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const yr=Symbol("_vod"),jc=Symbol("_vsh"),Hc=Symbol(""),Uc=/(?:^|;)\s*display\s*:/;function Bc(e,t,n){const s=e.style,r=ue(n);let o=!1;if(n&&!r){if(t)if(ue(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&Sn(s,l,"")}else for(const i in t)n[i]==null&&Sn(s,i,"");for(const i in n)i==="display"&&(o=!0),Sn(s,i,n[i])}else if(r){if(t!==n){const i=s[Hc];i&&(n+=";"+i),s.cssText=n,o=Uc.test(n)}}else t&&e.removeAttribute("style");yr in e&&(e[yr]=o?s.display:"",e[jc]&&(s.display="none"))}const br=/\s*!important$/;function Sn(e,t,n){if(j(n))n.forEach(s=>Sn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=kc(e,t);br.test(n)?e.setProperty(xt(s),n.replace(br,""),"important"):e[s]=n}}const Er=["Webkit","Moz","ms"],os={};function kc(e,t){const n=os[t];if(n)return n;let s=ye(t);if(s!=="filter"&&s in e)return os[t]=s;s=jn(s);for(let r=0;ris||(qc.then(()=>is=0),is=Date.now());function Jc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Je(zc(s,n.value),t,5,[s])};return n.value=e,n.attached=$c(),n}function zc(e,t){if(j(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Or=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Qc=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?Fc(e,s,i):t==="style"?Bc(e,n,s):Mn(t)?Ts(t)||Gc(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Yc(e,t,s,i))?(Rr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ar(e,t,s,i,o,t!=="value")):e._isVueCE&&(Xc(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!ue(s)))?Rr(e,ye(t),s,o,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Ar(e,t,s,i))};function Yc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Or(t)&&B(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Or(t)&&ue(n)?!1:t in e}function Xc(e,t){const n=e._def.props;if(!n)return!1;const s=ye(t);return Array.isArray(n)?n.some(r=>ye(r)===s):Object.keys(n).some(r=>ye(r)===s)}const Nn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return j(t)?n=>vn(t,n):t};function Zc(e){e.target.composing=!0}function Cr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Vt=Symbol("_assign");function Tr(e,t,n){return t&&(e=e.trim()),n&&(e=Hn(e)),e}const Nf={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[Vt]=Nn(r);const o=s||r.props&&r.props.type==="number";bt(e,t?"change":"input",i=>{i.target.composing||e[Vt](Tr(e.value,n,o))}),(n||o)&&bt(e,"change",()=>{e.value=Tr(e.value,n,o)}),t||(bt(e,"compositionstart",Zc),bt(e,"compositionend",Cr),bt(e,"change",Cr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:o}},i){if(e[Vt]=Nn(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?Hn(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},Df={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=Ln(t);bt(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?Hn(Dn(i)):Dn(i));e[Vt](e.multiple?r?new Set(o):o:o[0]),e._assigning=!0,Gn(()=>{e._assigning=!1})}),e[Vt]=Nn(s)},mounted(e,{value:t}){Pr(e,t)},beforeUpdate(e,t,n){e[Vt]=Nn(n)},updated(e,{value:t}){e._assigning||Pr(e,t)}};function Pr(e,t){const n=e.multiple,s=j(t);if(!(n&&!s&&!Ln(t))){for(let r=0,o=e.options.length;rString(a)===String(l)):i.selected=ki(t,l)>-1}else i.selected=t.has(l);else if(an(Dn(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Dn(e){return"_value"in e?e._value:e.value}const eu=["ctrl","shift","alt","meta"],tu={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>eu.some(n=>e[`${n}Key`]&&!t.includes(n))},Mf=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...o)=>{for(let i=0;i{const t=su().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=iu(s);if(!r)return;const o=t._component;!B(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=n(r,!1,ou(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t};function ou(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function iu(e){return ue(e)?document.querySelector(e):e}/*! - * pinia v2.3.1 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */let ai;const zn=e=>ai=e,hi=Symbol();function Ss(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var tn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(tn||(tn={}));function lu(){const e=io(!0),t=e.run(()=>Nt({}));let n=[],s=[];const r=Hs({install(o){zn(r),r._a=o,o.provide(hi,r),o.config.globalProperties.$pinia=r,s.forEach(i=>n.push(i)),s=[]},use(o){return this._a?n.push(o):s.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const di=()=>{};function Nr(e,t,n,s=di){e.push(t);const r=()=>{const o=e.indexOf(t);o>-1&&(e.splice(o,1),s())};return!n&&lo()&&Gi(r),r}function Tt(e,...t){e.slice().forEach(n=>{n(...t)})}const cu=e=>e(),Dr=Symbol(),ls=Symbol();function As(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,s)=>e.set(s,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const s=t[n],r=e[n];Ss(r)&&Ss(s)&&e.hasOwnProperty(n)&&!ie(s)&&!st(s)?e[n]=As(r,s):e[n]=s}return e}const uu=Symbol();function fu(e){return!Ss(e)||!e.hasOwnProperty(uu)}const{assign:at}=Object;function au(e){return!!(ie(e)&&e.effect)}function hu(e,t,n,s){const{state:r,actions:o,getters:i}=t,l=n.state.value[e];let c;function a(){l||(n.state.value[e]=r?r():{});const f=dl(n.state.value[e]);return at(f,o,Object.keys(i||{}).reduce((d,g)=>(d[g]=Hs(ce(()=>{zn(n);const m=n._s.get(e);return i[g].call(m,m)})),d),{}))}return c=pi(e,a,t,n,s,!0),c}function pi(e,t,n={},s,r,o){let i;const l=at({actions:{}},n),c={deep:!0};let a,f,d=[],g=[],m;const C=s.state.value[e];!o&&!C&&(s.state.value[e]={});let R;function F(K){let G;a=f=!1,typeof K=="function"?(K(s.state.value[e]),G={type:tn.patchFunction,storeId:e,events:m}):(As(s.state.value[e],K),G={type:tn.patchObject,payload:K,storeId:e,events:m});const re=R=Symbol();Gn().then(()=>{R===re&&(a=!0)}),f=!0,Tt(d,G,s.state.value[e])}const L=o?function(){const{state:G}=n,re=G?G():{};this.$patch(ge=>{at(ge,re)})}:di;function T(){i.stop(),d=[],g=[],s._s.delete(e)}const N=(K,G="")=>{if(Dr in K)return K[ls]=G,K;const re=function(){zn(s);const ge=Array.from(arguments),Oe=[],be=[];function gt(k){Oe.push(k)}function ct(k){be.push(k)}Tt(g,{args:ge,name:re[ls],store:U,after:gt,onError:ct});let se;try{se=K.apply(this&&this.$id===e?this:U,ge)}catch(k){throw Tt(be,k),k}return se instanceof Promise?se.then(k=>(Tt(Oe,k),k)).catch(k=>(Tt(be,k),Promise.reject(k))):(Tt(Oe,se),se)};return re[Dr]=!0,re[ls]=G,re},S={_p:s,$id:e,$onAction:Nr.bind(null,g),$patch:F,$reset:L,$subscribe(K,G={}){const re=Nr(d,K,G.detached,()=>ge()),ge=i.run(()=>Qt(()=>s.state.value[e],Oe=>{(G.flush==="sync"?f:a)&&K({storeId:e,type:tn.direct,events:m},Oe)},at({},c,G)));return re},$dispose:T},U=hn(S);s._s.set(e,U);const W=(s._a&&s._a.runWithContext||cu)(()=>s._e.run(()=>(i=io()).run(()=>t({action:N}))));for(const K in W){const G=W[K];if(ie(G)&&!au(G)||st(G))o||(C&&fu(G)&&(ie(G)?G.value=C[K]:As(G,C[K])),s.state.value[e][K]=G);else if(typeof G=="function"){const re=N(G,K);W[K]=re,l.actions[K]=G}}return at(U,W),at(J(U),W),Object.defineProperty(U,"$state",{get:()=>s.state.value[e],set:K=>{F(G=>{at(G,K)})}}),s._p.forEach(K=>{at(U,i.run(()=>K({store:U,app:s._a,pinia:s,options:l})))}),C&&o&&n.hydrate&&n.hydrate(U.$state,C),a=!0,f=!0,U}/*! #__NO_SIDE_EFFECTS__ */function du(e,t,n){let s,r;const o=typeof t=="function";s=e,r=o?n:t;function i(l,c){const a=Rl();return l=l||(a?De(hi,null):null),l&&zn(l),l=ai,l._s.has(s)||(o?pi(s,t,r,l):hu(s,r,l)),l._s.get(s)}return i.$id=s,i}const pu="/api";class gu{constructor(t){Xs(this,"baseUrl");this.baseUrl=t}getToken(){return localStorage.getItem("accessToken")}async request(t,n,s){const r={"Content-Type":"application/json"},o=this.getToken();o&&(r.Authorization=`Bearer ${o}`);const i={method:t,headers:r};s&&(i.body=JSON.stringify(s));const l=await fetch(`${this.baseUrl}${n}`,i);if(l.status===401&&await this.tryRefreshToken()){r.Authorization=`Bearer ${this.getToken()}`;const f=await fetch(`${this.baseUrl}${n}`,{...i,headers:r});return{data:await f.json(),status:f.status}}const c=await l.json();if(!l.ok)throw new Error(c.error||"Request failed");return{data:c,status:l.status}}async tryRefreshToken(){const t=localStorage.getItem("refreshToken");if(!t)return!1;try{const n=await fetch(`${this.baseUrl}/auth/refresh`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:t})});if(!n.ok)return!1;const s=await n.json();return localStorage.setItem("accessToken",s.accessToken),!0}catch{return!1}}get(t){return this.request("GET",t)}post(t,n){return this.request("POST",t,n)}put(t,n){return this.request("PUT",t,n)}delete(t){return this.request("DELETE",t)}}const Gt=new gu(pu),gi=du("auth",()=>{const e=Nt(null),t=Nt(localStorage.getItem("accessToken")),n=Nt(localStorage.getItem("refreshToken")),s=Nt(localStorage.getItem("orgSlug")||""),r=ce(()=>!!e.value&&!!t.value),o=ce(()=>!!t.value),i=ce(()=>{var S;return((S=e.value)==null?void 0:S.role)==="chef"}),l=ce(()=>{var S;return((S=e.value)==null?void 0:S.role)==="disponent"}),c=ce(()=>{var S;return((S=e.value)==null?void 0:S.role)==="mitarbeiter"}),a=ce(()=>i.value||l.value),f=ce(()=>i.value||l.value),d=ce(()=>e.value?`${e.value.first_name} ${e.value.last_name}`:"");function g(S,U){t.value=S,n.value=U,localStorage.setItem("accessToken",S),localStorage.setItem("refreshToken",U)}function m(S){s.value=S,localStorage.setItem("orgSlug",S)}function C(){e.value=null,t.value=null,n.value=null,localStorage.removeItem("accessToken"),localStorage.removeItem("refreshToken")}async function R(S,U,le){const W=await Gt.post("/auth/login",{email:S,password:U,org_slug:le});return g(W.data.accessToken,W.data.refreshToken),m(le),e.value=W.data.user,W.data}async function F(S){return(await Gt.post("/auth/register",S)).data}async function L(){try{await Gt.post("/auth/logout")}catch{}C()}async function T(){try{const S=await Gt.get("/auth/me");e.value=S.data.user}catch{C()}}async function N(){if(!n.value)throw new Error("No refresh token");const S=await Gt.post("/auth/refresh",{refreshToken:n.value});return t.value=S.data.accessToken,localStorage.setItem("accessToken",S.data.accessToken),S.data.accessToken}return{user:e,accessToken:t,refreshToken:n,orgSlug:s,isAuthenticated:r,hasStoredToken:o,isChef:i,isDisponent:l,isMitarbeiter:c,canManageUsers:a,canManageOrders:f,fullName:d,login:R,register:F,logout:L,fetchCurrentUser:T,refreshAccessToken:N,setOrgSlug:m}}),mu=ks({__name:"App",setup(e){const t=gi();return Vo(async()=>{t.hasStoredToken&&await t.fetchCurrentUser()}),(n,s)=>{const r=Kl("router-view");return ti(),si(r)}}}),_u="modulepreload",vu=function(e){return"/"+e},Mr={},Re=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),l=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=vu(c),c in Mr)return;Mr[c]=!0;const a=c.endsWith(".css"),f=a?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${f}`))return;const d=document.createElement("link");if(d.rel=a?"stylesheet":_u,a||(d.as="script"),d.crossOrigin="",d.href=c,l&&d.setAttribute("nonce",l),document.head.appendChild(d),a)return new Promise((g,m)=>{d.addEventListener("load",g),d.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${c}`)))})}))}function o(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return r.then(i=>{for(const l of i||[])l.status==="rejected"&&o(l.reason);return t().catch(o)})};/*! - * vue-router v4.6.4 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */const It=typeof document<"u";function mi(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function yu(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&mi(e.default)}const Q=Object.assign;function cs(e,t){const n={};for(const s in t){const r=t[s];n[s]=Ve(r)?r.map(e):e(r)}return n}const nn=()=>{},Ve=Array.isArray;function Lr(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const _i=/#/g,bu=/&/g,Eu=/\//g,Su=/=/g,Au=/\?/g,vi=/\+/g,Ru=/%5B/g,xu=/%5D/g,yi=/%5E/g,wu=/%60/g,bi=/%7B/g,Ou=/%7C/g,Ei=/%7D/g,Cu=/%20/g;function qs(e){return e==null?"":encodeURI(""+e).replace(Ou,"|").replace(Ru,"[").replace(xu,"]")}function Tu(e){return qs(e).replace(bi,"{").replace(Ei,"}").replace(yi,"^")}function Rs(e){return qs(e).replace(vi,"%2B").replace(Cu,"+").replace(_i,"%23").replace(bu,"%26").replace(wu,"`").replace(bi,"{").replace(Ei,"}").replace(yi,"^")}function Pu(e){return Rs(e).replace(Su,"%3D")}function Iu(e){return qs(e).replace(_i,"%23").replace(Au,"%3F")}function Nu(e){return Iu(e).replace(Eu,"%2F")}function un(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const Du=/\/$/,Mu=e=>e.replace(Du,"");function us(e,t,n="/"){let s,r={},o="",i="";const l=t.indexOf("#");let c=t.indexOf("?");return c=l>=0&&c>l?-1:c,c>=0&&(s=t.slice(0,c),o=t.slice(c,l>0?l:t.length),r=e(o.slice(1))),l>=0&&(s=s||t.slice(0,l),i=t.slice(l,t.length)),s=ju(s??t,n),{fullPath:s+o+i,path:s,query:r,hash:un(i)}}function Lu(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Vr(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Vu(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Ht(t.matched[s],n.matched[r])&&Si(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Ht(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Si(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!Fu(e[n],t[n]))return!1;return!0}function Fu(e,t){return Ve(e)?Fr(e,t):Ve(t)?Fr(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function Fr(e,t){return Ve(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function ju(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let o=n.length-1,i,l;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+s.slice(i).join("/")}const ft={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let xs=function(e){return e.pop="pop",e.push="push",e}({}),fs=function(e){return e.back="back",e.forward="forward",e.unknown="",e}({});function Hu(e){if(!e)if(It){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Mu(e)}const Uu=/^[^#]+#/;function Bu(e,t){return e.replace(Uu,"#")+t}function ku(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const Qn=()=>({left:window.scrollX,top:window.scrollY});function Ku(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=ku(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function jr(e,t){return(history.state?history.state.position-t:-1)+e}const ws=new Map;function Gu(e,t){ws.set(e,t)}function Wu(e){const t=ws.get(e);return ws.delete(e),t}function qu(e){return typeof e=="string"||e&&typeof e=="object"}function Ai(e){return typeof e=="string"||typeof e=="symbol"}let oe=function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e}({});const Ri=Symbol("");oe.MATCHER_NOT_FOUND+"",oe.NAVIGATION_GUARD_REDIRECT+"",oe.NAVIGATION_ABORTED+"",oe.NAVIGATION_CANCELLED+"",oe.NAVIGATION_DUPLICATED+"";function Ut(e,t){return Q(new Error,{type:e,[Ri]:!0},t)}function Ye(e,t){return e instanceof Error&&Ri in e&&(t==null||!!(e.type&t))}const $u=["params","query","hash"];function Ju(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of $u)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function zu(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sr&&Rs(r)):[s&&Rs(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function Qu(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=Ve(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Yu=Symbol(""),Ur=Symbol(""),Yn=Symbol(""),$s=Symbol(""),Os=Symbol("");function Wt(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function dt(e,t,n,s,r,o=i=>i()){const i=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,c)=>{const a=g=>{g===!1?c(Ut(oe.NAVIGATION_ABORTED,{from:n,to:t})):g instanceof Error?c(g):qu(g)?c(Ut(oe.NAVIGATION_GUARD_REDIRECT,{from:t,to:g})):(i&&s.enterCallbacks[r]===i&&typeof g=="function"&&i.push(g),l())},f=o(()=>e.call(s&&s.instances[r],t,n,a));let d=Promise.resolve(f);e.length<3&&(d=d.then(a)),d.catch(g=>c(g))})}function as(e,t,n,s,r=o=>o()){const o=[];for(const i of e)for(const l in i.components){let c=i.components[l];if(!(t!=="beforeRouteEnter"&&!i.instances[l]))if(mi(c)){const a=(c.__vccOpts||c)[t];a&&o.push(dt(a,n,s,i,l,r))}else{let a=c();o.push(()=>a.then(f=>{if(!f)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const d=yu(f)?f.default:f;i.mods[l]=f,i.components[l]=d;const g=(d.__vccOpts||d)[t];return g&&dt(g,n,s,i,l,r)()}))}}return o}function Xu(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iHt(a,l))?s.push(l):n.push(l));const c=e.matched[i];c&&(t.matched.find(a=>Ht(a,c))||r.push(c))}return[n,s,r]}/*! - * vue-router v4.6.4 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */let Zu=()=>location.protocol+"//"+location.host;function xi(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let i=r.includes(e.slice(o))?e.slice(o).length:1,l=r.slice(i);return l[0]!=="/"&&(l="/"+l),Vr(l,"")}return Vr(n,e)+s+r}function ef(e,t,n,s){let r=[],o=[],i=null;const l=({state:g})=>{const m=xi(e,location),C=n.value,R=t.value;let F=0;if(g){if(n.value=m,t.value=g,i&&i===C){i=null;return}F=R?g.position-R.position:0}else s(m);r.forEach(L=>{L(n.value,C,{delta:F,type:xs.pop,direction:F?F>0?fs.forward:fs.back:fs.unknown})})};function c(){i=n.value}function a(g){r.push(g);const m=()=>{const C=r.indexOf(g);C>-1&&r.splice(C,1)};return o.push(m),m}function f(){if(document.visibilityState==="hidden"){const{history:g}=window;if(!g.state)return;g.replaceState(Q({},g.state,{scroll:Qn()}),"")}}function d(){for(const g of o)g();o=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",f),document.removeEventListener("visibilitychange",f)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",f),document.addEventListener("visibilitychange",f),{pauseListeners:c,listen:a,destroy:d}}function Br(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?Qn():null}}function tf(e){const{history:t,location:n}=window,s={value:xi(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(c,a,f){const d=e.indexOf("#"),g=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+c:Zu()+e+c;try{t[f?"replaceState":"pushState"](a,"",g),r.value=a}catch(m){console.error(m),n[f?"replace":"assign"](g)}}function i(c,a){o(c,Q({},t.state,Br(r.value.back,c,r.value.forward,!0),a,{position:r.value.position}),!0),s.value=c}function l(c,a){const f=Q({},r.value,t.state,{forward:c,scroll:Qn()});o(f.current,f,!0),o(c,Q({},Br(s.value,c,null),{position:f.position+1},a),!1),s.value=c}return{location:s,state:r,push:l,replace:i}}function nf(e){e=Hu(e);const t=tf(e),n=ef(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=Q({location:"",base:e,go:s,createHref:Bu.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let Et=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var fe=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(fe||{});const sf={type:Et.Static,value:""},rf=/[a-zA-Z0-9_]/;function of(e){if(!e)return[[]];if(e==="/")return[[sf]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${a}": ${m}`)}let n=fe.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,c,a="",f="";function d(){a&&(n===fe.Static?o.push({type:Et.Static,value:a}):n===fe.Param||n===fe.ParamRegExp||n===fe.ParamRegExpEnd?(o.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${a}) must be alone in its segment. eg: '/:ids+.`),o.push({type:Et.Param,value:a,regexp:f,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),a="")}function g(){a+=c}for(;lt.length?t.length===1&&t[0]===_e.Static+_e.Segment?1:-1:0}function wi(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const af={strict:!1,end:!0,sensitive:!1};function hf(e,t,n){const s=uf(of(e.path),n),r=Q(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function df(e,t){const n=[],s=new Map;t=Lr(af,t);function r(d){return s.get(d)}function o(d,g,m){const C=!m,R=Wr(d);R.aliasOf=m&&m.record;const F=Lr(t,d),L=[R];if("alias"in d){const S=typeof d.alias=="string"?[d.alias]:d.alias;for(const U of S)L.push(Wr(Q({},R,{components:m?m.record.components:R.components,path:U,aliasOf:m?m.record:R})))}let T,N;for(const S of L){const{path:U}=S;if(g&&U[0]!=="/"){const le=g.record.path,W=le[le.length-1]==="/"?"":"/";S.path=g.record.path+(U&&W+U)}if(T=hf(S,g,F),m?m.alias.push(T):(N=N||T,N!==T&&N.alias.push(T),C&&d.name&&!qr(T)&&i(d.name)),Oi(T)&&c(T),R.children){const le=R.children;for(let W=0;W{i(N)}:nn}function i(d){if(Ai(d)){const g=s.get(d);g&&(s.delete(d),n.splice(n.indexOf(g),1),g.children.forEach(i),g.alias.forEach(i))}else{const g=n.indexOf(d);g>-1&&(n.splice(g,1),d.record.name&&s.delete(d.record.name),d.children.forEach(i),d.alias.forEach(i))}}function l(){return n}function c(d){const g=mf(d,n);n.splice(g,0,d),d.record.name&&!qr(d)&&s.set(d.record.name,d)}function a(d,g){let m,C={},R,F;if("name"in d&&d.name){if(m=s.get(d.name),!m)throw Ut(oe.MATCHER_NOT_FOUND,{location:d});F=m.record.name,C=Q(Gr(g.params,m.keys.filter(N=>!N.optional).concat(m.parent?m.parent.keys.filter(N=>N.optional):[]).map(N=>N.name)),d.params&&Gr(d.params,m.keys.map(N=>N.name))),R=m.stringify(C)}else if(d.path!=null)R=d.path,m=n.find(N=>N.re.test(R)),m&&(C=m.parse(R),F=m.record.name);else{if(m=g.name?s.get(g.name):n.find(N=>N.re.test(g.path)),!m)throw Ut(oe.MATCHER_NOT_FOUND,{location:d,currentLocation:g});F=m.record.name,C=Q({},g.params,d.params),R=m.stringify(C)}const L=[];let T=m;for(;T;)L.unshift(T.record),T=T.parent;return{name:F,path:R,params:C,matched:L,meta:gf(L)}}e.forEach(d=>o(d));function f(){n.length=0,s.clear()}return{addRoute:o,resolve:a,removeRoute:i,clearRoutes:f,getRoutes:l,getRecordMatcher:r}}function Gr(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Wr(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:pf(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function pf(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function qr(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function gf(e){return e.reduce((t,n)=>Q(t,n.meta),{})}function mf(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;wi(e,t[o])<0?s=o:n=o+1}const r=_f(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function _f(e){let t=e;for(;t=t.parent;)if(Oi(t)&&wi(e,t)===0)return t}function Oi({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function $r(e){const t=De(Yn),n=De($s),s=ce(()=>{const c=At(e.to);return t.resolve(c)}),r=ce(()=>{const{matched:c}=s.value,{length:a}=c,f=c[a-1],d=n.matched;if(!f||!d.length)return-1;const g=d.findIndex(Ht.bind(null,f));if(g>-1)return g;const m=Jr(c[a-2]);return a>1&&Jr(f)===m&&d[d.length-1].path!==m?d.findIndex(Ht.bind(null,c[a-2])):g}),o=ce(()=>r.value>-1&&Sf(n.params,s.value.params)),i=ce(()=>r.value>-1&&r.value===n.matched.length-1&&Si(n.params,s.value.params));function l(c={}){if(Ef(c)){const a=t[At(e.replace)?"replace":"push"](At(e.to)).catch(nn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>a),a}return Promise.resolve()}return{route:s,href:ce(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function vf(e){return e.length===1?e[0]:e}const yf=ks({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:$r,setup(e,{slots:t}){const n=hn($r(e)),{options:s}=De(Yn),r=ce(()=>({[zr(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[zr(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&vf(t.default(n));return e.custom?o:ui("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),bf=yf;function Ef(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Sf(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!Ve(r)||r.length!==s.length||s.some((o,i)=>o.valueOf()!==r[i].valueOf()))return!1}return!0}function Jr(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const zr=(e,t,n)=>e??t??n,Af=ks({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=De(Os),r=ce(()=>e.route||s.value),o=De(Ur,0),i=ce(()=>{let a=At(o);const{matched:f}=r.value;let d;for(;(d=f[a])&&!d.components;)a++;return a}),l=ce(()=>r.value.matched[i.value]);yn(Ur,ce(()=>i.value+1)),yn(Yu,l),yn(Os,r);const c=Nt();return Qt(()=>[c.value,l.value,e.name],([a,f,d],[g,m,C])=>{f&&(f.instances[d]=a,m&&m!==f&&a&&a===g&&(f.leaveGuards.size||(f.leaveGuards=m.leaveGuards),f.updateGuards.size||(f.updateGuards=m.updateGuards))),a&&f&&(!m||!Ht(f,m)||!g)&&(f.enterCallbacks[d]||[]).forEach(R=>R(a))},{flush:"post"}),()=>{const a=r.value,f=e.name,d=l.value,g=d&&d.components[f];if(!g)return Qr(n.default,{Component:g,route:a});const m=d.props[f],C=m?m===!0?a.params:typeof m=="function"?m(a):m:null,F=ui(g,Q({},C,t,{onVnodeUnmounted:L=>{L.component.isUnmounted&&(d.instances[f]=null)},ref:c}));return Qr(n.default,{Component:F,route:a})||F}}});function Qr(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Rf=Af;function xf(e){const t=df(e.routes,e),n=e.parseQuery||zu,s=e.stringifyQuery||Hr,r=e.history,o=Wt(),i=Wt(),l=Wt(),c=fl(ft);let a=ft;It&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=cs.bind(null,y=>""+y),d=cs.bind(null,Nu),g=cs.bind(null,un);function m(y,I){let O,D;return Ai(y)?(O=t.getRecordMatcher(y),D=I):D=y,t.addRoute(D,O)}function C(y){const I=t.getRecordMatcher(y);I&&t.removeRoute(I)}function R(){return t.getRoutes().map(y=>y.record)}function F(y){return!!t.getRecordMatcher(y)}function L(y,I){if(I=Q({},I||c.value),typeof y=="string"){const p=us(n,y,I.path),_=t.resolve({path:p.path},I),b=r.createHref(p.fullPath);return Q(p,_,{params:g(_.params),hash:un(p.hash),redirectedFrom:void 0,href:b})}let O;if(y.path!=null)O=Q({},y,{path:us(n,y.path,I.path).path});else{const p=Q({},y.params);for(const _ in p)p[_]==null&&delete p[_];O=Q({},y,{params:d(p)}),I.params=d(I.params)}const D=t.resolve(O,I),q=y.hash||"";D.params=f(g(D.params));const u=Lu(s,Q({},y,{hash:Tu(q),path:D.path})),h=r.createHref(u);return Q({fullPath:u,hash:q,query:s===Hr?Qu(y.query):y.query||{}},D,{redirectedFrom:void 0,href:h})}function T(y){return typeof y=="string"?us(n,y,c.value.path):Q({},y)}function N(y,I){if(a!==y)return Ut(oe.NAVIGATION_CANCELLED,{from:I,to:y})}function S(y){return W(y)}function U(y){return S(Q(T(y),{replace:!0}))}function le(y,I){const O=y.matched[y.matched.length-1];if(O&&O.redirect){const{redirect:D}=O;let q=typeof D=="function"?D(y,I):D;return typeof q=="string"&&(q=q.includes("?")||q.includes("#")?q=T(q):{path:q},q.params={}),Q({query:y.query,hash:y.hash,params:q.path!=null?{}:y.params},q)}}function W(y,I){const O=a=L(y),D=c.value,q=y.state,u=y.force,h=y.replace===!0,p=le(O,D);if(p)return W(Q(T(p),{state:typeof p=="object"?Q({},q,p.state):q,force:u,replace:h}),I||O);const _=O;_.redirectedFrom=I;let b;return!u&&Vu(s,D,O)&&(b=Ut(oe.NAVIGATION_DUPLICATED,{to:_,from:D}),Fe(D,D,!0,!1)),(b?Promise.resolve(b):re(_,D)).catch(v=>Ye(v)?Ye(v,oe.NAVIGATION_GUARD_REDIRECT)?v:ut(v):z(v,_,D)).then(v=>{if(v){if(Ye(v,oe.NAVIGATION_GUARD_REDIRECT))return W(Q({replace:h},T(v.to),{state:typeof v.to=="object"?Q({},q,v.to.state):q,force:u}),I||_)}else v=Oe(_,D,!0,h,q);return ge(_,D,v),v})}function K(y,I){const O=N(y,I);return O?Promise.reject(O):Promise.resolve()}function G(y){const I=Ot.values().next().value;return I&&typeof I.runWithContext=="function"?I.runWithContext(y):y()}function re(y,I){let O;const[D,q,u]=Xu(y,I);O=as(D.reverse(),"beforeRouteLeave",y,I);for(const p of D)p.leaveGuards.forEach(_=>{O.push(dt(_,y,I))});const h=K.bind(null,y,I);return O.push(h),Ne(O).then(()=>{O=[];for(const p of o.list())O.push(dt(p,y,I));return O.push(h),Ne(O)}).then(()=>{O=as(q,"beforeRouteUpdate",y,I);for(const p of q)p.updateGuards.forEach(_=>{O.push(dt(_,y,I))});return O.push(h),Ne(O)}).then(()=>{O=[];for(const p of u)if(p.beforeEnter)if(Ve(p.beforeEnter))for(const _ of p.beforeEnter)O.push(dt(_,y,I));else O.push(dt(p.beforeEnter,y,I));return O.push(h),Ne(O)}).then(()=>(y.matched.forEach(p=>p.enterCallbacks={}),O=as(u,"beforeRouteEnter",y,I,G),O.push(h),Ne(O))).then(()=>{O=[];for(const p of i.list())O.push(dt(p,y,I));return O.push(h),Ne(O)}).catch(p=>Ye(p,oe.NAVIGATION_CANCELLED)?p:Promise.reject(p))}function ge(y,I,O){l.list().forEach(D=>G(()=>D(y,I,O)))}function Oe(y,I,O,D,q){const u=N(y,I);if(u)return u;const h=I===ft,p=It?history.state:{};O&&(D||h?r.replace(y.fullPath,Q({scroll:h&&p&&p.scroll},q)):r.push(y.fullPath,q)),c.value=y,Fe(y,I,O,h),ut()}let be;function gt(){be||(be=r.listen((y,I,O)=>{if(!mt.listening)return;const D=L(y),q=le(D,mt.currentRoute.value);if(q){W(Q(q,{replace:!0,force:!0}),D).catch(nn);return}a=D;const u=c.value;It&&Gu(jr(u.fullPath,O.delta),Qn()),re(D,u).catch(h=>Ye(h,oe.NAVIGATION_ABORTED|oe.NAVIGATION_CANCELLED)?h:Ye(h,oe.NAVIGATION_GUARD_REDIRECT)?(W(Q(T(h.to),{force:!0}),D).then(p=>{Ye(p,oe.NAVIGATION_ABORTED|oe.NAVIGATION_DUPLICATED)&&!O.delta&&O.type===xs.pop&&r.go(-1,!1)}).catch(nn),Promise.reject()):(O.delta&&r.go(-O.delta,!1),z(h,D,u))).then(h=>{h=h||Oe(D,u,!1),h&&(O.delta&&!Ye(h,oe.NAVIGATION_CANCELLED)?r.go(-O.delta,!1):O.type===xs.pop&&Ye(h,oe.NAVIGATION_ABORTED|oe.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),ge(D,u,h)}).catch(nn)}))}let ct=Wt(),se=Wt(),k;function z(y,I,O){ut(y);const D=se.list();return D.length?D.forEach(q=>q(y,I,O)):console.error(y),Promise.reject(y)}function ze(){return k&&c.value!==ft?Promise.resolve():new Promise((y,I)=>{ct.add([y,I])})}function ut(y){return k||(k=!y,gt(),ct.list().forEach(([I,O])=>y?O(y):I()),ct.reset()),y}function Fe(y,I,O,D){const{scrollBehavior:q}=e;if(!It||!q)return Promise.resolve();const u=!O&&Wu(jr(y.fullPath,0))||(D||!O)&&history.state&&history.state.scroll||null;return Gn().then(()=>q(y,I,u)).then(h=>h&&Ku(h)).catch(h=>z(h,y,I))}const Ee=y=>r.go(y);let wt;const Ot=new Set,mt={currentRoute:c,listening:!0,addRoute:m,removeRoute:C,clearRoutes:t.clearRoutes,hasRoute:F,getRoutes:R,resolve:L,options:e,push:S,replace:U,go:Ee,back:()=>Ee(-1),forward:()=>Ee(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:se.add,isReady:ze,install(y){y.component("RouterLink",bf),y.component("RouterView",Rf),y.config.globalProperties.$router=mt,Object.defineProperty(y.config.globalProperties,"$route",{enumerable:!0,get:()=>At(c)}),It&&!wt&&c.value===ft&&(wt=!0,S(r.location).catch(D=>{}));const I={};for(const D in ft)Object.defineProperty(I,D,{get:()=>c.value[D],enumerable:!0});y.provide(Yn,mt),y.provide($s,Ao(I)),y.provide(Os,c);const O=y.unmount;Ot.add(y),y.unmount=function(){Ot.delete(y),Ot.size<1&&(a=ft,be&&be(),be=null,c.value=ft,wt=!1,k=!1),O()}}};function Ne(y){return y.reduce((I,O)=>I.then(()=>G(O)),Promise.resolve())}return mt}function Lf(){return De(Yn)}function Vf(e){return De($s)}const Ci=xf({history:nf(),routes:[{path:"/login",name:"login",component:()=>Re(()=>import("./LoginView-CeGTfWRI.js"),[]),meta:{guest:!0}},{path:"/register",name:"register-org",component:()=>Re(()=>import("./RegisterOrgView-Cm_uvfRR.js"),[]),meta:{guest:!0}},{path:"/admin",name:"admin",component:()=>Re(()=>import("./AdminDashboardView-B-imbJi1.js"),[]),meta:{requiresAuth:!0}},{path:"/",component:()=>Re(()=>import("./AppLayout-BRNeJZ9j.js"),[]),meta:{requiresAuth:!0},children:[{path:"",name:"dashboard",component:()=>Re(()=>import("./DashboardView-BW8VodPh.js"),[])},{path:"orders",name:"orders",component:()=>Re(()=>import("./OrdersView-BVBJaCj6.js"),[])},{path:"orders/:id",name:"order-detail",component:()=>Re(()=>import("./OrderDetailView-B2j_NZNO.js"),[])},{path:"users",name:"users",component:()=>Re(()=>import("./UsersView-BzAufK3M.js"),[]),meta:{roles:["chef","disponent"]}},{path:"availability",name:"availability",component:()=>Re(()=>import("./AvailabilityView-DWb2J76b.js"),[])},{path:"timesheets",name:"timesheets",component:()=>Re(()=>import("./TimesheetsView-DD5Ozo6b.js"),[])},{path:"settings",name:"settings",component:()=>Re(()=>import("./SettingsView-CiueANf-.js"),[])},{path:"modules",name:"modules",component:()=>Re(()=>import("./ModulesView-BttIuruo.js"),[]),meta:{roles:["chef"]}},{path:"partnerships",name:"partnerships",component:()=>Re(()=>import("./PartnershipsView-VpZWV3sV.js"),[])},{path:"help",name:"help",component:()=>Re(()=>import("./HelpView-BR-Y2gYt.js"),[])}]}]});Ci.beforeEach(async(e,t,n)=>{var l;const s=gi();!s.isAuthenticated&&s.hasStoredToken&&await s.fetchCurrentUser();const r=e.matched.some(c=>c.meta.requiresAuth),o=e.matched.some(c=>c.meta.guest),i=e.meta.roles;r&&!s.isAuthenticated?n({name:"login",query:{redirect:e.fullPath}}):o&&s.isAuthenticated?n({name:"dashboard"}):i&&!i.includes(((l=s.user)==null?void 0:l.role)||"")?n({name:"dashboard"}):n()});const Js=ru(mu);Js.use(lu());Js.use(Ci);Js.mount("#app");export{Pf as A,Ze as F,oi as a,Of as b,Tf as c,ks as d,If as e,Lf as f,Vf as g,Qt as h,we as i,Al as j,ce as k,Kl as l,Gt as m,Ns as n,ti as o,Ec as p,Vo as q,Nt as r,Df as s,Ki as t,gi as u,Nf as v,Mf as w,Cf as x,At as y,si as z}; diff --git a/dist/index.html b/dist/index.html index 455ec51..506ec4b 100644 --- a/dist/index.html +++ b/dist/index.html @@ -5,8 +5,8 @@ SeCu - Mitarbeiterverwaltung - - + +
diff --git a/src/views/PartnershipsView.vue b/src/views/PartnershipsView.vue index 1d37088..cf8b87e 100644 --- a/src/views/PartnershipsView.vue +++ b/src/views/PartnershipsView.vue @@ -6,22 +6,61 @@ import { useAuthStore } from '@/stores/auth' const authStore = useAuthStore() const loading = ref(true) -const partnerships = ref([]) -const selectedPartnership = ref(null) +const asContractor = ref([]) +const asSubcontractor = ref([]) +const stats = ref({}) + +// Tabs +const activeTab = ref<'overview' | 'orders' | 'timesheets' | 'invoices'>('overview') + +// Modals const showInviteModal = ref(false) const showDetailModal = ref(false) +const showRateModal = ref(false) +const showShareOrderModal = ref(false) + +// Selected +const selectedPartnership = ref(null) +const partnershipDetail = ref(null) + +// Search +const searchQuery = ref('') +const searchResults = ref([]) +const searching = ref(false) // Invite form -const inviteSlug = ref('') -const inviteNotes = ref('') +const inviteForm = ref({ + subcontractor_slug: '', + notes: '', + contract_start: '', + contract_end: '' +}) const inviting = ref(false) -const inviteError = ref('') -// Detail data -const partnershipDetail = ref(null) -const timesheets = ref([]) -const billingData = ref(null) -const activeTab = ref<'orders' | 'timesheets' | 'billing'>('orders') +// Rate form +const rateForm = ref({ + name: '', + description: '', + rate_type: 'hourly', + amount: 0, + is_default: false +}) + +// Shared orders +const sharedOrders = ref({ asContractor: [], asSubcontractor: [] }) +const partnershipTimesheets = ref([]) +const invoices = ref([]) + +// Orders to share +const availableOrders = ref([]) +const selectedOrder = ref(null) +const shareForm = ref({ + partnership_id: '', + order_id: '', + rate_id: '', + required_staff: 1, + notes: '' +}) onMounted(async () => { await loadPartnerships() @@ -30,426 +69,1057 @@ onMounted(async () => { async function loadPartnerships() { loading.value = true try { - const res = await api.get<{ partnerships: any[] }>('/partnerships') - partnerships.value = res.data.partnerships + const res = await api.get('/partnerships') + asContractor.value = res.data.asContractor || [] + asSubcontractor.value = res.data.asSubcontractor || [] + stats.value = res.data.stats || {} } catch (e) { console.error('Load partnerships failed:', e) } loading.value = false } -async function inviteSubcontractor() { - if (!inviteSlug.value) return - - inviting.value = true - inviteError.value = '' - +async function searchOrgs() { + if (searchQuery.value.length < 2) { + searchResults.value = [] + return + } + searching.value = true try { - await api.post('/partnerships/invite', { - subcontractor_slug: inviteSlug.value, - notes: inviteNotes.value || undefined + const res = await api.get(`/partnerships/search/orgs?q=${encodeURIComponent(searchQuery.value)}`) + searchResults.value = res.data + } catch (e) { + console.error('Search failed:', e) + } + searching.value = false +} + +function selectOrgToInvite(org: any) { + inviteForm.value.subcontractor_slug = org.slug + searchQuery.value = org.name + searchResults.value = [] +} + +async function sendInvite() { + if (!inviteForm.value.subcontractor_slug) return + inviting.value = true + try { + await api.post('/partnerships', { + subcontractor_slug: inviteForm.value.subcontractor_slug, + notes: inviteForm.value.notes || undefined, + contract_start: inviteForm.value.contract_start || undefined, + contract_end: inviteForm.value.contract_end || undefined }) showInviteModal.value = false - inviteSlug.value = '' - inviteNotes.value = '' + resetInviteForm() await loadPartnerships() - } catch (e) { - inviteError.value = e instanceof Error ? e.message : 'Einladung fehlgeschlagen' + } catch (e: any) { + alert('Fehler: ' + (e.response?.data?.error || e.message)) } inviting.value = false } -async function respondToInvite(partnership: any, accept: boolean) { +function resetInviteForm() { + inviteForm.value = { subcontractor_slug: '', notes: '', contract_start: '', contract_end: '' } + searchQuery.value = '' + searchResults.value = [] +} + +async function acceptInvite(partnership: any) { try { - await api.post(`/partnerships/${partnership.id}/respond`, { accept }) + await api.post(`/partnerships/${partnership.id}/accept`) await loadPartnerships() - } catch (e) { - alert('Fehler: ' + (e instanceof Error ? e.message : 'Unbekannt')) + } catch (e: any) { + alert('Fehler: ' + (e.response?.data?.error || e.message)) + } +} + +async function declineInvite(partnership: any) { + if (!confirm('Einladung wirklich ablehnen?')) return + try { + await api.post(`/partnerships/${partnership.id}/decline`) + await loadPartnerships() + } catch (e: any) { + alert('Fehler: ' + (e.response?.data?.error || e.message)) + } +} + +async function changeStatus(partnership: any, status: string) { + if (!confirm(`Status auf "${status}" ändern?`)) return + try { + await api.put(`/partnerships/${partnership.id}/status`, { status }) + await loadPartnerships() + if (partnershipDetail.value?.id === partnership.id) { + partnershipDetail.value.status = status + } + } catch (e: any) { + alert('Fehler: ' + (e.response?.data?.error || e.message)) } } async function viewPartnership(partnership: any) { selectedPartnership.value = partnership - showDetailModal.value = true - activeTab.value = 'orders' - try { - const [detailRes, tsRes, billingRes] = await Promise.all([ - api.get(`/partnerships/${partnership.id}`), - api.get(`/partnerships/${partnership.id}/timesheets`), - api.get(`/partnerships/${partnership.id}/billing`) - ]) - - partnershipDetail.value = detailRes.data - timesheets.value = tsRes.data.timesheets - billingData.value = billingRes.data - } catch (e) { - console.error('Load detail failed:', e) + const res = await api.get(`/partnerships/${partnership.id}`) + partnershipDetail.value = res.data + showDetailModal.value = true + } catch (e: any) { + alert('Fehler: ' + (e.response?.data?.error || e.message)) } } -async function reviewTimesheet(ts: any, approve: boolean) { - if (!selectedPartnership.value) return - +// ============================================ +// RATES +// ============================================ + +function openRateModal() { + rateForm.value = { name: '', description: '', rate_type: 'hourly', amount: 0, is_default: false } + showRateModal.value = true +} + +async function saveRate() { + if (!rateForm.value.name || !rateForm.value.amount) { + alert('Name und Betrag erforderlich') + return + } try { - await api.post(`/partnerships/${selectedPartnership.value.id}/timesheets/${ts.id}/review`, { - approve, - dispute_reason: approve ? undefined : prompt('Grund für Beanstandung:') + await api.post(`/partnerships/${partnershipDetail.value.id}/rates`, { + ...rateForm.value, + amount_cents: Math.round(rateForm.value.amount * 100) }) - // Reload - const tsRes = await api.get(`/partnerships/${selectedPartnership.value.id}/timesheets`) - timesheets.value = tsRes.data.timesheets - } catch (e) { - alert('Fehler: ' + (e instanceof Error ? e.message : 'Unbekannt')) + // Reload detail + const res = await api.get(`/partnerships/${partnershipDetail.value.id}`) + partnershipDetail.value = res.data + showRateModal.value = false + } catch (e: any) { + alert('Fehler: ' + (e.response?.data?.error || e.message)) } } -const pendingInvites = computed(() => - partnerships.value.filter(p => p.status === 'pending' && p.my_role === 'subcontractor') -) +async function deleteRate(rate: any) { + if (!confirm(`Satz "${rate.name}" löschen?`)) return + try { + await api.delete(`/partnerships/${partnershipDetail.value.id}/rates/${rate.id}`) + const res = await api.get(`/partnerships/${partnershipDetail.value.id}`) + partnershipDetail.value = res.data + } catch (e: any) { + alert('Fehler: ' + (e.response?.data?.error || e.message)) + } +} -const activePartnerships = computed(() => - partnerships.value.filter(p => p.status === 'active') -) +// ============================================ +// SHARED ORDERS +// ============================================ -function formatAmount(cents: number) { +async function loadSharedOrders() { + activeTab.value = 'orders' + try { + const res = await api.get('/partnerships/orders/list') + sharedOrders.value = res.data + } catch (e) { + console.error('Load shared orders failed:', e) + } +} + +async function openShareOrderModal(partnership: any) { + selectedPartnership.value = partnership + shareForm.value = { + partnership_id: partnership.id, + order_id: '', + rate_id: '', + required_staff: 1, + notes: '' + } + try { + // Load our orders + const ordersRes = await api.get('/orders') + availableOrders.value = ordersRes.data.orders || ordersRes.data || [] + // Load rates for this partnership + const ratesRes = await api.get(`/partnerships/${partnership.id}/rates`) + partnershipDetail.value = { ...partnership, rates: ratesRes.data } + showShareOrderModal.value = true + } catch (e) { + console.error('Load orders failed:', e) + } +} + +async function shareOrder() { + if (!shareForm.value.order_id) { + alert('Bitte Auftrag auswählen') + return + } + try { + await api.post('/partnerships/orders', { + partnership_id: shareForm.value.partnership_id, + order_id: shareForm.value.order_id, + rate_id: shareForm.value.rate_id || undefined, + required_staff: shareForm.value.required_staff, + notes: shareForm.value.notes || undefined + }) + showShareOrderModal.value = false + await loadSharedOrders() + } catch (e: any) { + alert('Fehler: ' + (e.response?.data?.error || e.message)) + } +} + +async function respondToOrder(order: any, accept: boolean) { + try { + await api.post(`/partnerships/orders/${order.id}/respond`, { + accept, + notes: '' + }) + await loadSharedOrders() + } catch (e: any) { + alert('Fehler: ' + (e.response?.data?.error || e.message)) + } +} + +async function completeOrder(order: any) { + if (!confirm('Auftrag abschließen?')) return + try { + await api.post(`/partnerships/orders/${order.id}/complete`) + await loadSharedOrders() + } catch (e: any) { + alert('Fehler: ' + (e.response?.data?.error || e.message)) + } +} + +// ============================================ +// TIMESHEETS +// ============================================ + +async function loadPartnershipTimesheets() { + activeTab.value = 'timesheets' + try { + const res = await api.get('/partnerships/timesheets/list') + partnershipTimesheets.value = res.data + } catch (e) { + console.error('Load timesheets failed:', e) + } +} + +async function approveTimesheet(ts: any) { + try { + await api.post(`/partnerships/timesheets/${ts.id}/approve`) + await loadPartnershipTimesheets() + } catch (e: any) { + alert('Fehler: ' + (e.response?.data?.error || e.message)) + } +} + +async function disputeTimesheet(ts: any) { + const reason = prompt('Grund für Beanstandung:') + if (!reason) return + try { + await api.post(`/partnerships/timesheets/${ts.id}/dispute`, { reason }) + await loadPartnershipTimesheets() + } catch (e: any) { + alert('Fehler: ' + (e.response?.data?.error || e.message)) + } +} + +// ============================================ +// INVOICES +// ============================================ + +async function loadInvoices() { + activeTab.value = 'invoices' + try { + const res = await api.get('/partnerships/invoices/list') + invoices.value = res.data + } catch (e) { + console.error('Load invoices failed:', e) + } +} + +async function markAsPaid(invoice: any) { + if (!confirm('Rechnung als bezahlt markieren?')) return + try { + await api.put(`/partnerships/invoices/${invoice.id}/pay`) + await loadInvoices() + } catch (e: any) { + alert('Fehler: ' + (e.response?.data?.error || e.message)) + } +} + +// Helpers +function formatCents(cents: number): string { return (cents / 100).toFixed(2).replace('.', ',') + ' €' } -function formatDate(date: string) { +function formatDate(date: string): string { + if (!date) return '-' return new Date(date).toLocaleDateString('de-DE') } -function getStatusBadge(status: string) { - const badges: Record = { - pending: 'badge-warning', - active: 'badge-success', - paused: 'badge-secondary', - terminated: 'badge-danger', - requested: 'badge-primary', - accepted: 'badge-success', - declined: 'badge-danger', - approved: 'badge-success', - disputed: 'badge-danger' +function statusBadge(status: string): { text: string, class: string } { + const map: Record = { + pending: { text: 'Ausstehend', class: 'bg-yellow-100 text-yellow-800' }, + active: { text: 'Aktiv', class: 'bg-green-100 text-green-800' }, + paused: { text: 'Pausiert', class: 'bg-gray-100 text-gray-800' }, + terminated: { text: 'Beendet', class: 'bg-red-100 text-red-800' }, + requested: { text: 'Angefragt', class: 'bg-blue-100 text-blue-800' }, + accepted: { text: 'Angenommen', class: 'bg-green-100 text-green-800' }, + declined: { text: 'Abgelehnt', class: 'bg-red-100 text-red-800' }, + completed: { text: 'Abgeschlossen', class: 'bg-gray-100 text-gray-800' }, + approved: { text: 'Freigegeben', class: 'bg-green-100 text-green-800' }, + disputed: { text: 'Beanstandet', class: 'bg-red-100 text-red-800' }, + draft: { text: 'Entwurf', class: 'bg-gray-100 text-gray-800' }, + sent: { text: 'Gesendet', class: 'bg-blue-100 text-blue-800' }, + paid: { text: 'Bezahlt', class: 'bg-green-100 text-green-800' } } - return badges[status] || 'badge-secondary' -} - -function getStatusLabel(status: string) { - const labels: Record = { - pending: 'Ausstehend', - active: 'Aktiv', - paused: 'Pausiert', - terminated: 'Beendet', - requested: 'Angefragt', - accepted: 'Angenommen', - declined: 'Abgelehnt', - approved: 'Genehmigt', - disputed: 'Beanstandet' - } - return labels[status] || status + return map[status] || { text: status, class: 'bg-gray-100 text-gray-800' } }