From 3ca75cc4f2f41c5713a603e731766b416a84fe01 Mon Sep 17 00:00:00 2001 From: OpenClaw Date: Thu, 12 Mar 2026 21:23:01 +0000 Subject: [PATCH] feat: Add all module frontend views MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Views added: - ShiftsView (Schichtplanung) - PatrolsView (Wächterkontrolle) - IncidentsView (Vorfallberichte) - VehiclesView (Fahrzeuge) - DocumentsView (Dokumente) - CustomersView (Kunden/CRM) - BillingView (Abrechnung) - ObjectsView (enhanced with contacts, instructions) Updated: - Router with all new routes - Sidebar with complete navigation --- ..._aWn.js => AdminDashboardView-JnGO4r61.js} | 2 +- dist/assets/AppLayout-AMYs4jcG.js | 1 + dist/assets/AppLayout-B1xnAEtL.js | 1 - ...UTc8n0.js => AvailabilityView-BNPzNcWA.js} | 2 +- dist/assets/BillingView-TAMo2net.js | 1 + dist/assets/CustomersView-B4K9IT7m.js | 1 + ...-DXGmhgHs.js => DashboardView-D1ilHHiP.js} | 2 +- dist/assets/DocumentsView-cD_00o40.js | 1 + ...pView-zL_K4Iai.js => HelpView-1PeoZaC4.js} | 2 +- dist/assets/IncidentsView-DPo8woI1.js | 1 + ...View-D70AJu6A.js => LoginView-D8QH8UMb.js} | 2 +- ...ew-BBWB_hpb.js => ModulesView-BNzetqIV.js} | 2 +- dist/assets/ObjectsView-BhTJxexl.js | 1 - dist/assets/ObjectsView-CzlgFF9j.js | 1 + ...VidF9zv.js => OrderDetailView-CrMXW-i2.js} | 2 +- ...iew-CoEtoYmQ.js => OrdersView-Cykxo3M3.js} | 2 +- ...qY1GtJ.js => PartnershipsView-BTiY9iQS.js} | 2 +- dist/assets/PatrolsView-CE7IkVbv.js | 1 + ...cj-b.js => QualificationsView-BbIklgwE.js} | 2 +- ...f8-oQoy.js => RegisterOrgView-CpcADoEU.js} | 2 +- ...w-Bkdz88hj.js => SettingsView-4DujBg5S.js} | 2 +- dist/assets/ShiftsView-gFZrEy1d.js | 1 + ...Bvjo1kDE.js => TimesheetsView-Cx-KwgCo.js} | 2 +- ...View-DMX0kDUw.js => UsersView-Df5a9eIx.js} | 2 +- dist/assets/VehiclesView-C2kXdRXZ.js | 1 + dist/assets/index-38_8_Zmu.css | 1 - dist/assets/index-BtrpDjiv.css | 1 + .../{index-OvQoqblD.js => index-CWxNv9Fc.js} | 14 +- dist/index.html | 4 +- src/components/layout/AppSidebar.vue | 22 +- src/router/index.ts | 39 + src/views/BillingView.vue | 165 ++++ src/views/CustomersView.vue | 177 ++++ src/views/DocumentsView.vue | 137 +++ src/views/IncidentsView.vue | 134 +++ src/views/ObjectsView.vue | 813 +++--------------- src/views/PatrolsView.vue | 142 +++ src/views/ShiftsView.vue | 162 ++++ src/views/VehiclesView.vue | 122 +++ 39 files changed, 1272 insertions(+), 700 deletions(-) rename dist/assets/{AdminDashboardView-Biz__aWn.js => AdminDashboardView-JnGO4r61.js} (99%) create mode 100644 dist/assets/AppLayout-AMYs4jcG.js delete mode 100644 dist/assets/AppLayout-B1xnAEtL.js rename dist/assets/{AvailabilityView-CaUTc8n0.js => AvailabilityView-BNPzNcWA.js} (97%) create mode 100644 dist/assets/BillingView-TAMo2net.js create mode 100644 dist/assets/CustomersView-B4K9IT7m.js rename dist/assets/{DashboardView-DXGmhgHs.js => DashboardView-D1ilHHiP.js} (98%) create mode 100644 dist/assets/DocumentsView-cD_00o40.js rename dist/assets/{HelpView-zL_K4Iai.js => HelpView-1PeoZaC4.js} (99%) create mode 100644 dist/assets/IncidentsView-DPo8woI1.js rename dist/assets/{LoginView-D70AJu6A.js => LoginView-D8QH8UMb.js} (98%) rename dist/assets/{ModulesView-BBWB_hpb.js => ModulesView-BNzetqIV.js} (98%) delete mode 100644 dist/assets/ObjectsView-BhTJxexl.js create mode 100644 dist/assets/ObjectsView-CzlgFF9j.js rename dist/assets/{OrderDetailView-DVidF9zv.js => OrderDetailView-CrMXW-i2.js} (98%) rename dist/assets/{OrdersView-CoEtoYmQ.js => OrdersView-Cykxo3M3.js} (99%) rename dist/assets/{PartnershipsView-BTqY1GtJ.js => PartnershipsView-BTiY9iQS.js} (99%) create mode 100644 dist/assets/PatrolsView-CE7IkVbv.js rename dist/assets/{QualificationsView-BIlDcj-b.js => QualificationsView-BbIklgwE.js} (99%) rename dist/assets/{RegisterOrgView-Bf8-oQoy.js => RegisterOrgView-CpcADoEU.js} (99%) rename dist/assets/{SettingsView-Bkdz88hj.js => SettingsView-4DujBg5S.js} (99%) create mode 100644 dist/assets/ShiftsView-gFZrEy1d.js rename dist/assets/{TimesheetsView-Bvjo1kDE.js => TimesheetsView-Cx-KwgCo.js} (98%) rename dist/assets/{UsersView-DMX0kDUw.js => UsersView-Df5a9eIx.js} (98%) create mode 100644 dist/assets/VehiclesView-C2kXdRXZ.js delete mode 100644 dist/assets/index-38_8_Zmu.css create mode 100644 dist/assets/index-BtrpDjiv.css rename dist/assets/{index-OvQoqblD.js => index-CWxNv9Fc.js} (89%) create mode 100644 src/views/BillingView.vue create mode 100644 src/views/CustomersView.vue create mode 100644 src/views/DocumentsView.vue create mode 100644 src/views/IncidentsView.vue create mode 100644 src/views/PatrolsView.vue create mode 100644 src/views/ShiftsView.vue create mode 100644 src/views/VehiclesView.vue diff --git a/dist/assets/AdminDashboardView-Biz__aWn.js b/dist/assets/AdminDashboardView-JnGO4r61.js similarity index 99% rename from dist/assets/AdminDashboardView-Biz__aWn.js rename to dist/assets/AdminDashboardView-JnGO4r61.js index 050b32d..193efed 100644 --- a/dist/assets/AdminDashboardView-Biz__aWn.js +++ b/dist/assets/AdminDashboardView-JnGO4r61.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-OvQoqblD.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-CWxNv9Fc.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-AMYs4jcG.js b/dist/assets/AppLayout-AMYs4jcG.js new file mode 100644 index 0000000..4e68d30 --- /dev/null +++ b/dist/assets/AppLayout-AMYs4jcG.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 n,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 y,e as S,p as N,f as V}from"./index-CWxNv9Fc.js";const B={class:"mt-6 px-3"},E={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"},O={class:"flex items-center gap-3"},R={class:"w-10 h-10 rounded-full bg-primary-100 dark:bg-primary-900 flex items-center justify-center"},H={class:"text-primary-600 dark:text-primary-300 font-medium"},I={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"},q=v({__name:"AppSidebar",props:{open:{type:Boolean}},emits:["close"],setup(x){const o=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:"👥"},{name:"Schichtplanung",href:"/shifts",icon:"📅"}),s.push({name:"Verfügbarkeit",href:"/availability",icon:"🗓️"},{name:"Stundenzettel",href:"/timesheets",icon:"⏱️"},{name:"Qualifikationen",href:"/qualifications",icon:"🎓"},{name:"Objekte",href:"/objects",icon:"🏢"},{name:"Rundgänge",href:"/patrols",icon:"📍"},{name:"Vorfälle",href:"/incidents",icon:"🚨"},{name:"Dokumente",href:"/documents",icon:"📁"}),r.canManageUsers&&s.push({name:"Fahrzeuge",href:"/vehicles",icon:"🚗"},{name:"Kunden",href:"/customers",icon:"🤝"}),r.isChef&&s.push({name:"Abrechnung",href:"/billing",icon:"💰"},{name:"Module",href:"/modules",icon:"⚙️"}),s.push({name:"Einstellungen",href:"/settings",icon:"🔧"},{name:"Hilfe",href:"/help",icon:"📚"}),s});function c(s){return s==="/"?o.path==="/":o.path.startsWith(s)}return(s,e)=>{var l,p,f,b,u;const m=$("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",x.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",B,[(d(!0),g(M,null,z(a.value,h=>(d(),j(m,{key:h.href,to:h.href,class:w(["flex items-center gap-3 px-3 py-2 rounded-lg mb-1 transition-colors",c(h.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",E,n(h.icon),1),t("span",D,n(h.name),1)]),_:2},1032,["to","class"]))),128))]),t("div",F,[t("div",O,[t("div",R,[t("span",H,n((p=(l=i(r).user)==null?void 0:l.first_name)==null?void 0:p[0])+n((b=(f=i(r).user)==null?void 0:f.last_name)==null?void 0:b[0]),1)]),t("div",I,[t("p",T,n(i(r).fullName),1),t("p",U,n((u=i(r).user)==null?void 0:u.role),1)])])])],2)}}}),K={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"},Q={class:"flex items-center gap-2"},W={class:"text-xl"},G={class:"relative"},J={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(x){const o=_(),r=k(localStorage.getItem("darkMode")==="true"),a=k(!1);function c(){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 m=$("router-link");return d(),g("header",K,[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",Q,[t("button",{class:"p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700",onClick:c},[t("span",W,n(r.value?"☀️":"🌙"),1)]),t("div",G,[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",J,[t("span",P,n((p=(l=i(o).user)==null?void 0:l.first_name)==null?void 0:p[0])+n((b=(f=i(o).user)==null?void 0:f.last_name)==null?void 0:b[0]),1)]),t("span",X,n(i(o).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)},[y(m,{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(x){const o=_(),r=V(),a=k(!1);async function c(){await o.logout(),r.push("/login")}return(s,e)=>{const m=$("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),y(q,{open:a.value,onClose:e[1]||(e[1]=l=>a.value=!1)},null,8,["open"]),t("div",ee,[y(Y,{onToggleSidebar:e[2]||(e[2]=l=>a.value=!a.value),onLogout:c}),t("main",te,[y(m)])])])}}});export{ae as default}; diff --git a/dist/assets/AppLayout-B1xnAEtL.js b/dist/assets/AppLayout-B1xnAEtL.js deleted file mode 100644 index 44f9b59..0000000 --- a/dist/assets/AppLayout-B1xnAEtL.js +++ /dev/null @@ -1 +0,0 @@ -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-OvQoqblD.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-CaUTc8n0.js b/dist/assets/AvailabilityView-BNPzNcWA.js similarity index 97% rename from dist/assets/AvailabilityView-CaUTc8n0.js rename to dist/assets/AvailabilityView-BNPzNcWA.js index 9587fbf..12ee7f2 100644 --- a/dist/assets/AvailabilityView-CaUTc8n0.js +++ b/dist/assets/AvailabilityView-BNPzNcWA.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-OvQoqblD.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-CWxNv9Fc.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/BillingView-TAMo2net.js b/dist/assets/BillingView-TAMo2net.js new file mode 100644 index 0000000..c069e06 --- /dev/null +++ b/dist/assets/BillingView-TAMo2net.js @@ -0,0 +1 @@ +import{d as S,q as C,m as c,c as a,a as t,t as n,n as _,F as h,x as v,e as p,r as u,o}from"./index-CWxNv9Fc.js";const B={class:"p-6"},z={class:"grid grid-cols-4 gap-4 mb-6"},R={class:"bg-white rounded-lg shadow p-4"},D={class:"text-2xl font-bold text-blue-600"},$={class:"text-sm text-gray-500"},E={class:"bg-white rounded-lg shadow p-4"},F={class:"text-2xl font-bold text-red-600"},N={class:"text-sm text-gray-500"},A={class:"bg-white rounded-lg shadow p-4"},K={class:"text-2xl font-bold text-green-600"},L={class:"bg-white rounded-lg shadow p-4"},T={class:"text-2xl font-bold"},V={class:"flex space-x-1 border-b mb-6"},j={key:0,class:"text-center py-12"},I={key:1},M={key:0,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-500"},P={key:1,class:"bg-white rounded-lg shadow overflow-hidden"},q={class:"min-w-full divide-y divide-gray-200"},G={class:"divide-y divide-gray-200"},O={class:"px-4 py-3 text-sm font-medium"},U={class:"px-4 py-3 text-sm"},H={class:"px-4 py-3 text-sm"},J={class:"px-4 py-3 text-sm text-right font-semibold"},Q={class:"px-4 py-3"},W={class:"px-4 py-3 text-right text-sm space-x-2"},X=["onClick"],Y=["onClick"],Z={key:2},tt={key:0,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-500"},et={key:1,class:"grid md:grid-cols-2 lg:grid-cols-3 gap-4"},st={class:"flex justify-between items-start"},at={class:"font-semibold"},nt={class:"text-sm text-gray-500"},ot={key:0,class:"px-2 py-1 text-xs bg-blue-100 text-blue-700 rounded"},lt={class:"text-2xl font-bold mt-2"},dt={class:"text-sm text-gray-500"},ct=S({__name:"BillingView",setup(it){const g=u(!0),y=u([]),x=u([]),d=u({}),i=u("invoices");C(async()=>{await m()});async function m(){g.value=!0;try{const[l,e,s]=await Promise.all([c.get("/billing/invoices"),c.get("/billing/rates"),c.get("/billing/stats")]);y.value=l.data.invoices||[],x.value=e.data.rates||[],d.value=s.data.stats||{}}catch(l){console.error(l)}g.value=!1}async function f(l){try{await c.put(`/billing/invoices/${l}/send`,{}),await m()}catch(e){alert("Fehler: "+e.message)}}async function w(l){try{await c.put(`/billing/invoices/${l}/pay`,{payment_method:"Überweisung"}),await m()}catch(e){alert("Fehler: "+e.message)}}function b(l){return{draft:{text:"Entwurf",class:"bg-gray-100 text-gray-700"},sent:{text:"Gesendet",class:"bg-blue-100 text-blue-700"},paid:{text:"Bezahlt",class:"bg-green-100 text-green-700"},overdue:{text:"Überfällig",class:"bg-red-100 text-red-700"},cancelled:{text:"Storniert",class:"bg-gray-100 text-gray-700"}}[l]||{text:l,class:"bg-gray-100"}}function r(l){return new Intl.NumberFormat("de-DE",{style:"currency",currency:"EUR"}).format(l||0)}return(l,e)=>(o(),a("div",B,[e[9]||(e[9]=t("div",{class:"flex justify-between items-center mb-6"},[t("div",null,[t("h1",{class:"text-2xl font-bold"},"💰 Abrechnung"),t("p",{class:"text-gray-500"},"Rechnungen & Sätze")])],-1)),t("div",z,[t("div",R,[e[2]||(e[2]=t("p",{class:"text-sm text-gray-500"},"Offene Rechnungen",-1)),t("p",D,n(d.value.open_invoices||0),1),t("p",$,n(r(d.value.open_amount)),1)]),t("div",E,[e[3]||(e[3]=t("p",{class:"text-sm text-gray-500"},"Überfällig",-1)),t("p",F,n(d.value.overdue_invoices||0),1),t("p",N,n(r(d.value.overdue_amount)),1)]),t("div",A,[e[4]||(e[4]=t("p",{class:"text-sm text-gray-500"},"Bezahlt (30 Tage)",-1)),t("p",K,n(r(d.value.paid_last_30_days)),1)]),t("div",L,[e[5]||(e[5]=t("p",{class:"text-sm text-gray-500"},"Stundensätze",-1)),t("p",T,n(x.value.length),1)])]),t("div",V,[t("button",{onClick:e[0]||(e[0]=s=>i.value="invoices"),class:_(["px-4 py-2 font-medium border-b-2 -mb-px",i.value==="invoices"?"border-blue-600 text-blue-600":"border-transparent"])}," Rechnungen ",2),t("button",{onClick:e[1]||(e[1]=s=>i.value="rates"),class:_(["px-4 py-2 font-medium border-b-2 -mb-px",i.value==="rates"?"border-blue-600 text-blue-600":"border-transparent"])}," Stundensätze ",2)]),g.value?(o(),a("div",j,"Laden...")):i.value==="invoices"?(o(),a("div",I,[y.value.length===0?(o(),a("div",M,[...e[6]||(e[6]=[t("p",{class:"text-4xl mb-4"},"📄",-1),t("p",null,"Keine Rechnungen vorhanden",-1)])])):(o(),a("div",P,[t("table",q,[e[7]||(e[7]=t("thead",{class:"bg-gray-50"},[t("tr",null,[t("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Nr."),t("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Kunde"),t("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Datum"),t("th",{class:"px-4 py-3 text-right text-xs font-medium text-gray-500 uppercase"},"Betrag"),t("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Status"),t("th",{class:"px-4 py-3 text-right text-xs font-medium text-gray-500 uppercase"},"Aktionen")])],-1)),t("tbody",G,[(o(!0),a(h,null,v(y.value,s=>(o(),a("tr",{key:s.id,class:"hover:bg-gray-50"},[t("td",O,n(s.invoice_number),1),t("td",U,n(s.customer_name),1),t("td",H,n(new Date(s.invoice_date).toLocaleDateString("de-DE")),1),t("td",J,n(r(s.total)),1),t("td",Q,[t("span",{class:_(["px-2 py-1 text-xs rounded",b(s.status).class])},n(b(s.status).text),3)]),t("td",W,[s.status==="draft"?(o(),a("button",{key:0,onClick:k=>f(s.id),class:"text-blue-600 hover:underline"},"Senden",8,X)):p("",!0),s.status==="sent"||s.status==="overdue"?(o(),a("button",{key:1,onClick:k=>w(s.id),class:"text-green-600 hover:underline"},"Bezahlt",8,Y)):p("",!0)])]))),128))])])]))])):i.value==="rates"?(o(),a("div",Z,[x.value.length===0?(o(),a("div",tt,[...e[8]||(e[8]=[t("p",{class:"text-4xl mb-4"},"💵",-1),t("p",null,"Keine Stundensätze definiert",-1)])])):(o(),a("div",et,[(o(!0),a(h,null,v(x.value,s=>(o(),a("div",{key:s.id,class:"bg-white rounded-lg shadow p-4"},[t("div",st,[t("div",null,[t("h3",at,n(s.name),1),t("p",nt,n(s.customer_name||"Allgemein"),1)]),s.is_default?(o(),a("span",ot,"Standard")):p("",!0)]),t("p",lt,n(r(s.amount)),1),t("p",dt,"pro "+n(s.rate_type==="hourly"?"Stunde":s.rate_type==="daily"?"Tag":"Monat"),1)]))),128))]))])):p("",!0)]))}});export{ct as default}; diff --git a/dist/assets/CustomersView-B4K9IT7m.js b/dist/assets/CustomersView-B4K9IT7m.js new file mode 100644 index 0000000..e525d76 --- /dev/null +++ b/dist/assets/CustomersView-B4K9IT7m.js @@ -0,0 +1 @@ +import{d as K,q as U,m as x,c as l,a as t,F as y,x as g,t as a,e as m,b as u,v as r,r as c,o as n,n as C}from"./index-CWxNv9Fc.js";const M={class:"p-6"},A={class:"flex justify-between items-center mb-6"},B={class:"flex gap-6"},F={class:"w-1/2"},$={key:0,class:"text-center py-12"},D={key:1,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-500"},E={key:2,class:"space-y-2"},L=["onClick"],N={class:"flex justify-between items-start"},z={class:"font-semibold"},I={class:"text-sm text-gray-500"},O={class:"mt-2 flex gap-4 text-xs text-gray-500"},S={key:0},T={key:1},q={class:"w-1/2"},P={key:0,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-400"},R={key:1,class:"bg-white rounded-lg shadow p-6"},W={class:"text-xl font-bold mb-4"},Z={class:"space-y-4"},G={class:"text-sm"},H={class:"text-sm"},J={key:0},Q={class:"text-sm font-semibold text-gray-500 mb-2"},X={class:"font-medium"},Y={key:0,class:"ml-2 text-green-600"},tt={key:1},et={class:"text-sm font-semibold text-gray-500 mb-2"},st={key:0,class:"fixed inset-0 bg-black/50 flex items-center justify-center z-50"},lt={class:"bg-white rounded-lg shadow-xl w-full max-w-lg p-6"},nt={class:"space-y-4"},at={class:"grid grid-cols-2 gap-4"},ot={class:"grid grid-cols-2 gap-4"},it={class:"flex justify-end space-x-2 mt-6"},mt=K({__name:"CustomersView",setup(dt){const v=c(!0),b=c([]),p=c(!1),o=c(null),i=c({company_name:"",contact_person:"",email:"",phone:"",address:"",city:"",postal_code:""});U(async()=>{await _()});async function _(){v.value=!0;try{const d=await x.get("/customers");b.value=d.data.customers||[]}catch(d){console.error(d)}v.value=!1}async function V(d){try{const e=await x.get(`/customers/${d}`);o.value=e.data}catch(e){console.error(e)}}async function j(){try{await x.post("/customers",i.value),p.value=!1,i.value={company_name:"",contact_person:"",email:"",phone:"",address:"",city:"",postal_code:""},await _()}catch(d){alert("Fehler: "+d.message)}}function f(d){return{active:{text:"Aktiv",class:"bg-green-100 text-green-700"},inactive:{text:"Inaktiv",class:"bg-gray-100 text-gray-700"},prospect:{text:"Interessent",class:"bg-blue-100 text-blue-700"}}[d]||{text:d,class:"bg-gray-100"}}return(d,e)=>{var k,h;return n(),l("div",M,[t("div",A,[e[9]||(e[9]=t("div",null,[t("h1",{class:"text-2xl font-bold"},"👥 Kunden / CRM"),t("p",{class:"text-gray-500"},"Kundenverwaltung & Verträge")],-1)),t("button",{onClick:e[0]||(e[0]=s=>p.value=!0),class:"btn btn-primary"},"+ Kunde")]),t("div",B,[t("div",F,[v.value?(n(),l("div",$,"Laden...")):b.value.length===0?(n(),l("div",D,[...e[10]||(e[10]=[t("p",{class:"text-4xl mb-4"},"👥",-1),t("p",null,"Keine Kunden vorhanden",-1)])])):(n(),l("div",E,[(n(!0),l(y,null,g(b.value,s=>{var w;return n(),l("div",{key:s.id,onClick:ut=>V(s.id),class:C(["bg-white rounded-lg shadow p-4 cursor-pointer hover:shadow-md transition-shadow",((w=o.value)==null?void 0:w.id)===s.id?"ring-2 ring-blue-500":""])},[t("div",N,[t("div",null,[t("h3",z,a(s.company_name),1),t("p",I,a(s.contact_person),1)]),t("span",{class:C(["px-2 py-1 text-xs rounded",f(s.status).class])},a(f(s.status).text),3)]),t("div",O,[s.active_contracts?(n(),l("span",S,"📄 "+a(s.active_contracts)+" Verträge",1)):m("",!0),s.object_count?(n(),l("span",T,"🏢 "+a(s.object_count)+" Objekte",1)):m("",!0)])],10,L)}),128))]))]),t("div",q,[o.value?(n(),l("div",R,[t("h2",W,a(o.value.company_name),1),t("div",Z,[t("div",null,[e[12]||(e[12]=t("h3",{class:"text-sm font-semibold text-gray-500 mb-2"},"Kontakt",-1)),t("p",null,a(o.value.contact_person),1),t("p",G,"📧 "+a(o.value.email||"-"),1),t("p",H,"📞 "+a(o.value.phone||"-"),1)]),t("div",null,[e[13]||(e[13]=t("h3",{class:"text-sm font-semibold text-gray-500 mb-2"},"Adresse",-1)),t("p",null,a(o.value.address),1),t("p",null,a(o.value.postal_code)+" "+a(o.value.city),1)]),(k=o.value.contracts)!=null&&k.length?(n(),l("div",J,[t("h3",Q,"Verträge ("+a(o.value.contracts.length)+")",1),(n(!0),l(y,null,g(o.value.contracts,s=>(n(),l("div",{key:s.id,class:"text-sm p-2 bg-gray-50 rounded mb-1"},[t("span",X,a(s.title||s.contract_number),1),s.monthly_value?(n(),l("span",Y,a(s.monthly_value)+"€/Monat",1)):m("",!0)]))),128))])):m("",!0),(h=o.value.objects)!=null&&h.length?(n(),l("div",tt,[t("h3",et,"Objekte ("+a(o.value.objects.length)+")",1),(n(!0),l(y,null,g(o.value.objects,s=>(n(),l("div",{key:s.id,class:"text-sm"}," 🏢 "+a(s.name),1))),128))])):m("",!0)])])):(n(),l("div",P,[...e[11]||(e[11]=[t("p",null,"Wähle einen Kunden aus",-1)])]))])]),p.value?(n(),l("div",st,[t("div",lt,[e[21]||(e[21]=t("h2",{class:"text-xl font-bold mb-4"},"Neuer Kunde",-1)),t("div",nt,[t("div",null,[e[14]||(e[14]=t("label",{class:"block text-sm font-medium mb-1"},"Firmenname *",-1)),u(t("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>i.value.company_name=s),class:"input"},null,512),[[r,i.value.company_name]])]),t("div",null,[e[15]||(e[15]=t("label",{class:"block text-sm font-medium mb-1"},"Ansprechpartner",-1)),u(t("input",{"onUpdate:modelValue":e[2]||(e[2]=s=>i.value.contact_person=s),class:"input"},null,512),[[r,i.value.contact_person]])]),t("div",at,[t("div",null,[e[16]||(e[16]=t("label",{class:"block text-sm font-medium mb-1"},"E-Mail",-1)),u(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>i.value.email=s),type:"email",class:"input"},null,512),[[r,i.value.email]])]),t("div",null,[e[17]||(e[17]=t("label",{class:"block text-sm font-medium mb-1"},"Telefon",-1)),u(t("input",{"onUpdate:modelValue":e[4]||(e[4]=s=>i.value.phone=s),class:"input"},null,512),[[r,i.value.phone]])])]),t("div",null,[e[18]||(e[18]=t("label",{class:"block text-sm font-medium mb-1"},"Adresse",-1)),u(t("input",{"onUpdate:modelValue":e[5]||(e[5]=s=>i.value.address=s),class:"input"},null,512),[[r,i.value.address]])]),t("div",ot,[t("div",null,[e[19]||(e[19]=t("label",{class:"block text-sm font-medium mb-1"},"PLZ",-1)),u(t("input",{"onUpdate:modelValue":e[6]||(e[6]=s=>i.value.postal_code=s),class:"input"},null,512),[[r,i.value.postal_code]])]),t("div",null,[e[20]||(e[20]=t("label",{class:"block text-sm font-medium mb-1"},"Stadt",-1)),u(t("input",{"onUpdate:modelValue":e[7]||(e[7]=s=>i.value.city=s),class:"input"},null,512),[[r,i.value.city]])])])]),t("div",it,[t("button",{onClick:e[8]||(e[8]=s=>p.value=!1),class:"btn"},"Abbrechen"),t("button",{onClick:j,class:"btn btn-primary"},"Erstellen")])])])):m("",!0)])}}});export{mt as default}; diff --git a/dist/assets/DashboardView-DXGmhgHs.js b/dist/assets/DashboardView-D1ilHHiP.js similarity index 98% rename from dist/assets/DashboardView-DXGmhgHs.js rename to dist/assets/DashboardView-D1ilHHiP.js index ee372e7..c69d136 100644 --- a/dist/assets/DashboardView-DXGmhgHs.js +++ b/dist/assets/DashboardView-D1ilHHiP.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-OvQoqblD.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-CWxNv9Fc.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/DocumentsView-cD_00o40.js b/dist/assets/DocumentsView-cD_00o40.js new file mode 100644 index 0000000..b6558a0 --- /dev/null +++ b/dist/assets/DocumentsView-cD_00o40.js @@ -0,0 +1 @@ +import{d as w,q as D,m as u,c as l,a as e,t as o,F as y,x as b,e as d,b as c,v as f,s as B,B as C,r,o as n}from"./index-CWxNv9Fc.js";const V={class:"p-6"},U={class:"flex justify-between items-center mb-6"},j={key:0,class:"bg-yellow-50 border-l-4 border-yellow-400 p-4 mb-6"},M={class:"flex"},F={class:"font-semibold text-yellow-800"},R={class:"mt-2 space-y-2"},$=["onClick"],L={key:1,class:"text-center py-12"},N={key:2,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-500"},P={key:3,class:"grid md:grid-cols-2 lg:grid-cols-3 gap-4"},z={class:"flex items-start space-x-3"},A={class:"text-2xl"},E={class:"flex-1 min-w-0"},K={class:"font-semibold truncate"},S={class:"text-sm text-gray-500"},T={key:0,class:"text-sm text-gray-400 mt-1 line-clamp-2"},q={class:"mt-3 flex items-center justify-between text-xs"},H={key:0,class:"px-2 py-1 bg-red-100 text-red-700 rounded"},W={key:1,class:"text-green-600"},G={key:2,class:"text-orange-600"},I=["href"],J={key:4,class:"fixed inset-0 bg-black/50 flex items-center justify-center z-50"},O={class:"bg-white rounded-lg shadow-xl w-full max-w-md p-6"},Q={class:"space-y-4"},X=["value"],Y={class:"flex items-center"},Z={class:"flex justify-end space-x-2 mt-6"},le=w({__name:"DocumentsView",setup(ee){const v=r(!0),g=r([]),_=r([]),m=r([]),p=r(!1),a=r({title:"",description:"",category_id:"",file_url:"",is_mandatory:!1});D(async()=>{await x()});async function x(){v.value=!0;try{const[i,t,s]=await Promise.all([u.get("/documents"),u.get("/documents/categories"),u.get("/documents/pending/list")]);g.value=i.data.documents||[],_.value=t.data.categories||[],m.value=s.data.documents||[]}catch(i){console.error(i)}v.value=!1}async function k(i){try{await u.post(`/documents/${i}/acknowledge`,{}),await x()}catch(t){alert("Fehler: "+t.message)}}async function h(){try{await u.post("/documents",a.value),p.value=!1,a.value={title:"",description:"",category_id:"",file_url:"",is_mandatory:!1},await x()}catch(i){alert("Fehler: "+i.message)}}return(i,t)=>(n(),l("div",V,[e("div",U,[t[7]||(t[7]=e("div",null,[e("h1",{class:"text-2xl font-bold"},"📁 Dokumente"),e("p",{class:"text-gray-500"},"Unterlagen & Bestätigungen")],-1)),e("button",{onClick:t[0]||(t[0]=s=>p.value=!0),class:"btn btn-primary"},"+ Dokument")]),m.value.length>0?(n(),l("div",j,[e("div",M,[t[8]||(t[8]=e("span",{class:"text-yellow-600 text-xl mr-3"},"⚠️",-1)),e("div",null,[e("h3",F,o(m.value.length)+" Dokument(e) zu bestätigen",1),e("div",R,[(n(!0),l(y,null,b(m.value,s=>(n(),l("div",{key:s.id,class:"flex items-center justify-between bg-white p-2 rounded"},[e("span",null,o(s.category_icon)+" "+o(s.title),1),e("button",{onClick:te=>k(s.id),class:"text-sm text-blue-600 hover:underline"},"Bestätigen",8,$)]))),128))])])])])):d("",!0),v.value?(n(),l("div",L,"Laden...")):g.value.length===0?(n(),l("div",N,[...t[9]||(t[9]=[e("p",{class:"text-4xl mb-4"},"📄",-1),e("p",null,"Keine Dokumente vorhanden",-1)])])):(n(),l("div",P,[(n(!0),l(y,null,b(g.value,s=>(n(),l("div",{key:s.id,class:"bg-white rounded-lg shadow p-4 hover:shadow-md transition-shadow"},[e("div",z,[e("span",A,o(s.category_icon||"📄"),1),e("div",E,[e("h3",K,o(s.title),1),e("p",S,o(s.category_name),1),s.description?(n(),l("p",T,o(s.description),1)):d("",!0)])]),e("div",q,[s.is_mandatory?(n(),l("span",H,"Pflicht")):d("",!0),s.acknowledged?(n(),l("span",W,"✓ Bestätigt")):s.is_mandatory?(n(),l("span",G,"Ausstehend")):d("",!0)]),s.file_url?(n(),l("a",{key:0,href:s.file_url,target:"_blank",class:"mt-3 block text-center text-sm text-blue-600 hover:underline"}," 📥 Herunterladen ",8,I)):d("",!0)]))),128))])),p.value?(n(),l("div",J,[e("div",O,[t[16]||(t[16]=e("h2",{class:"text-xl font-bold mb-4"},"Neues Dokument",-1)),e("div",Q,[e("div",null,[t[10]||(t[10]=e("label",{class:"block text-sm font-medium mb-1"},"Titel *",-1)),c(e("input",{"onUpdate:modelValue":t[1]||(t[1]=s=>a.value.title=s),class:"input"},null,512),[[f,a.value.title]])]),e("div",null,[t[12]||(t[12]=e("label",{class:"block text-sm font-medium mb-1"},"Kategorie",-1)),c(e("select",{"onUpdate:modelValue":t[2]||(t[2]=s=>a.value.category_id=s),class:"input"},[t[11]||(t[11]=e("option",{value:""},"-- Wählen --",-1)),(n(!0),l(y,null,b(_.value,s=>(n(),l("option",{key:s.id,value:s.id},o(s.icon)+" "+o(s.name),9,X))),128))],512),[[B,a.value.category_id]])]),e("div",null,[t[13]||(t[13]=e("label",{class:"block text-sm font-medium mb-1"},"Datei-URL",-1)),c(e("input",{"onUpdate:modelValue":t[3]||(t[3]=s=>a.value.file_url=s),class:"input",placeholder:"https://..."},null,512),[[f,a.value.file_url]])]),e("div",null,[t[14]||(t[14]=e("label",{class:"block text-sm font-medium mb-1"},"Beschreibung",-1)),c(e("textarea",{"onUpdate:modelValue":t[4]||(t[4]=s=>a.value.description=s),rows:"2",class:"input"},null,512),[[f,a.value.description]])]),e("label",Y,[c(e("input",{"onUpdate:modelValue":t[5]||(t[5]=s=>a.value.is_mandatory=s),type:"checkbox",class:"mr-2"},null,512),[[C,a.value.is_mandatory]]),t[15]||(t[15]=e("span",{class:"text-sm"},"Pflichtdokument (Bestätigung erforderlich)",-1))])]),e("div",Z,[e("button",{onClick:t[6]||(t[6]=s=>p.value=!1),class:"btn"},"Abbrechen"),e("button",{onClick:h,class:"btn btn-primary"},"Erstellen")])])])):d("",!0)]))}});export{le as default}; diff --git a/dist/assets/HelpView-zL_K4Iai.js b/dist/assets/HelpView-1PeoZaC4.js similarity index 99% rename from dist/assets/HelpView-zL_K4Iai.js rename to dist/assets/HelpView-1PeoZaC4.js index 300ec78..8135cad 100644 --- a/dist/assets/HelpView-zL_K4Iai.js +++ b/dist/assets/HelpView-1PeoZaC4.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-OvQoqblD.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-CWxNv9Fc.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/IncidentsView-DPo8woI1.js b/dist/assets/IncidentsView-DPo8woI1.js new file mode 100644 index 0000000..58a90c5 --- /dev/null +++ b/dist/assets/IncidentsView-DPo8woI1.js @@ -0,0 +1 @@ +import{d as V,q as j,m as x,c as n,a as e,F as f,x as _,b as u,v as p,s as B,e as v,r,o,t as l,n as w}from"./index-CWxNv9Fc.js";const C={class:"p-6"},D={class:"flex justify-between items-center mb-6"},M={key:0,class:"text-center py-12"},S={key:1,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-500"},G={key:2,class:"space-y-4"},I={class:"flex justify-between items-start"},K={class:"flex items-start space-x-3"},U={class:"text-2xl"},z={class:"font-semibold"},F={class:"text-sm text-gray-500"},L={class:"text-sm text-gray-400 mt-1"},O={class:"flex flex-col items-end space-y-1"},A={key:0,class:"mt-3 text-sm text-gray-600"},E={class:"mt-3 flex items-center text-xs text-gray-500"},N={key:0,class:"ml-4"},R={key:3,class:"fixed inset-0 bg-black/50 flex items-center justify-center z-50"},T={class:"bg-white rounded-lg shadow-xl w-full max-w-lg p-6"},$={class:"space-y-4"},q=["value"],P={class:"flex justify-end space-x-2 mt-6"},J=V({__name:"IncidentsView",setup(W){const c=r(!0),m=r([]),g=r([]),d=r(!1),i=r({title:"",description:"",category_id:"",severity:2,object_id:""});j(async()=>{await y()});async function y(){c.value=!0;try{const[a,t]=await Promise.all([x.get("/incidents"),x.get("/incidents/categories")]);m.value=a.data.incidents||[],g.value=t.data.categories||[]}catch(a){console.error(a)}c.value=!1}async function k(){try{await x.post("/incidents",i.value),d.value=!1,i.value={title:"",description:"",category_id:"",severity:2,object_id:""},await y()}catch(a){alert("Fehler: "+a.message)}}function h(a){return a>=4?"bg-red-100 text-red-700":a>=3?"bg-orange-100 text-orange-700":"bg-yellow-100 text-yellow-700"}function b(a){return{open:{text:"Offen",class:"bg-red-100 text-red-700"},in_progress:{text:"In Bearbeitung",class:"bg-yellow-100 text-yellow-700"},resolved:{text:"Gelöst",class:"bg-green-100 text-green-700"},closed:{text:"Geschlossen",class:"bg-gray-100 text-gray-700"}}[a]||{text:a,class:"bg-gray-100"}}return(a,t)=>(o(),n("div",C,[e("div",D,[t[6]||(t[6]=e("div",null,[e("h1",{class:"text-2xl font-bold"},"🚨 Vorfallberichte"),e("p",{class:"text-gray-500"},"Incidents dokumentieren und verfolgen")],-1)),e("button",{onClick:t[0]||(t[0]=s=>d.value=!0),class:"btn btn-primary"},"+ Vorfall melden")]),c.value?(o(),n("div",M,"Laden...")):m.value.length===0?(o(),n("div",S,[...t[7]||(t[7]=[e("p",{class:"text-4xl mb-4"},"✅",-1),e("p",null,"Keine Vorfälle gemeldet",-1)])])):(o(),n("div",G,[(o(!0),n(f,null,_(m.value,s=>(o(),n("div",{key:s.id,class:"bg-white rounded-lg shadow p-4"},[e("div",I,[e("div",K,[e("span",U,l(s.category_icon||"📋"),1),e("div",null,[e("h3",z,l(s.title),1),e("p",F,l(s.category_name)+" · "+l(s.object_name||"Ohne Objekt"),1),e("p",L,l(new Date(s.occurred_at).toLocaleString("de-DE")),1)])]),e("div",O,[e("span",{class:w(["px-2 py-1 text-xs rounded",b(s.status).class])},l(b(s.status).text),3),e("span",{class:w(["px-2 py-1 text-xs rounded",h(s.severity)])}," Stufe "+l(s.severity),3)])]),s.description?(o(),n("p",A,l(s.description),1)):v("",!0),e("div",E,[e("span",null,"Gemeldet von "+l(s.reporter_first)+" "+l(s.reporter_last),1),s.attachment_count?(o(),n("span",N,"📎 "+l(s.attachment_count)+" Anhänge",1)):v("",!0)])]))),128))])),d.value?(o(),n("div",R,[e("div",T,[t[14]||(t[14]=e("h2",{class:"text-xl font-bold mb-4"},"Vorfall melden",-1)),e("div",$,[e("div",null,[t[8]||(t[8]=e("label",{class:"block text-sm font-medium mb-1"},"Titel *",-1)),u(e("input",{"onUpdate:modelValue":t[1]||(t[1]=s=>i.value.title=s),class:"input",placeholder:"Kurze Beschreibung"},null,512),[[p,i.value.title]])]),e("div",null,[t[10]||(t[10]=e("label",{class:"block text-sm font-medium mb-1"},"Kategorie",-1)),u(e("select",{"onUpdate:modelValue":t[2]||(t[2]=s=>i.value.category_id=s),class:"input"},[t[9]||(t[9]=e("option",{value:""},"-- Wählen --",-1)),(o(!0),n(f,null,_(g.value,s=>(o(),n("option",{key:s.id,value:s.id},l(s.icon)+" "+l(s.name),9,q))),128))],512),[[B,i.value.category_id]])]),e("div",null,[t[11]||(t[11]=e("label",{class:"block text-sm font-medium mb-1"},"Schweregrad (1-5)",-1)),u(e("input",{"onUpdate:modelValue":t[3]||(t[3]=s=>i.value.severity=s),type:"range",min:"1",max:"5",class:"w-full"},null,512),[[p,i.value.severity,void 0,{number:!0}]]),t[12]||(t[12]=e("div",{class:"flex justify-between text-xs text-gray-500"},[e("span",null,"Gering"),e("span",null,"Kritisch")],-1))]),e("div",null,[t[13]||(t[13]=e("label",{class:"block text-sm font-medium mb-1"},"Beschreibung",-1)),u(e("textarea",{"onUpdate:modelValue":t[4]||(t[4]=s=>i.value.description=s),rows:"3",class:"input",placeholder:"Details..."},null,512),[[p,i.value.description]])])]),e("div",P,[e("button",{onClick:t[5]||(t[5]=s=>d.value=!1),class:"btn"},"Abbrechen"),e("button",{onClick:k,class:"btn btn-primary"},"Melden")])])])):v("",!0)]))}});export{J as default}; diff --git a/dist/assets/LoginView-D70AJu6A.js b/dist/assets/LoginView-D8QH8UMb.js similarity index 98% rename from dist/assets/LoginView-D70AJu6A.js rename to dist/assets/LoginView-D8QH8UMb.js index 56fb1bb..c877762 100644 --- a/dist/assets/LoginView-D70AJu6A.js +++ b/dist/assets/LoginView-D8QH8UMb.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-OvQoqblD.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-CWxNv9Fc.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-BBWB_hpb.js b/dist/assets/ModulesView-BNzetqIV.js similarity index 98% rename from dist/assets/ModulesView-BBWB_hpb.js rename to dist/assets/ModulesView-BNzetqIV.js index 1d7bfd6..86fb0db 100644 --- a/dist/assets/ModulesView-BBWB_hpb.js +++ b/dist/assets/ModulesView-BNzetqIV.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-OvQoqblD.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-CWxNv9Fc.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-BhTJxexl.js b/dist/assets/ObjectsView-BhTJxexl.js deleted file mode 100644 index 5814d93..0000000 --- a/dist/assets/ObjectsView-BhTJxexl.js +++ /dev/null @@ -1 +0,0 @@ -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-OvQoqblD.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/ObjectsView-CzlgFF9j.js b/dist/assets/ObjectsView-CzlgFF9j.js new file mode 100644 index 0000000..af53d5b --- /dev/null +++ b/dist/assets/ObjectsView-CzlgFF9j.js @@ -0,0 +1 @@ +import{d as N,q as M,m as _,c as l,a as t,F as r,x as u,t as a,p as h,e as p,b as v,v as g,r as c,o as n,n as f}from"./index-CWxNv9Fc.js";const U={class:"p-6"},$={class:"flex justify-between items-center mb-6"},z={class:"flex gap-6"},F={class:"w-1/2"},L={key:0,class:"text-center py-12"},S={key:1,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-500"},E={key:2,class:"space-y-2"},T=["onClick"],q={class:"flex justify-between items-start"},H={class:"font-semibold"},I={class:"text-sm text-gray-500"},P={class:"text-sm text-gray-400"},W={key:0,class:"mt-2 text-xs text-gray-500"},Z={class:"w-1/2"},G={key:0,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-400"},J={key:1,class:"bg-white rounded-lg shadow p-6"},Q={class:"text-xl font-bold mb-1"},R={class:"text-gray-500 mb-4"},X={class:"space-y-6"},Y={class:"text-sm font-semibold text-gray-500 mb-2 flex items-center"},tt={class:"ml-2 text-xs bg-gray-100 px-2 py-0.5 rounded"},et={key:0,class:"space-y-2"},st={class:"font-medium"},lt={class:"text-gray-400 font-normal"},nt={class:"text-gray-600"},at={key:1,class:"text-sm text-gray-400"},ot={class:"text-sm font-semibold text-gray-500 mb-2 flex items-center"},it={class:"ml-2 text-xs bg-gray-100 px-2 py-0.5 rounded"},dt={key:0,class:"space-y-2"},rt={class:"font-medium"},ut={class:"text-gray-600"},ct={key:1,class:"text-sm text-gray-400"},mt={key:0},pt={class:"flex flex-wrap gap-2"},vt=["href"],gt={key:1},xt={class:"flex flex-wrap gap-2"},yt={key:0,class:"fixed inset-0 bg-black/50 flex items-center justify-center z-50"},bt={class:"bg-white rounded-lg shadow-xl w-full max-w-md p-6"},_t={class:"space-y-4"},ht={class:"grid grid-cols-2 gap-4"},ft={class:"flex justify-end space-x-2 mt-6"},Ot=N({__name:"ObjectsView",setup(kt){const x=c(!0),y=c([]),o=c(null),m=c(!1),d=c({name:"",address:"",city:"",postal_code:"",customer_id:""});M(async()=>{await k()});async function k(){x.value=!0;try{const i=await _.get("/objects");y.value=i.data.objects||[]}catch(i){console.error(i)}x.value=!1}async function D(i){try{const e=await _.get(`/objects/${i}`);o.value=e.data}catch(e){console.error(e)}}async function K(){try{await _.post("/objects",d.value),m.value=!1,d.value={name:"",address:"",city:"",postal_code:"",customer_id:""},await k()}catch(i){alert("Fehler: "+i.message)}}function b(i){return{active:{text:"Aktiv",class:"bg-green-100 text-green-700",icon:"🟢"},inactive:{text:"Inaktiv",class:"bg-gray-100 text-gray-700",icon:"⚪"},pending:{text:"Ausstehend",class:"bg-yellow-100 text-yellow-700",icon:"🟡"}}[i]||{text:i,class:"bg-gray-100",icon:""}}return(i,e)=>{var w,C,O,A,V,j;return n(),l("div",U,[t("div",$,[e[6]||(e[6]=t("div",null,[t("h1",{class:"text-2xl font-bold"},"🏢 Objektverwaltung"),t("p",{class:"text-gray-500"},"Standorte, Kontakte & Anweisungen")],-1)),t("button",{onClick:e[0]||(e[0]=s=>m.value=!0),class:"btn btn-primary"},"+ Objekt")]),t("div",z,[t("div",F,[x.value?(n(),l("div",L,"Laden...")):y.value.length===0?(n(),l("div",S,[...e[7]||(e[7]=[t("p",{class:"text-4xl mb-4"},"🏢",-1),t("p",null,"Keine Objekte vorhanden",-1)])])):(n(),l("div",E,[(n(!0),l(r,null,u(y.value,s=>{var B;return n(),l("div",{key:s.id,onClick:wt=>D(s.id),class:f(["bg-white rounded-lg shadow p-4 cursor-pointer hover:shadow-md transition-shadow",((B=o.value)==null?void 0:B.id)===s.id?"ring-2 ring-blue-500":""])},[t("div",q,[t("div",null,[t("h3",H,a(s.name),1),t("p",I,a(s.address),1),t("p",P,a(s.postal_code)+" "+a(s.city),1)]),t("span",{class:f(["px-2 py-1 text-xs rounded",b(s.status).class])},a(b(s.status).icon)+" "+a(b(s.status).text),3)]),s.customer_name?(n(),l("div",W," 👤 "+a(s.customer_name),1)):p("",!0)],10,T)}),128))]))]),t("div",Z,[o.value?(n(),l("div",J,[t("h2",Q,a(o.value.name),1),t("p",R,a(o.value.address)+", "+a(o.value.postal_code)+" "+a(o.value.city),1),t("div",X,[t("div",null,[t("h3",Y,[e[9]||(e[9]=h(" 📞 Ansprechpartner ",-1)),t("span",tt,a(((w=o.value.contacts)==null?void 0:w.length)||0),1)]),(C=o.value.contacts)!=null&&C.length?(n(),l("div",et,[(n(!0),l(r,null,u(o.value.contacts,s=>(n(),l("div",{key:s.id,class:"p-2 bg-gray-50 rounded text-sm"},[t("div",st,[h(a(s.name)+" ",1),t("span",lt,a(s.role),1)]),t("div",nt,"📞 "+a(s.phone)+" · 📧 "+a(s.email),1)]))),128))])):(n(),l("p",at,"Keine Kontakte hinterlegt"))]),t("div",null,[t("h3",ot,[e[10]||(e[10]=h(" 📋 Anweisungen ",-1)),t("span",it,a(((O=o.value.instructions)==null?void 0:O.length)||0),1)]),(A=o.value.instructions)!=null&&A.length?(n(),l("div",dt,[(n(!0),l(r,null,u(o.value.instructions,s=>(n(),l("div",{key:s.id,class:f(["p-2 rounded text-sm",s.priority==="critical"?"bg-red-50 border-l-4 border-red-500":s.priority==="high"?"bg-orange-50 border-l-4 border-orange-500":"bg-gray-50"])},[t("div",rt,a(s.title),1),t("p",ut,a(s.content),1)],2))),128))])):(n(),l("p",ct,"Keine Anweisungen hinterlegt"))]),(V=o.value.documents)!=null&&V.length?(n(),l("div",mt,[e[11]||(e[11]=t("h3",{class:"text-sm font-semibold text-gray-500 mb-2"},"📁 Dokumente",-1)),t("div",pt,[(n(!0),l(r,null,u(o.value.documents,s=>(n(),l("a",{key:s.id,href:s.file_url,target:"_blank",class:"px-2 py-1 bg-blue-50 text-blue-700 rounded text-sm hover:bg-blue-100"},a(s.file_name||"Dokument"),9,vt))),128))])])):p("",!0),(j=o.value.checkpoints)!=null&&j.length?(n(),l("div",gt,[e[12]||(e[12]=t("h3",{class:"text-sm font-semibold text-gray-500 mb-2"},"📍 Checkpoints",-1)),t("div",xt,[(n(!0),l(r,null,u(o.value.checkpoints,s=>(n(),l("span",{key:s.id,class:"px-2 py-1 bg-gray-100 rounded text-sm"},a(s.name),1))),128))])])):p("",!0)])])):(n(),l("div",G,[...e[8]||(e[8]=[t("p",null,"Wähle ein Objekt aus",-1)])]))])]),m.value?(n(),l("div",yt,[t("div",bt,[e[17]||(e[17]=t("h2",{class:"text-xl font-bold mb-4"},"Neues Objekt",-1)),t("div",_t,[t("div",null,[e[13]||(e[13]=t("label",{class:"block text-sm font-medium mb-1"},"Name *",-1)),v(t("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>d.value.name=s),class:"input",placeholder:"z.B. Hauptgebäude Musterstraße"},null,512),[[g,d.value.name]])]),t("div",null,[e[14]||(e[14]=t("label",{class:"block text-sm font-medium mb-1"},"Adresse",-1)),v(t("input",{"onUpdate:modelValue":e[2]||(e[2]=s=>d.value.address=s),class:"input"},null,512),[[g,d.value.address]])]),t("div",ht,[t("div",null,[e[15]||(e[15]=t("label",{class:"block text-sm font-medium mb-1"},"PLZ",-1)),v(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>d.value.postal_code=s),class:"input"},null,512),[[g,d.value.postal_code]])]),t("div",null,[e[16]||(e[16]=t("label",{class:"block text-sm font-medium mb-1"},"Stadt",-1)),v(t("input",{"onUpdate:modelValue":e[4]||(e[4]=s=>d.value.city=s),class:"input"},null,512),[[g,d.value.city]])])])]),t("div",ft,[t("button",{onClick:e[5]||(e[5]=s=>m.value=!1),class:"btn"},"Abbrechen"),t("button",{onClick:K,class:"btn btn-primary"},"Erstellen")])])])):p("",!0)])}}});export{Ot as default}; diff --git a/dist/assets/OrderDetailView-DVidF9zv.js b/dist/assets/OrderDetailView-CrMXW-i2.js similarity index 98% rename from dist/assets/OrderDetailView-DVidF9zv.js rename to dist/assets/OrderDetailView-CrMXW-i2.js index 701b9a4..46ee352 100644 --- a/dist/assets/OrderDetailView-DVidF9zv.js +++ b/dist/assets/OrderDetailView-CrMXW-i2.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-OvQoqblD.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-CWxNv9Fc.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-CoEtoYmQ.js b/dist/assets/OrdersView-Cykxo3M3.js similarity index 99% rename from dist/assets/OrdersView-CoEtoYmQ.js rename to dist/assets/OrdersView-Cykxo3M3.js index 603f252..182d633 100644 --- a/dist/assets/OrdersView-CoEtoYmQ.js +++ b/dist/assets/OrdersView-Cykxo3M3.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-OvQoqblD.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-CWxNv9Fc.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-BTqY1GtJ.js b/dist/assets/PartnershipsView-BTiY9iQS.js similarity index 99% rename from dist/assets/PartnershipsView-BTqY1GtJ.js rename to dist/assets/PartnershipsView-BTiY9iQS.js index ba2c4e1..df46761 100644 --- a/dist/assets/PartnershipsView-BTqY1GtJ.js +++ b/dist/assets/PartnershipsView-BTiY9iQS.js @@ -1 +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-OvQoqblD.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}; +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-CWxNv9Fc.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/PatrolsView-CE7IkVbv.js b/dist/assets/PatrolsView-CE7IkVbv.js new file mode 100644 index 0000000..78124ad --- /dev/null +++ b/dist/assets/PatrolsView-CE7IkVbv.js @@ -0,0 +1 @@ +import{d as h,q as k,m,c as s,a as t,n as u,t as a,F as g,x as _,e as v,r as d,o as n}from"./index-CWxNv9Fc.js";const f={class:"p-6"},w={class:"flex space-x-1 border-b mb-6"},C={key:0,class:"text-center py-12"},R={key:1},j={key:0,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-500"},M={key:1,class:"grid md:grid-cols-2 lg:grid-cols-3 gap-4"},D={class:"flex justify-between items-start"},B={class:"font-semibold"},E={class:"text-sm text-gray-500"},K={class:"text-xs text-gray-400 mt-1"},L={class:"text-2xl"},T={class:"mt-3 p-2 bg-gray-100 rounded text-xs font-mono break-all"},V={key:2},$={key:0,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-500"},A={key:1,class:"space-y-4"},F={class:"flex justify-between items-start"},N={class:"font-semibold"},P={class:"text-sm text-gray-500"},S={class:"mt-3 flex gap-4 text-sm text-gray-600"},q={key:0},z={key:1},I={key:3},O={key:0,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-500"},Q={key:1,class:"bg-white rounded-lg shadow overflow-hidden"},W={class:"min-w-full divide-y divide-gray-200"},Z={class:"divide-y divide-gray-200"},G={class:"px-4 py-3 text-sm"},H={class:"px-4 py-3 text-sm"},J={class:"px-4 py-3 text-sm"},U={class:"px-4 py-3 text-sm text-gray-500"},tt=h({__name:"PatrolsView",setup(X){const p=d(!0),r=d([]),c=d([]),x=d([]),l=d("checkpoints");k(async()=>{await y()});async function y(){p.value=!0;try{const[i,o,e]=await Promise.all([m.get("/patrols/checkpoints"),m.get("/patrols/routes"),m.get("/patrols/logs")]);r.value=i.data.checkpoints||[],c.value=o.data.routes||[],x.value=e.data.logs||[]}catch(i){console.error(i)}p.value=!1}function b(i){return new Date(i).toLocaleTimeString("de-DE",{hour:"2-digit",minute:"2-digit"})}return(i,o)=>(n(),s("div",f,[o[7]||(o[7]=t("div",{class:"flex justify-between items-center mb-6"},[t("div",null,[t("h1",{class:"text-2xl font-bold"},"📍 Wächterkontrolle"),t("p",{class:"text-gray-500"},"Checkpoints, Routen & Rundgänge")])],-1)),t("div",w,[t("button",{onClick:o[0]||(o[0]=e=>l.value="checkpoints"),class:u(["px-4 py-2 font-medium border-b-2 -mb-px",l.value==="checkpoints"?"border-blue-600 text-blue-600":"border-transparent"])}," Checkpoints ("+a(r.value.length)+") ",3),t("button",{onClick:o[1]||(o[1]=e=>l.value="routes"),class:u(["px-4 py-2 font-medium border-b-2 -mb-px",l.value==="routes"?"border-blue-600 text-blue-600":"border-transparent"])}," Routen ("+a(c.value.length)+") ",3),t("button",{onClick:o[2]||(o[2]=e=>l.value="logs"),class:u(["px-4 py-2 font-medium border-b-2 -mb-px",l.value==="logs"?"border-blue-600 text-blue-600":"border-transparent"])}," Rundgänge ",2)]),p.value?(n(),s("div",C,"Laden...")):l.value==="checkpoints"?(n(),s("div",R,[r.value.length===0?(n(),s("div",j,[...o[3]||(o[3]=[t("p",{class:"text-4xl mb-4"},"📍",-1),t("p",null,"Keine Checkpoints vorhanden",-1),t("p",{class:"text-sm mt-2"},"Erstelle Checkpoints mit QR-Codes für Rundgänge",-1)])])):(n(),s("div",M,[(n(!0),s(g,null,_(r.value,e=>(n(),s("div",{key:e.id,class:"bg-white rounded-lg shadow p-4"},[t("div",D,[t("div",null,[t("h3",B,a(e.name),1),t("p",E,a(e.object_name),1),t("p",K,a(e.location_description),1)]),t("span",L,a(e.checkpoint_type==="nfc"?"📶":"📱"),1)]),t("div",T,a(e.code),1)]))),128))]))])):l.value==="routes"?(n(),s("div",V,[c.value.length===0?(n(),s("div",$,[...o[4]||(o[4]=[t("p",{class:"text-4xl mb-4"},"🗺️",-1),t("p",null,"Keine Routen definiert",-1)])])):(n(),s("div",A,[(n(!0),s(g,null,_(c.value,e=>(n(),s("div",{key:e.id,class:"bg-white rounded-lg shadow p-4"},[t("div",F,[t("div",null,[t("h3",N,a(e.name),1),t("p",P,a(e.object_name),1)]),t("span",{class:u(["px-2 py-1 text-xs rounded",e.is_active?"bg-green-100 text-green-700":"bg-gray-100"])},a(e.is_active?"Aktiv":"Inaktiv"),3)]),t("div",S,[t("span",null,"📍 "+a(e.checkpoint_count||0)+" Checkpoints",1),e.time_limit_minutes?(n(),s("span",q,"⏱️ Max "+a(e.time_limit_minutes)+" Min",1)):v("",!0),e.interval_minutes?(n(),s("span",z,"🔄 Alle "+a(e.interval_minutes)+" Min",1)):v("",!0)])]))),128))]))])):l.value==="logs"?(n(),s("div",I,[x.value.length===0?(n(),s("div",O,[...o[5]||(o[5]=[t("p",{class:"text-4xl mb-4"},"📋",-1),t("p",null,"Keine Rundgänge heute",-1)])])):(n(),s("div",Q,[t("table",W,[o[6]||(o[6]=t("thead",{class:"bg-gray-50"},[t("tr",null,[t("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Zeit"),t("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Mitarbeiter"),t("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Checkpoint"),t("th",{class:"px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"},"Objekt")])],-1)),t("tbody",Z,[(n(!0),s(g,null,_(x.value,e=>(n(),s("tr",{key:e.id,class:"hover:bg-gray-50"},[t("td",G,a(b(e.scanned_at)),1),t("td",H,a(e.first_name)+" "+a(e.last_name),1),t("td",J,a(e.checkpoint_name),1),t("td",U,a(e.object_name),1)]))),128))])])]))])):v("",!0)]))}});export{tt as default}; diff --git a/dist/assets/QualificationsView-BIlDcj-b.js b/dist/assets/QualificationsView-BbIklgwE.js similarity index 99% rename from dist/assets/QualificationsView-BIlDcj-b.js rename to dist/assets/QualificationsView-BbIklgwE.js index ad2f2c2..4df47c8 100644 --- a/dist/assets/QualificationsView-BIlDcj-b.js +++ b/dist/assets/QualificationsView-BbIklgwE.js @@ -1 +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-OvQoqblD.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}; +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-CWxNv9Fc.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-Bf8-oQoy.js b/dist/assets/RegisterOrgView-CpcADoEU.js similarity index 99% rename from dist/assets/RegisterOrgView-Bf8-oQoy.js rename to dist/assets/RegisterOrgView-CpcADoEU.js index b39678e..c2979dc 100644 --- a/dist/assets/RegisterOrgView-Bf8-oQoy.js +++ b/dist/assets/RegisterOrgView-CpcADoEU.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-OvQoqblD.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-CWxNv9Fc.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-Bkdz88hj.js b/dist/assets/SettingsView-4DujBg5S.js similarity index 99% rename from dist/assets/SettingsView-Bkdz88hj.js rename to dist/assets/SettingsView-4DujBg5S.js index 447a3f6..67c8657 100644 --- a/dist/assets/SettingsView-Bkdz88hj.js +++ b/dist/assets/SettingsView-4DujBg5S.js @@ -1 +1 @@ -import{d as E,q as U,o as n,c as r,a as e,n as P,t as c,e as b,F,x as D,r as i,u as j,y as A,w as K,b as N,v as _,z as q,k as z,m as Z}from"./index-OvQoqblD.js";const L={class:"fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4"},T={class:"bg-white rounded-2xl shadow-xl w-full max-w-md overflow-hidden"},J={class:"bg-gradient-to-r from-purple-600 to-indigo-600 p-6 text-white"},R={class:"flex justify-between items-center"},W={class:"p-6"},G={key:0,class:"space-y-4"},H={class:"bg-gray-50 rounded-lg p-4 mb-4"},O={class:"flex items-center justify-between"},Q={class:"space-y-3"},X={class:"flex-1"},Y={class:"text-sm text-gray-500"},ee={key:0,class:"text-purple-600"},te={class:"flex-1"},se={class:"text-sm text-gray-500"},le={key:0,class:"text-purple-600"},ne={key:1,class:"text-center"},ie={class:"text-lg font-semibold mb-2"},re={class:"flex justify-center space-x-3 mb-8"},ae={key:0,class:"text-red-500 text-sm mb-4"},oe={class:"grid grid-cols-3 gap-3 max-w-xs mx-auto"},ue=["onClick"],de={key:2,class:"text-center py-8"},ce={key:0,class:"text-red-500 text-sm"},me=E({__name:"SecuritySettings",emits:["close"],setup(V,{emit:w}){const h=w,l=i("menu"),g=i(""),f=i(""),a=i(""),m=i(["","","","","",""]),v=i(0),u=i(!1),x=i(!1),S=i(!1),o=i("none");U(async()=>{if(x.value=!!localStorage.getItem("appPin"),u.value=!!localStorage.getItem("biometricCredentialId"),o.value=localStorage.getItem("lockMethod")||"none",window.PublicKeyCredential)try{S.value=await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}catch{S.value=!1}});function I(p){v.value<6&&(m.value[v.value]=p,v.value++,v.value===6&&(l.value==="setup-pin"?(g.value=m.value.join(""),s(),l.value="confirm-pin"):l.value==="confirm-pin"&&(f.value=m.value.join(""),C())))}function y(){v.value>0&&(v.value--,m.value[v.value]=""),a.value=""}function s(){m.value=["","","","","",""],v.value=0,a.value=""}function C(){g.value===f.value?(localStorage.setItem("appPin",g.value),localStorage.setItem("lockMethod","pin"),x.value=!0,o.value="pin",l.value="menu",g.value="",f.value="",s()):(a.value="PINs stimmen nicht überein",setTimeout(()=>{s(),l.value="setup-pin",g.value="",f.value=""},1e3))}async function $(){l.value="setup-biometric",a.value="";try{if(!window.PublicKeyCredential)throw new Error("WebAuthn nicht unterstützt");const p=new Uint8Array(16);crypto.getRandomValues(p);const t=await navigator.credentials.create({publicKey:{challenge:new Uint8Array(32),rp:{name:"SeCu",id:window.location.hostname},user:{id:p,name:localStorage.getItem("userEmail")||"user",displayName:"SeCu User"},pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],authenticatorSelection:{authenticatorAttachment:"platform",userVerification:"required",residentKey:"preferred"},timeout:6e4,attestation:"none"}});if(t){const d=btoa(String.fromCharCode(...new Uint8Array(t.rawId)));localStorage.setItem("biometricCredentialId",d),localStorage.setItem("lockMethod","biometric"),u.value=!0,o.value="biometric",l.value="menu"}}catch(p){console.error("Biometric setup failed:",p),a.value=p.message||"Biometrie-Einrichtung fehlgeschlagen",l.value="menu"}}function k(){confirm("App-Sperre wirklich deaktivieren?")&&(localStorage.removeItem("appPin"),localStorage.removeItem("biometricCredentialId"),localStorage.removeItem("lockMethod"),x.value=!1,u.value=!1,o.value="none")}function M(p){localStorage.setItem("lockMethod",p),o.value=p}return(p,t)=>(n(),r("div",L,[e("div",T,[e("div",J,[e("div",R,[t[7]||(t[7]=e("h2",{class:"text-xl font-bold"},"🔐 App-Sicherheit",-1)),e("button",{onClick:t[0]||(t[0]=d=>h("close")),class:"text-white/70 hover:text-white"},"✕")])]),e("div",W,[l.value==="menu"?(n(),r("div",G,[t[14]||(t[14]=e("p",{class:"text-gray-600 text-sm mb-4"}," Schütze deine App mit Fingerabdruck, Face ID oder PIN. ",-1)),e("div",H,[e("div",O,[t[8]||(t[8]=e("span",{class:"text-gray-700"},"Aktueller Schutz:",-1)),e("span",{class:P(["px-3 py-1 rounded-full text-sm font-medium",o.value==="none"?"bg-red-100 text-red-700":"bg-green-100 text-green-700"])},c(o.value==="biometric"?"👆 Biometrie":o.value==="pin"?"🔢 PIN":"❌ Aus"),3)])]),e("div",Q,[S.value?(n(),r("button",{key:0,onClick:t[1]||(t[1]=d=>u.value?M("biometric"):$()),class:P(["w-full p-4 rounded-lg border-2 text-left transition flex items-center",o.value==="biometric"?"border-purple-500 bg-purple-50":"border-gray-200 hover:border-purple-300"])},[t[10]||(t[10]=e("span",{class:"text-2xl mr-4"},"👆",-1)),e("div",X,[t[9]||(t[9]=e("div",{class:"font-semibold"},"Fingerabdruck / Face ID",-1)),e("div",Y,c(u.value?"Eingerichtet":"Jetzt einrichten"),1)]),o.value==="biometric"?(n(),r("span",ee,"✓")):b("",!0)],2)):b("",!0),e("button",{onClick:t[2]||(t[2]=d=>x.value?M("pin"):l.value="setup-pin"),class:P(["w-full p-4 rounded-lg border-2 text-left transition flex items-center",o.value==="pin"?"border-purple-500 bg-purple-50":"border-gray-200 hover:border-purple-300"])},[t[12]||(t[12]=e("span",{class:"text-2xl mr-4"},"🔢",-1)),e("div",te,[t[11]||(t[11]=e("div",{class:"font-semibold"},"PIN-Code (6 Ziffern)",-1)),e("div",se,c(x.value?"Eingerichtet":"Jetzt einrichten"),1)]),o.value==="pin"?(n(),r("span",le,"✓")):b("",!0)],2),o.value!=="none"?(n(),r("button",{key:1,onClick:k,class:"w-full p-4 rounded-lg border-2 border-red-200 text-left transition flex items-center hover:border-red-300 hover:bg-red-50"},[...t[13]||(t[13]=[e("span",{class:"text-2xl mr-4"},"🔓",-1),e("div",{class:"flex-1"},[e("div",{class:"font-semibold text-red-700"},"Sperre deaktivieren"),e("div",{class:"text-sm text-gray-500"},"Nicht empfohlen")],-1)])])):b("",!0)]),x.value?(n(),r("button",{key:0,onClick:t[3]||(t[3]=d=>l.value="setup-pin"),class:"w-full text-center text-purple-600 text-sm hover:underline mt-4"}," PIN ändern ")):b("",!0)])):l.value==="setup-pin"||l.value==="confirm-pin"?(n(),r("div",ne,[e("h3",ie,c(l.value==="setup-pin"?"Neuen PIN eingeben":"PIN bestätigen"),1),t[15]||(t[15]=e("p",{class:"text-gray-500 text-sm mb-6"},"6 Ziffern",-1)),e("div",re,[(n(!0),r(F,null,D(m.value,(d,B)=>(n(),r("div",{key:B,class:P(["w-4 h-4 rounded-full transition-all",d?"bg-purple-600 scale-110":"bg-gray-300",a.value?"bg-red-400 animate-shake":""])},null,2))),128))]),a.value?(n(),r("p",ae,c(a.value),1)):b("",!0),e("div",oe,[(n(),r(F,null,D([1,2,3,4,5,6,7,8,9],d=>e("button",{key:d,onClick:B=>I(String(d)),class:"w-14 h-14 bg-gray-100 rounded-full text-xl font-semibold hover:bg-gray-200 transition"},c(d),9,ue)),64)),e("button",{onClick:t[4]||(t[4]=d=>{l.value="menu",s()}),class:"w-14 h-14 text-gray-500 text-sm"}," Zurück "),e("button",{onClick:t[5]||(t[5]=d=>I("0")),class:"w-14 h-14 bg-gray-100 rounded-full text-xl font-semibold hover:bg-gray-200 transition"}," 0 "),e("button",{onClick:y,class:"w-14 h-14 text-xl hover:bg-gray-100 rounded-full transition"}," ⌫ ")])])):l.value==="setup-biometric"?(n(),r("div",de,[t[16]||(t[16]=e("div",{class:"text-6xl mb-4 animate-pulse"},"👆",-1)),t[17]||(t[17]=e("h3",{class:"text-lg font-semibold mb-2"},"Biometrie einrichten",-1)),t[18]||(t[18]=e("p",{class:"text-gray-500 text-sm mb-4"}," Bitte Fingerabdruck scannen oder Face ID verwenden... ",-1)),a.value?(n(),r("p",ce,c(a.value),1)):b("",!0),e("button",{onClick:t[6]||(t[6]=d=>l.value="menu"),class:"mt-4 text-gray-500 text-sm hover:underline"}," Abbrechen ")])):b("",!0)])])]))}}),ve={class:"space-y-6"},pe={class:"card"},be={class:"grid grid-cols-2 gap-4"},ge={class:"font-medium"},fe={class:"font-medium"},xe={class:"font-medium capitalize"},ye={class:"card"},ke={class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},we={class:"card"},he={key:0,class:"text-red-600 text-sm"},Se={key:1,class:"text-green-600 text-sm"},Pe=["disabled"],Ce=E({__name:"SettingsView",setup(V){const w=j(),h=i(""),l=i(""),g=i(""),f=i(!1),a=i(""),m=i(""),v=i(!1),u=i(null);U(()=>{var y;u.value=localStorage.getItem("lockMethod"),(y=w.user)!=null&&y.email&&localStorage.setItem("userEmail",w.user.email)});const x=z(()=>!u.value||u.value==="none"?"Deaktiviert":u.value==="biometric"?"Fingerabdruck / Face ID":u.value==="pin"?"PIN-Code":"Unbekannt"),S=z(()=>!u.value||u.value==="none"?"bg-red-100 text-red-700":"bg-green-100 text-green-700");async function o(){if(l.value!==g.value){m.value="Passwörter stimmen nicht überein";return}if(l.value.length<8){m.value="Passwort muss mindestens 8 Zeichen haben";return}f.value=!0,m.value="",a.value="";try{await Z.post("/auth/change-password",{currentPassword:h.value,newPassword:l.value}),a.value="Passwort erfolgreich geändert",h.value="",l.value="",g.value=""}catch(y){m.value=y instanceof Error?y.message:"Fehler beim Ändern"}finally{f.value=!1}}function I(){v.value=!1,u.value=localStorage.getItem("lockMethod")}return(y,s)=>{var C,$;return n(),r("div",ve,[s[15]||(s[15]=e("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"🔧 Einstellungen",-1)),e("div",pe,[s[7]||(s[7]=e("h2",{class:"text-lg font-semibold mb-4"},"👤 Profil",-1)),e("div",be,[e("div",null,[s[4]||(s[4]=e("label",{class:"block text-sm text-gray-500"},"Name",-1)),e("p",ge,c(A(w).fullName),1)]),e("div",null,[s[5]||(s[5]=e("label",{class:"block text-sm text-gray-500"},"E-Mail",-1)),e("p",fe,c((C=A(w).user)==null?void 0:C.email),1)]),e("div",null,[s[6]||(s[6]=e("label",{class:"block text-sm text-gray-500"},"Rolle",-1)),e("p",xe,c(($=A(w).user)==null?void 0:$.role),1)])])]),e("div",ye,[s[9]||(s[9]=e("h2",{class:"text-lg font-semibold mb-4"},"🔐 App-Sicherheit",-1)),s[10]||(s[10]=e("p",{class:"text-gray-600 text-sm mb-4"}," Schütze deine App mit Fingerabdruck, Face ID oder PIN. Bei jedem Öffnen der App musst du dich verifizieren. ",-1)),e("div",ke,[e("div",null,[s[8]||(s[8]=e("div",{class:"font-medium"},"App-Sperre",-1)),e("div",{class:P(["inline-block px-2 py-1 rounded text-sm mt-1",S.value])},c(x.value),3)]),e("button",{onClick:s[0]||(s[0]=k=>v.value=!0),class:"btn btn-primary"}," Konfigurieren ")])]),e("div",we,[s[14]||(s[14]=e("h2",{class:"text-lg font-semibold mb-4"},"🔑 Passwort ändern",-1)),e("form",{onSubmit:K(o,["prevent"]),class:"space-y-4 max-w-md"},[e("div",null,[s[11]||(s[11]=e("label",{class:"block text-sm font-medium mb-1"},"Aktuelles Passwort",-1)),N(e("input",{"onUpdate:modelValue":s[1]||(s[1]=k=>h.value=k),type:"password",required:"",class:"input"},null,512),[[_,h.value]])]),e("div",null,[s[12]||(s[12]=e("label",{class:"block text-sm font-medium mb-1"},"Neues Passwort",-1)),N(e("input",{"onUpdate:modelValue":s[2]||(s[2]=k=>l.value=k),type:"password",required:"",class:"input"},null,512),[[_,l.value]])]),e("div",null,[s[13]||(s[13]=e("label",{class:"block text-sm font-medium mb-1"},"Passwort bestätigen",-1)),N(e("input",{"onUpdate:modelValue":s[3]||(s[3]=k=>g.value=k),type:"password",required:"",class:"input"},null,512),[[_,g.value]])]),m.value?(n(),r("div",he,c(m.value),1)):b("",!0),a.value?(n(),r("div",Se,c(a.value),1)):b("",!0),e("button",{type:"submit",disabled:f.value,class:"btn btn-primary"},c(f.value?"Speichern...":"Passwort ändern"),9,Pe)],32)]),v.value?(n(),q(me,{key:0,onClose:I})):b("",!0)])}}});export{Ce as default}; +import{d as E,q as U,o as n,c as r,a as e,n as P,t as c,e as b,F,x as D,r as i,u as j,y as A,w as K,b as N,v as _,z as q,k as z,m as Z}from"./index-CWxNv9Fc.js";const L={class:"fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4"},T={class:"bg-white rounded-2xl shadow-xl w-full max-w-md overflow-hidden"},J={class:"bg-gradient-to-r from-purple-600 to-indigo-600 p-6 text-white"},R={class:"flex justify-between items-center"},W={class:"p-6"},G={key:0,class:"space-y-4"},H={class:"bg-gray-50 rounded-lg p-4 mb-4"},O={class:"flex items-center justify-between"},Q={class:"space-y-3"},X={class:"flex-1"},Y={class:"text-sm text-gray-500"},ee={key:0,class:"text-purple-600"},te={class:"flex-1"},se={class:"text-sm text-gray-500"},le={key:0,class:"text-purple-600"},ne={key:1,class:"text-center"},ie={class:"text-lg font-semibold mb-2"},re={class:"flex justify-center space-x-3 mb-8"},ae={key:0,class:"text-red-500 text-sm mb-4"},oe={class:"grid grid-cols-3 gap-3 max-w-xs mx-auto"},ue=["onClick"],de={key:2,class:"text-center py-8"},ce={key:0,class:"text-red-500 text-sm"},me=E({__name:"SecuritySettings",emits:["close"],setup(V,{emit:w}){const h=w,l=i("menu"),g=i(""),f=i(""),a=i(""),m=i(["","","","","",""]),v=i(0),u=i(!1),x=i(!1),S=i(!1),o=i("none");U(async()=>{if(x.value=!!localStorage.getItem("appPin"),u.value=!!localStorage.getItem("biometricCredentialId"),o.value=localStorage.getItem("lockMethod")||"none",window.PublicKeyCredential)try{S.value=await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}catch{S.value=!1}});function I(p){v.value<6&&(m.value[v.value]=p,v.value++,v.value===6&&(l.value==="setup-pin"?(g.value=m.value.join(""),s(),l.value="confirm-pin"):l.value==="confirm-pin"&&(f.value=m.value.join(""),C())))}function y(){v.value>0&&(v.value--,m.value[v.value]=""),a.value=""}function s(){m.value=["","","","","",""],v.value=0,a.value=""}function C(){g.value===f.value?(localStorage.setItem("appPin",g.value),localStorage.setItem("lockMethod","pin"),x.value=!0,o.value="pin",l.value="menu",g.value="",f.value="",s()):(a.value="PINs stimmen nicht überein",setTimeout(()=>{s(),l.value="setup-pin",g.value="",f.value=""},1e3))}async function $(){l.value="setup-biometric",a.value="";try{if(!window.PublicKeyCredential)throw new Error("WebAuthn nicht unterstützt");const p=new Uint8Array(16);crypto.getRandomValues(p);const t=await navigator.credentials.create({publicKey:{challenge:new Uint8Array(32),rp:{name:"SeCu",id:window.location.hostname},user:{id:p,name:localStorage.getItem("userEmail")||"user",displayName:"SeCu User"},pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],authenticatorSelection:{authenticatorAttachment:"platform",userVerification:"required",residentKey:"preferred"},timeout:6e4,attestation:"none"}});if(t){const d=btoa(String.fromCharCode(...new Uint8Array(t.rawId)));localStorage.setItem("biometricCredentialId",d),localStorage.setItem("lockMethod","biometric"),u.value=!0,o.value="biometric",l.value="menu"}}catch(p){console.error("Biometric setup failed:",p),a.value=p.message||"Biometrie-Einrichtung fehlgeschlagen",l.value="menu"}}function k(){confirm("App-Sperre wirklich deaktivieren?")&&(localStorage.removeItem("appPin"),localStorage.removeItem("biometricCredentialId"),localStorage.removeItem("lockMethod"),x.value=!1,u.value=!1,o.value="none")}function M(p){localStorage.setItem("lockMethod",p),o.value=p}return(p,t)=>(n(),r("div",L,[e("div",T,[e("div",J,[e("div",R,[t[7]||(t[7]=e("h2",{class:"text-xl font-bold"},"🔐 App-Sicherheit",-1)),e("button",{onClick:t[0]||(t[0]=d=>h("close")),class:"text-white/70 hover:text-white"},"✕")])]),e("div",W,[l.value==="menu"?(n(),r("div",G,[t[14]||(t[14]=e("p",{class:"text-gray-600 text-sm mb-4"}," Schütze deine App mit Fingerabdruck, Face ID oder PIN. ",-1)),e("div",H,[e("div",O,[t[8]||(t[8]=e("span",{class:"text-gray-700"},"Aktueller Schutz:",-1)),e("span",{class:P(["px-3 py-1 rounded-full text-sm font-medium",o.value==="none"?"bg-red-100 text-red-700":"bg-green-100 text-green-700"])},c(o.value==="biometric"?"👆 Biometrie":o.value==="pin"?"🔢 PIN":"❌ Aus"),3)])]),e("div",Q,[S.value?(n(),r("button",{key:0,onClick:t[1]||(t[1]=d=>u.value?M("biometric"):$()),class:P(["w-full p-4 rounded-lg border-2 text-left transition flex items-center",o.value==="biometric"?"border-purple-500 bg-purple-50":"border-gray-200 hover:border-purple-300"])},[t[10]||(t[10]=e("span",{class:"text-2xl mr-4"},"👆",-1)),e("div",X,[t[9]||(t[9]=e("div",{class:"font-semibold"},"Fingerabdruck / Face ID",-1)),e("div",Y,c(u.value?"Eingerichtet":"Jetzt einrichten"),1)]),o.value==="biometric"?(n(),r("span",ee,"✓")):b("",!0)],2)):b("",!0),e("button",{onClick:t[2]||(t[2]=d=>x.value?M("pin"):l.value="setup-pin"),class:P(["w-full p-4 rounded-lg border-2 text-left transition flex items-center",o.value==="pin"?"border-purple-500 bg-purple-50":"border-gray-200 hover:border-purple-300"])},[t[12]||(t[12]=e("span",{class:"text-2xl mr-4"},"🔢",-1)),e("div",te,[t[11]||(t[11]=e("div",{class:"font-semibold"},"PIN-Code (6 Ziffern)",-1)),e("div",se,c(x.value?"Eingerichtet":"Jetzt einrichten"),1)]),o.value==="pin"?(n(),r("span",le,"✓")):b("",!0)],2),o.value!=="none"?(n(),r("button",{key:1,onClick:k,class:"w-full p-4 rounded-lg border-2 border-red-200 text-left transition flex items-center hover:border-red-300 hover:bg-red-50"},[...t[13]||(t[13]=[e("span",{class:"text-2xl mr-4"},"🔓",-1),e("div",{class:"flex-1"},[e("div",{class:"font-semibold text-red-700"},"Sperre deaktivieren"),e("div",{class:"text-sm text-gray-500"},"Nicht empfohlen")],-1)])])):b("",!0)]),x.value?(n(),r("button",{key:0,onClick:t[3]||(t[3]=d=>l.value="setup-pin"),class:"w-full text-center text-purple-600 text-sm hover:underline mt-4"}," PIN ändern ")):b("",!0)])):l.value==="setup-pin"||l.value==="confirm-pin"?(n(),r("div",ne,[e("h3",ie,c(l.value==="setup-pin"?"Neuen PIN eingeben":"PIN bestätigen"),1),t[15]||(t[15]=e("p",{class:"text-gray-500 text-sm mb-6"},"6 Ziffern",-1)),e("div",re,[(n(!0),r(F,null,D(m.value,(d,B)=>(n(),r("div",{key:B,class:P(["w-4 h-4 rounded-full transition-all",d?"bg-purple-600 scale-110":"bg-gray-300",a.value?"bg-red-400 animate-shake":""])},null,2))),128))]),a.value?(n(),r("p",ae,c(a.value),1)):b("",!0),e("div",oe,[(n(),r(F,null,D([1,2,3,4,5,6,7,8,9],d=>e("button",{key:d,onClick:B=>I(String(d)),class:"w-14 h-14 bg-gray-100 rounded-full text-xl font-semibold hover:bg-gray-200 transition"},c(d),9,ue)),64)),e("button",{onClick:t[4]||(t[4]=d=>{l.value="menu",s()}),class:"w-14 h-14 text-gray-500 text-sm"}," Zurück "),e("button",{onClick:t[5]||(t[5]=d=>I("0")),class:"w-14 h-14 bg-gray-100 rounded-full text-xl font-semibold hover:bg-gray-200 transition"}," 0 "),e("button",{onClick:y,class:"w-14 h-14 text-xl hover:bg-gray-100 rounded-full transition"}," ⌫ ")])])):l.value==="setup-biometric"?(n(),r("div",de,[t[16]||(t[16]=e("div",{class:"text-6xl mb-4 animate-pulse"},"👆",-1)),t[17]||(t[17]=e("h3",{class:"text-lg font-semibold mb-2"},"Biometrie einrichten",-1)),t[18]||(t[18]=e("p",{class:"text-gray-500 text-sm mb-4"}," Bitte Fingerabdruck scannen oder Face ID verwenden... ",-1)),a.value?(n(),r("p",ce,c(a.value),1)):b("",!0),e("button",{onClick:t[6]||(t[6]=d=>l.value="menu"),class:"mt-4 text-gray-500 text-sm hover:underline"}," Abbrechen ")])):b("",!0)])])]))}}),ve={class:"space-y-6"},pe={class:"card"},be={class:"grid grid-cols-2 gap-4"},ge={class:"font-medium"},fe={class:"font-medium"},xe={class:"font-medium capitalize"},ye={class:"card"},ke={class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},we={class:"card"},he={key:0,class:"text-red-600 text-sm"},Se={key:1,class:"text-green-600 text-sm"},Pe=["disabled"],Ce=E({__name:"SettingsView",setup(V){const w=j(),h=i(""),l=i(""),g=i(""),f=i(!1),a=i(""),m=i(""),v=i(!1),u=i(null);U(()=>{var y;u.value=localStorage.getItem("lockMethod"),(y=w.user)!=null&&y.email&&localStorage.setItem("userEmail",w.user.email)});const x=z(()=>!u.value||u.value==="none"?"Deaktiviert":u.value==="biometric"?"Fingerabdruck / Face ID":u.value==="pin"?"PIN-Code":"Unbekannt"),S=z(()=>!u.value||u.value==="none"?"bg-red-100 text-red-700":"bg-green-100 text-green-700");async function o(){if(l.value!==g.value){m.value="Passwörter stimmen nicht überein";return}if(l.value.length<8){m.value="Passwort muss mindestens 8 Zeichen haben";return}f.value=!0,m.value="",a.value="";try{await Z.post("/auth/change-password",{currentPassword:h.value,newPassword:l.value}),a.value="Passwort erfolgreich geändert",h.value="",l.value="",g.value=""}catch(y){m.value=y instanceof Error?y.message:"Fehler beim Ändern"}finally{f.value=!1}}function I(){v.value=!1,u.value=localStorage.getItem("lockMethod")}return(y,s)=>{var C,$;return n(),r("div",ve,[s[15]||(s[15]=e("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"🔧 Einstellungen",-1)),e("div",pe,[s[7]||(s[7]=e("h2",{class:"text-lg font-semibold mb-4"},"👤 Profil",-1)),e("div",be,[e("div",null,[s[4]||(s[4]=e("label",{class:"block text-sm text-gray-500"},"Name",-1)),e("p",ge,c(A(w).fullName),1)]),e("div",null,[s[5]||(s[5]=e("label",{class:"block text-sm text-gray-500"},"E-Mail",-1)),e("p",fe,c((C=A(w).user)==null?void 0:C.email),1)]),e("div",null,[s[6]||(s[6]=e("label",{class:"block text-sm text-gray-500"},"Rolle",-1)),e("p",xe,c(($=A(w).user)==null?void 0:$.role),1)])])]),e("div",ye,[s[9]||(s[9]=e("h2",{class:"text-lg font-semibold mb-4"},"🔐 App-Sicherheit",-1)),s[10]||(s[10]=e("p",{class:"text-gray-600 text-sm mb-4"}," Schütze deine App mit Fingerabdruck, Face ID oder PIN. Bei jedem Öffnen der App musst du dich verifizieren. ",-1)),e("div",ke,[e("div",null,[s[8]||(s[8]=e("div",{class:"font-medium"},"App-Sperre",-1)),e("div",{class:P(["inline-block px-2 py-1 rounded text-sm mt-1",S.value])},c(x.value),3)]),e("button",{onClick:s[0]||(s[0]=k=>v.value=!0),class:"btn btn-primary"}," Konfigurieren ")])]),e("div",we,[s[14]||(s[14]=e("h2",{class:"text-lg font-semibold mb-4"},"🔑 Passwort ändern",-1)),e("form",{onSubmit:K(o,["prevent"]),class:"space-y-4 max-w-md"},[e("div",null,[s[11]||(s[11]=e("label",{class:"block text-sm font-medium mb-1"},"Aktuelles Passwort",-1)),N(e("input",{"onUpdate:modelValue":s[1]||(s[1]=k=>h.value=k),type:"password",required:"",class:"input"},null,512),[[_,h.value]])]),e("div",null,[s[12]||(s[12]=e("label",{class:"block text-sm font-medium mb-1"},"Neues Passwort",-1)),N(e("input",{"onUpdate:modelValue":s[2]||(s[2]=k=>l.value=k),type:"password",required:"",class:"input"},null,512),[[_,l.value]])]),e("div",null,[s[13]||(s[13]=e("label",{class:"block text-sm font-medium mb-1"},"Passwort bestätigen",-1)),N(e("input",{"onUpdate:modelValue":s[3]||(s[3]=k=>g.value=k),type:"password",required:"",class:"input"},null,512),[[_,g.value]])]),m.value?(n(),r("div",he,c(m.value),1)):b("",!0),a.value?(n(),r("div",Se,c(a.value),1)):b("",!0),e("button",{type:"submit",disabled:f.value,class:"btn btn-primary"},c(f.value?"Speichern...":"Passwort ändern"),9,Pe)],32)]),v.value?(n(),q(me,{key:0,onClose:I})):b("",!0)])}}});export{Ce as default}; diff --git a/dist/assets/ShiftsView-gFZrEy1d.js b/dist/assets/ShiftsView-gFZrEy1d.js new file mode 100644 index 0000000..4caf7ad --- /dev/null +++ b/dist/assets/ShiftsView-gFZrEy1d.js @@ -0,0 +1 @@ +import{d as E,q as $,m as x,c as i,a as t,F as h,x as k,e as S,t as r,b as c,v,r as d,k as N,o,C}from"./index-CWxNv9Fc.js";const U={class:"p-6"},j={class:"flex justify-between items-center mb-6"},L={class:"bg-white rounded-lg shadow p-4 mb-6"},M={class:"flex flex-wrap gap-2"},z={key:0,class:"text-gray-500"},A={class:"bg-white rounded-lg shadow overflow-hidden"},T={class:"flex items-center justify-between p-4 border-b"},W={class:"font-semibold"},P={class:"grid grid-cols-7 divide-x"},R={class:"text-xs font-semibold text-gray-500 mb-2"},q={key:0,class:"fixed inset-0 bg-black/50 flex items-center justify-center z-50"},I={class:"bg-white rounded-lg shadow-xl w-full max-w-md p-6"},K={class:"space-y-4"},O={class:"grid grid-cols-2 gap-4"},G={class:"grid grid-cols-2 gap-4"},H={class:"flex justify-end space-x-2 mt-6"},X=E({__name:"ShiftsView",setup(J){const D=d(!0),p=d([]),w=d([]),f=d(!1),u=d(new Date),l=d({name:"",start_time:"06:00",end_time:"14:00",break_minutes:30,color:"#3B82F6",is_night_shift:!1});$(async()=>{await b()});async function b(){D.value=!0;try{const[n,e]=await Promise.all([x.get("/shifts/definitions"),x.get(`/shifts/assignments?start=${y(g())}&end=${y(_())}`)]);p.value=n.data.shifts||[],w.value=e.data.assignments||[]}catch(n){console.error(n)}D.value=!1}function g(){const n=new Date(u.value);return n.setDate(n.getDate()-n.getDay()+1),n}function _(){const n=new Date(g());return n.setDate(n.getDate()+6),n}function y(n){return n.toISOString().split("T")[0]}const V=N(()=>{const n=[],e=g();for(let s=0;s<7;s++){const a=new Date(e);a.setDate(a.getDate()+s),n.push({date:y(a),label:a.toLocaleDateString("de-DE",{weekday:"short",day:"2-digit"})})}return n});async function F(){try{await x.post("/shifts/definitions",l.value),f.value=!1,l.value={name:"",start_time:"06:00",end_time:"14:00",break_minutes:30,color:"#3B82F6",is_night_shift:!1},await b()}catch(n){alert("Fehler: "+n.message)}}function B(n){return w.value.filter(e=>e.date===n)}return(n,e)=>(o(),i("div",U,[t("div",j,[e[9]||(e[9]=t("div",null,[t("h1",{class:"text-2xl font-bold"},"📅 Schichtplanung"),t("p",{class:"text-gray-500"},"Dienstpläne verwalten")],-1)),t("button",{onClick:e[0]||(e[0]=s=>f.value=!0),class:"btn btn-primary"},"+ Schicht definieren")]),t("div",L,[e[10]||(e[10]=t("h2",{class:"font-semibold mb-3"},"Schicht-Typen",-1)),t("div",M,[(o(!0),i(h,null,k(p.value,s=>{var a,m;return o(),i("div",{key:s.id,style:C({backgroundColor:s.color+"20",borderColor:s.color}),class:"px-3 py-1 rounded-full border text-sm"},r(s.name)+" ("+r((a=s.start_time)==null?void 0:a.slice(0,5))+" - "+r((m=s.end_time)==null?void 0:m.slice(0,5))+") ",5)}),128)),p.value.length===0?(o(),i("div",z,"Keine Schichten definiert")):S("",!0)])]),t("div",A,[t("div",T,[t("button",{onClick:e[1]||(e[1]=s=>{u.value.setDate(u.value.getDate()-7),b()}),class:"text-gray-600 hover:text-gray-900"},"← Vorherige"),t("span",W,r(g().toLocaleDateString("de-DE"))+" - "+r(_().toLocaleDateString("de-DE")),1),t("button",{onClick:e[2]||(e[2]=s=>{u.value.setDate(u.value.getDate()+7),b()}),class:"text-gray-600 hover:text-gray-900"},"Nächste →")]),t("div",P,[(o(!0),i(h,null,k(V.value,s=>(o(),i("div",{key:s.date,class:"min-h-32 p-2"},[t("div",R,r(s.label),1),(o(!0),i(h,null,k(B(s.date),a=>{var m;return o(),i("div",{key:a.id,style:C({backgroundColor:a.color+"40"}),class:"text-xs p-1 rounded mb-1"},r(a.first_name)+" "+r((m=a.last_name)==null?void 0:m.charAt(0))+". ",5)}),128))]))),128))])]),f.value?(o(),i("div",q,[t("div",I,[e[16]||(e[16]=t("h2",{class:"text-xl font-bold mb-4"},"Neue Schicht definieren",-1)),t("div",K,[t("div",null,[e[11]||(e[11]=t("label",{class:"block text-sm font-medium mb-1"},"Name",-1)),c(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>l.value.name=s),class:"input",placeholder:"z.B. Frühschicht"},null,512),[[v,l.value.name]])]),t("div",O,[t("div",null,[e[12]||(e[12]=t("label",{class:"block text-sm font-medium mb-1"},"Beginn",-1)),c(t("input",{"onUpdate:modelValue":e[4]||(e[4]=s=>l.value.start_time=s),type:"time",class:"input"},null,512),[[v,l.value.start_time]])]),t("div",null,[e[13]||(e[13]=t("label",{class:"block text-sm font-medium mb-1"},"Ende",-1)),c(t("input",{"onUpdate:modelValue":e[5]||(e[5]=s=>l.value.end_time=s),type:"time",class:"input"},null,512),[[v,l.value.end_time]])])]),t("div",G,[t("div",null,[e[14]||(e[14]=t("label",{class:"block text-sm font-medium mb-1"},"Pause (Min.)",-1)),c(t("input",{"onUpdate:modelValue":e[6]||(e[6]=s=>l.value.break_minutes=s),type:"number",class:"input"},null,512),[[v,l.value.break_minutes,void 0,{number:!0}]])]),t("div",null,[e[15]||(e[15]=t("label",{class:"block text-sm font-medium mb-1"},"Farbe",-1)),c(t("input",{"onUpdate:modelValue":e[7]||(e[7]=s=>l.value.color=s),type:"color",class:"w-full h-10 rounded"},null,512),[[v,l.value.color]])])])]),t("div",H,[t("button",{onClick:e[8]||(e[8]=s=>f.value=!1),class:"btn"},"Abbrechen"),t("button",{onClick:F,class:"btn btn-primary"},"Erstellen")])])])):S("",!0)]))}});export{X as default}; diff --git a/dist/assets/TimesheetsView-Bvjo1kDE.js b/dist/assets/TimesheetsView-Cx-KwgCo.js similarity index 98% rename from dist/assets/TimesheetsView-Bvjo1kDE.js rename to dist/assets/TimesheetsView-Cx-KwgCo.js index 15d244b..385de42 100644 --- a/dist/assets/TimesheetsView-Bvjo1kDE.js +++ b/dist/assets/TimesheetsView-Cx-KwgCo.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-OvQoqblD.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-CWxNv9Fc.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-DMX0kDUw.js b/dist/assets/UsersView-Df5a9eIx.js similarity index 98% rename from dist/assets/UsersView-DMX0kDUw.js rename to dist/assets/UsersView-Df5a9eIx.js index 7f1c127..1d8d308 100644 --- a/dist/assets/UsersView-DMX0kDUw.js +++ b/dist/assets/UsersView-Df5a9eIx.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-OvQoqblD.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-CWxNv9Fc.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/VehiclesView-C2kXdRXZ.js b/dist/assets/VehiclesView-C2kXdRXZ.js new file mode 100644 index 0000000..2a3d3f1 --- /dev/null +++ b/dist/assets/VehiclesView-C2kXdRXZ.js @@ -0,0 +1 @@ +import{d as _,q as h,m as y,c as n,a as e,F as V,x as z,b as r,v as u,s as B,e as g,r as p,o,t as i,n as f,p as k}from"./index-CWxNv9Fc.js";const D={class:"p-6"},F={class:"flex justify-between items-center mb-6"},M={key:0,class:"text-center py-12"},j={key:1,class:"bg-gray-50 rounded-lg p-12 text-center text-gray-500"},C={key:2,class:"grid md:grid-cols-2 lg:grid-cols-3 gap-4"},S={class:"flex justify-between items-start"},E={class:"font-semibold text-lg"},K={class:"text-gray-600"},U={key:0,class:"text-sm text-gray-400"},L={class:"mt-4 grid grid-cols-2 gap-2 text-sm"},N={key:3,class:"fixed inset-0 bg-black/50 flex items-center justify-center z-50"},T={class:"bg-white rounded-lg shadow-xl w-full max-w-md p-6"},A={class:"space-y-4"},W={class:"grid grid-cols-2 gap-4"},$={class:"grid grid-cols-2 gap-4"},q={class:"flex justify-end space-x-2 mt-6"},P=_({__name:"VehiclesView",setup(H){const c=p(!0),m=p([]),d=p(!1),s=p({license_plate:"",brand:"",model:"",year:2024,color:"",fuel_type:"diesel"});h(async()=>{await v()});async function v(){c.value=!0;try{const a=await y.get("/vehicles");m.value=a.data.vehicles||[]}catch(a){console.error(a)}c.value=!1}async function w(){try{await y.post("/vehicles",s.value),d.value=!1,s.value={license_plate:"",brand:"",model:"",year:2024,color:"",fuel_type:"diesel"},await v()}catch(a){alert("Fehler: "+a.message)}}function b(a){return{available:{text:"Verfügbar",class:"bg-green-100 text-green-700",icon:"✅"},in_use:{text:"Im Einsatz",class:"bg-blue-100 text-blue-700",icon:"🚗"},maintenance:{text:"Wartung",class:"bg-yellow-100 text-yellow-700",icon:"🔧"},retired:{text:"Stillgelegt",class:"bg-gray-100 text-gray-700",icon:"⛔"}}[a]||{text:a,class:"bg-gray-100",icon:""}}return(a,t)=>(o(),n("div",D,[e("div",F,[t[7]||(t[7]=e("div",null,[e("h1",{class:"text-2xl font-bold"},"🚗 Fahrzeuge"),e("p",{class:"text-gray-500"},"Fuhrpark verwalten")],-1)),e("button",{onClick:t[0]||(t[0]=l=>d.value=!0),class:"btn btn-primary"},"+ Fahrzeug")]),c.value?(o(),n("div",M,"Laden...")):m.value.length===0?(o(),n("div",j,[...t[8]||(t[8]=[e("p",{class:"text-4xl mb-4"},"🚗",-1),e("p",null,"Keine Fahrzeuge vorhanden",-1)])])):(o(),n("div",C,[(o(!0),n(V,null,z(m.value,l=>{var x;return o(),n("div",{key:l.id,class:"bg-white rounded-lg shadow p-4"},[e("div",S,[e("div",null,[e("h3",E,i(l.license_plate),1),e("p",K,i(l.brand)+" "+i(l.model),1),l.year?(o(),n("p",U,"Baujahr "+i(l.year),1)):g("",!0)]),e("span",{class:f(["px-2 py-1 text-xs rounded",b(l.status).class])},i(b(l.status).icon)+" "+i(b(l.status).text),3)]),e("div",L,[e("div",null,[t[9]||(t[9]=e("span",{class:"text-gray-500"},"KM-Stand:",-1)),k(" "+i(((x=l.current_mileage)==null?void 0:x.toLocaleString())||"-"),1)]),e("div",null,[t[10]||(t[10]=e("span",{class:"text-gray-500"},"Kraftstoff:",-1)),k(" "+i(l.fuel_type),1)]),l.tuev_expires?(o(),n("div",{key:0,class:f(["col-span-2",new Date(l.tuev_expires)s.value.license_plate=l),class:"input",placeholder:"B-AB 1234"},null,512),[[u,s.value.license_plate]])]),e("div",W,[e("div",null,[t[12]||(t[12]=e("label",{class:"block text-sm font-medium mb-1"},"Marke",-1)),r(e("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>s.value.brand=l),class:"input",placeholder:"VW"},null,512),[[u,s.value.brand]])]),e("div",null,[t[13]||(t[13]=e("label",{class:"block text-sm font-medium mb-1"},"Modell",-1)),r(e("input",{"onUpdate:modelValue":t[3]||(t[3]=l=>s.value.model=l),class:"input",placeholder:"Passat"},null,512),[[u,s.value.model]])])]),e("div",$,[e("div",null,[t[14]||(t[14]=e("label",{class:"block text-sm font-medium mb-1"},"Baujahr",-1)),r(e("input",{"onUpdate:modelValue":t[4]||(t[4]=l=>s.value.year=l),type:"number",class:"input"},null,512),[[u,s.value.year,void 0,{number:!0}]])]),e("div",null,[t[16]||(t[16]=e("label",{class:"block text-sm font-medium mb-1"},"Kraftstoff",-1)),r(e("select",{"onUpdate:modelValue":t[5]||(t[5]=l=>s.value.fuel_type=l),class:"input"},[...t[15]||(t[15]=[e("option",{value:"diesel"},"Diesel",-1),e("option",{value:"petrol"},"Benzin",-1),e("option",{value:"electric"},"Elektro",-1),e("option",{value:"hybrid"},"Hybrid",-1)])],512),[[B,s.value.fuel_type]])])])]),e("div",q,[e("button",{onClick:t[6]||(t[6]=l=>d.value=!1),class:"btn"},"Abbrechen"),e("button",{onClick:w,class:"btn btn-primary"},"Erstellen")])])])):g("",!0)]))}});export{P as default}; diff --git a/dist/assets/index-38_8_Zmu.css b/dist/assets/index-38_8_Zmu.css deleted file mode 100644 index d2ddbe8..0000000 --- a/dist/assets/index-38_8_Zmu.css +++ /dev/null @@ -1 +0,0 @@ -@keyframes shake-5cf90e48{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.animate-shake[data-v-5cf90e48]{animation:shake-5cf90e48 .3s ease-in-out}*,: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))}.visible{visibility:visible}.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}.mr-4{margin-right:1rem}.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-14{height:3.5rem}.h-16{height:4rem}.h-20{height:5rem}.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-14{width:3.5rem}.w-16{width:4rem}.w-20{width:5rem}.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}.max-w-xs{max-width:20rem}.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))}.scale-110{--tw-scale-x: 1.1;--tw-scale-y: 1.1;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 pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@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-col{flex-direction:column}.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-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * 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-2xl{border-radius:1rem}.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-purple-500{--tw-border-opacity: 1;border-color:rgb(168 85 247 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / 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-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-purple-600{--tw-bg-opacity: 1;background-color:rgb(147 51 234 / 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-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / 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-white\/10{background-color:#ffffff1a}.bg-white\/20{background-color:#fff3}.bg-white\/30{background-color:#ffffff4d}.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-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.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)}.from-purple-600{--tw-gradient-from: #9333ea var(--tw-gradient-from-position);--tw-gradient-to: rgb(147 51 234 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-indigo-600{--tw-gradient-to: #4f46e5 var(--tw-gradient-to-position)}.to-indigo-700,.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-6xl{font-size:3.75rem;line-height:1}.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-700{--tw-text-opacity: 1;color:rgb(21 128 61 / 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-300{--tw-text-opacity: 1;color:rgb(252 165 165 / 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-white\/50{color:#ffffff80}.text-white\/70{color:#ffffffb3}.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))}.underline{text-decoration-line:underline}.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{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.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\:border-purple-300:hover{--tw-border-opacity: 1;border-color:rgb(216 180 254 / var(--tw-border-opacity, 1))}.hover\:border-red-300:hover{--tw-border-opacity: 1;border-color:rgb(252 165 165 / 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-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / 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-white\/20:hover{background-color:#fff3}.hover\:bg-white\/30:hover{background-color:#ffffff4d}.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\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / 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-BtrpDjiv.css b/dist/assets/index-BtrpDjiv.css new file mode 100644 index 0000000..6ad8937 --- /dev/null +++ b/dist/assets/index-BtrpDjiv.css @@ -0,0 +1 @@ +@keyframes shake-5cf90e48{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.animate-shake[data-v-5cf90e48]{animation:shake-5cf90e48 .3s ease-in-out}*,: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))}.visible{visibility:visible}.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}.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-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.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-14{height:3.5rem}.h-16{height:4rem}.h-20{height:5rem}.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-32{min-height:8rem}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-20{width:5rem}.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-7xl{max-width:80rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.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))}.scale-110{--tw-scale-x: 1.1;--tw-scale-y: 1.1;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 pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@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-col{flex-direction:column}.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-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * 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-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-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}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.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-orange-500{--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity, 1))}.border-purple-500{--tw-border-opacity: 1;border-color:rgb(168 85 247 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / 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-400{--tw-border-opacity: 1;border-color:rgb(250 204 21 / 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-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-orange-100{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / 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-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-purple-600{--tw-bg-opacity: 1;background-color:rgb(147 51 234 / 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-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / 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-white\/10{background-color:#ffffff1a}.bg-white\/20{background-color:#fff3}.bg-white\/30{background-color:#ffffff4d}.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-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.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)}.from-purple-600{--tw-gradient-from: #9333ea var(--tw-gradient-from-position);--tw-gradient-to: rgb(147 51 234 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-indigo-600{--tw-gradient-to: #4f46e5 var(--tw-gradient-to-position)}.to-indigo-700,.to-primary-700{--tw-gradient-to: #4338ca var(--tw-gradient-to-position)}.p-1{padding:.25rem}.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\.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-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-6xl{font-size:3.75rem;line-height:1}.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-normal{font-weight:400}.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-700{--tw-text-opacity: 1;color:rgb(29 78 216 / 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-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / 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-300{--tw-text-opacity: 1;color:rgb(252 165 165 / 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-white\/50{color:#ffffff80}.text-white\/70{color:#ffffffb3}.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))}.underline{text-decoration-line:underline}.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)}.ring-2{--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)}.ring-blue-500{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.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{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.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\:border-purple-300:hover{--tw-border-opacity: 1;border-color:rgb(216 180 254 / var(--tw-border-opacity, 1))}.hover\:border-red-300:hover{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.hover\:bg-blue-100:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-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-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / 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-white\/20:hover{background-color:#fff3}.hover\:bg-white\/30:hover{background-color:#ffffff4d}.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-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / 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\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / 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-OvQoqblD.js b/dist/assets/index-CWxNv9Fc.js similarity index 89% rename from dist/assets/index-OvQoqblD.js rename to dist/assets/index-CWxNv9Fc.js index 9966967..1992c8e 100644 --- a/dist/assets/index-OvQoqblD.js +++ b/dist/assets/index-CWxNv9Fc.js @@ -2,28 +2,28 @@ var ji=Object.defineProperty;var Ui=(e,t,n)=>t in e?ji(e,t,{enumerable:!0,config * @vue/shared v3.5.30 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function ks(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ee={},Vt=[],Ye=()=>{},uo=()=>!1,Un=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Vs=e=>e.startsWith("onUpdate:"),fe=Object.assign,Fs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Bi=Object.prototype.hasOwnProperty,Y=(e,t)=>Bi.call(e,t),V=Array.isArray,Ft=e=>vn(e)==="[object Map]",Wt=e=>vn(e)==="[object Set]",ur=e=>vn(e)==="[object Date]",B=e=>typeof e=="function",ue=e=>typeof e=="string",Xe=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",ao=e=>(Z(e)||B(e))&&B(e.then)&&B(e.catch),fo=Object.prototype.toString,vn=e=>fo.call(e),Hi=e=>vn(e).slice(8,-1),ho=e=>vn(e)==="[object Object]",Bn=e=>ue(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,en=ks(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Hn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ki=/-\w/g,Ee=Hn(e=>e.replace(Ki,t=>t.slice(1).toUpperCase())),Gi=/\B([A-Z])/g,Pt=Hn(e=>e.replace(Gi,"-$1").toLowerCase()),Kn=Hn(e=>e.charAt(0).toUpperCase()+e.slice(1)),os=Hn(e=>e?`on${Kn(e)}`:""),Qe=(e,t)=>!Object.is(e,t),An=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Gn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let ar;const Wn=()=>ar||(ar=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function js(e){if(V(e)){const t={};for(let n=0;n{if(n){const s=n.split(qi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function qn(e){let t="";if(ue(e))t=e;else if(V(e))for(let n=0;nqt(n,t))}const mo=e=>!!(e&&e.__v_isRef===!0),ys=e=>ue(e)?e:e==null?"":V(e)||Z(e)&&(e.toString===fo||!B(e.toString))?mo(e)?ys(e.value):JSON.stringify(e,_o,2):String(e),_o=(e,t)=>mo(t)?_o(e,t.value):Ft(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[is(s,o)+" =>"]=r,n),{})}:Wt(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>is(n))}:Xe(t)?is(t):Z(t)&&!V(t)&&!ho(t)?String(t):t,is=(e,t="")=>{var n;return Xe(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +**/function ks(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ee={},Vt=[],Ye=()=>{},uo=()=>!1,Un=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Vs=e=>e.startsWith("onUpdate:"),de=Object.assign,Fs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Bi=Object.prototype.hasOwnProperty,Y=(e,t)=>Bi.call(e,t),V=Array.isArray,Ft=e=>vn(e)==="[object Map]",Wt=e=>vn(e)==="[object Set]",ur=e=>vn(e)==="[object Date]",B=e=>typeof e=="function",ae=e=>typeof e=="string",Xe=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",ao=e=>(Z(e)||B(e))&&B(e.then)&&B(e.catch),fo=Object.prototype.toString,vn=e=>fo.call(e),Hi=e=>vn(e).slice(8,-1),ho=e=>vn(e)==="[object Object]",Bn=e=>ae(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,en=ks(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Hn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ki=/-\w/g,Ee=Hn(e=>e.replace(Ki,t=>t.slice(1).toUpperCase())),Gi=/\B([A-Z])/g,Pt=Hn(e=>e.replace(Gi,"-$1").toLowerCase()),Kn=Hn(e=>e.charAt(0).toUpperCase()+e.slice(1)),os=Hn(e=>e?`on${Kn(e)}`:""),Qe=(e,t)=>!Object.is(e,t),An=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Gn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let ar;const Wn=()=>ar||(ar=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function js(e){if(V(e)){const t={};for(let n=0;n{if(n){const s=n.split(qi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function qn(e){let t="";if(ae(e))t=e;else if(V(e))for(let n=0;nqt(n,t))}const mo=e=>!!(e&&e.__v_isRef===!0),ys=e=>ae(e)?e:e==null?"":V(e)||Z(e)&&(e.toString===fo||!B(e.toString))?mo(e)?ys(e.value):JSON.stringify(e,_o,2):String(e),_o=(e,t)=>mo(t)?_o(e,t.value):Ft(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[is(s,o)+" =>"]=r,n),{})}:Wt(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>is(n))}:Xe(t)?is(t):Z(t)&&!V(t)&&!ho(t)?String(t):t,is=(e,t="")=>{var n;return Xe(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 vo{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(nn){let t=nn;for(nn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;tn;){let t=tn;for(tn=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 xo(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ao(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Ks(s),Zi(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function bs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Ro(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Ro(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===fn)||(e.globalVersion=fn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!bs(e))))return;e.flags|=2;const t=e.dep,n=ne,s=je;ne=e,je=!0;try{xo(e);const r=e.fn(e._value);(t.version===0||Qe(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ne=n,je=s,Ao(e),e.flags&=-3}}function Ks(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)Ks(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Zi(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let je=!0;const Co=[];function ut(){Co.push(je),je=!1}function at(){const e=Co.pop();je=e===void 0?!0:e}function fr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ne;ne=void 0;try{t()}finally{ne=n}}}let fn=0;class el{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 Gs{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||!je||ne===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ne)n=this.activeLink=new el(ne,this),ne.deps?(n.prevDep=ne.depsTail,ne.depsTail.nextDep=n,ne.depsTail=n):ne.deps=ne.depsTail=n,Oo(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++,fn++,this.notify(t)}notify(t){Bs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Hs()}}}function Oo(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)Oo(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Pn=new WeakMap,Ct=Symbol(""),Es=Symbol(""),dn=Symbol("");function pe(e,t,n){if(je&&ne){let s=Pn.get(e);s||Pn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Gs),r.map=s,r.key=n),r.track()}}function ot(e,t,n,s,r,o){const i=Pn.get(e);if(!i){fn++;return}const l=c=>{c&&c.trigger()};if(Bs(),t==="clear")i.forEach(l);else{const c=V(e),f=c&&Bn(n);if(c&&n==="length"){const u=Number(s);i.forEach((d,g)=>{(g==="length"||g===dn||!Xe(g)&&g>=u)&&l(d)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),f&&l(i.get(dn)),t){case"add":c?f&&l(i.get("length")):(l(i.get(Ct)),Ft(e)&&l(i.get(Es)));break;case"delete":c||(l(i.get(Ct)),Ft(e)&&l(i.get(Es)));break;case"set":Ft(e)&&l(i.get(Ct));break}}Hs()}function tl(e,t){const n=Pn.get(e);return n&&n.get(t)}function Dt(e){const t=z(e);return t===e?t:(pe(t,"iterate",dn),Me(e)?t:t.map(Ue))}function $n(e){return pe(e=z(e),"iterate",dn),e}function ze(e,t){return ft(e)?Ut(lt(e)?Ue(t):t):Ue(t)}const nl={__proto__:null,[Symbol.iterator](){return cs(this,Symbol.iterator,e=>ze(this,e))},concat(...e){return Dt(this).concat(...e.map(t=>V(t)?Dt(t):t))},entries(){return cs(this,"entries",e=>(e[1]=ze(this,e[1]),e))},every(e,t){return tt(this,"every",e,t,void 0,arguments)},filter(e,t){return tt(this,"filter",e,t,n=>n.map(s=>ze(this,s)),arguments)},find(e,t){return tt(this,"find",e,t,n=>ze(this,n),arguments)},findIndex(e,t){return tt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return tt(this,"findLast",e,t,n=>ze(this,n),arguments)},findLastIndex(e,t){return tt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return tt(this,"forEach",e,t,void 0,arguments)},includes(...e){return us(this,"includes",e)},indexOf(...e){return us(this,"indexOf",e)},join(e){return Dt(this).join(e)},lastIndexOf(...e){return us(this,"lastIndexOf",e)},map(e,t){return tt(this,"map",e,t,void 0,arguments)},pop(){return zt(this,"pop")},push(...e){return zt(this,"push",e)},reduce(e,...t){return dr(this,"reduce",e,t)},reduceRight(e,...t){return dr(this,"reduceRight",e,t)},shift(){return zt(this,"shift")},some(e,t){return tt(this,"some",e,t,void 0,arguments)},splice(...e){return zt(this,"splice",e)},toReversed(){return Dt(this).toReversed()},toSorted(e){return Dt(this).toSorted(e)},toSpliced(...e){return Dt(this).toSpliced(...e)},unshift(...e){return zt(this,"unshift",e)},values(){return cs(this,"values",e=>ze(this,e))}};function cs(e,t,n){const s=$n(e),r=s[t]();return s!==e&&!Me(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.done||(o.value=n(o.value)),o}),r}const sl=Array.prototype;function tt(e,t,n,s,r,o){const i=$n(e),l=i!==e&&!Me(e),c=i[t];if(c!==sl[t]){const d=c.apply(e,o);return l?Ue(d):d}let f=n;i!==e&&(l?f=function(d,g){return n.call(this,ze(e,d),g,e)}:n.length>2&&(f=function(d,g){return n.call(this,d,g,e)}));const u=c.call(i,f,s);return l&&r?r(u):u}function dr(e,t,n,s){const r=$n(e),o=r!==e&&!Me(e);let i=n,l=!1;r!==e&&(o?(l=s.length===0,i=function(f,u,d){return l&&(l=!1,f=ze(e,f)),n.call(this,f,ze(e,u),d,e)}):n.length>3&&(i=function(f,u,d){return n.call(this,f,u,d,e)}));const c=r[t](i,...s);return l?ze(e,c):c}function us(e,t,n){const s=z(e);pe(s,"iterate",dn);const r=s[t](...n);return(r===-1||r===!1)&&zn(n[0])?(n[0]=z(n[0]),s[t](...n)):r}function zt(e,t,n=[]){ut(),Bs();const s=z(e)[t].apply(e,n);return Hs(),at(),s}const rl=ks("__proto__,__v_isRef,__isVue"),To=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Xe));function ol(e){Xe(e)||(e=String(e));const t=z(this);return pe(t,"has",e),t.hasOwnProperty(e)}class Po{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?gl:Mo:o?Do:No).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=V(t);if(!r){let c;if(i&&(c=nl[n]))return c;if(n==="hasOwnProperty")return ol}const l=Reflect.get(t,n,ie(t)?t:s);if((Xe(n)?To.has(n):rl(n))||(r||pe(t,"get",n),o))return l;if(ie(l)){const c=i&&Bn(n)?l:l.value;return r&&Z(c)?ws(c):c}return Z(l)?r?ws(l):yn(l):l}}class Io extends Po{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];const i=V(t)&&Bn(n);if(!this._isShallow){const f=ft(o);if(!Me(s)&&!ft(s)&&(o=z(o),s=z(s)),!i&&ie(o)&&!ie(s))return f||(o.value=s),!0}const l=i?Number(n)e,Sn=e=>Reflect.getPrototypeOf(e);function al(e,t,n){return function(...s){const r=this.__v_raw,o=z(r),i=Ft(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,f=r[e](...s),u=n?Ss:t?Ut:Ue;return!t&&pe(o,"iterate",c?Es:Ct),fe(Object.create(f),{next(){const{value:d,done:g}=f.next();return g?{value:d,done:g}:{value:l?[u(d[0]),u(d[1])]:u(d),done:g}}})}}function wn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function fl(e,t){const n={get(r){const o=this.__v_raw,i=z(o),l=z(r);e||(Qe(r,l)&&pe(i,"get",r),pe(i,"get",l));const{has:c}=Sn(i),f=t?Ss:e?Ut:Ue;if(c.call(i,r))return f(o.get(r));if(c.call(i,l))return f(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&pe(z(r),"iterate",Ct),r.size},has(r){const o=this.__v_raw,i=z(o),l=z(r);return e||(Qe(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=z(l),f=t?Ss:e?Ut:Ue;return!e&&pe(c,"iterate",Ct),l.forEach((u,d)=>r.call(o,f(u),f(d),i))}};return fe(n,e?{add:wn("add"),set:wn("set"),delete:wn("delete"),clear:wn("clear")}:{add(r){const o=z(this),i=Sn(o),l=z(r),c=!t&&!Me(r)&&!ft(r)?l:r;return i.has.call(o,c)||Qe(r,c)&&i.has.call(o,r)||Qe(l,c)&&i.has.call(o,l)||(o.add(c),ot(o,"add",c,c)),this},set(r,o){!t&&!Me(o)&&!ft(o)&&(o=z(o));const i=z(this),{has:l,get:c}=Sn(i);let f=l.call(i,r);f||(r=z(r),f=l.call(i,r));const u=c.call(i,r);return i.set(r,o),f?Qe(o,u)&&ot(i,"set",r,o):ot(i,"add",r,o),this},delete(r){const o=z(this),{has:i,get:l}=Sn(o);let c=i.call(o,r);c||(r=z(r),c=i.call(o,r)),l&&l.call(o,r);const f=o.delete(r);return c&&ot(o,"delete",r,void 0),f},clear(){const r=z(this),o=r.size!==0,i=r.clear();return o&&ot(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=al(r,e,t)}),n}function Ws(e,t){const n=fl(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 dl={get:Ws(!1,!1)},hl={get:Ws(!1,!0)},pl={get:Ws(!0,!1)};const No=new WeakMap,Do=new WeakMap,Mo=new WeakMap,gl=new WeakMap;function ml(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function _l(e){return e.__v_skip||!Object.isExtensible(e)?0:ml(Hi(e))}function yn(e){return ft(e)?e:qs(e,!1,ll,dl,No)}function Lo(e){return qs(e,!1,ul,hl,Do)}function ws(e){return qs(e,!0,cl,pl,Mo)}function qs(e,t,n,s,r){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=_l(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 lt(e){return ft(e)?lt(e.__v_raw):!!(e&&e.__v_isReactive)}function ft(e){return!!(e&&e.__v_isReadonly)}function Me(e){return!!(e&&e.__v_isShallow)}function zn(e){return e?!!e.__v_raw:!1}function z(e){const t=e&&e.__v_raw;return t?z(t):e}function $s(e){return!Y(e,"__v_skip")&&Object.isExtensible(e)&&po(e,"__v_skip",!0),e}const Ue=e=>Z(e)?yn(e):e,Ut=e=>Z(e)?ws(e):e;function ie(e){return e?e.__v_isRef===!0:!1}function Ie(e){return ko(e,!1)}function vl(e){return ko(e,!0)}function ko(e,t){return ie(e)?e:new yl(e,t)}class yl{constructor(t,n){this.dep=new Gs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:z(t),this._value=n?t:Ue(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Me(t)||ft(t);t=s?t:z(t),Qe(t,n)&&(this._rawValue=t,this._value=s?t:Ue(t),this.dep.trigger())}}function Ot(e){return ie(e)?e.value:e}const bl={get:(e,t,n)=>t==="__v_raw"?e:Ot(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 Vo(e){return lt(e)?e:new Proxy(e,bl)}function El(e){const t=V(e)?new Array(e.length):{};for(const n in e)t[n]=wl(e,n);return t}class Sl{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._raw=z(t);let r=!0,o=t;if(!V(t)||!Bn(String(n)))do r=!zn(o)||Me(o);while(r&&(o=o.__v_raw));this._shallow=r}get value(){let t=this._object[this._key];return this._shallow&&(t=Ot(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 tl(this._raw,this._key)}}function wl(e,t,n){return new Sl(e,t,n)}class xl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Gs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=fn-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 wo(this,!0),!0}get value(){const t=this.dep.track();return Ro(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Al(e,t,n=!1){let s,r;return B(e)?s=e:(s=e.get,r=e.set),new xl(s,r,n)}const xn={},In=new WeakMap;let At;function Rl(e,t=!1,n=At){if(n){let s=In.get(n);s||In.set(n,s=[]),s.push(e)}}function Cl(e,t,n=ee){const{immediate:s,deep:r,once:o,scheduler:i,augmentJob:l,call:c}=n,f=w=>r?w:Me(w)||r===!1||r===0?it(w,1):it(w);let u,d,g,m,A=!1,S=!1;if(ie(e)?(d=()=>e.value,A=Me(e)):lt(e)?(d=()=>f(e),A=!0):V(e)?(S=!0,A=e.some(w=>lt(w)||Me(w)),d=()=>e.map(w=>{if(ie(w))return w.value;if(lt(w))return f(w);if(B(w))return c?c(w,2):w()})):B(e)?t?d=c?()=>c(e,2):e:d=()=>{if(g){ut();try{g()}finally{at()}}const w=At;At=u;try{return c?c(e,3,[m]):e(m)}finally{At=w}}:d=Ye,t&&r){const w=d,U=r===!0?1/0:r;d=()=>it(w(),U)}const N=bo(),M=()=>{u.stop(),N&&N.active&&Fs(N.effects,u)};if(o&&t){const w=t;t=(...U)=>{w(...U),M()}}let T=S?new Array(e.length).fill(xn):xn;const D=w=>{if(!(!(u.flags&1)||!u.dirty&&!w))if(t){const U=u.run();if(r||A||(S?U.some((le,W)=>Qe(le,T[W])):Qe(U,T))){g&&g();const le=At;At=u;try{const W=[U,T===xn?void 0:S&&T[0]===xn?[]:T,m];T=U,c?c(t,3,W):t(...W)}finally{At=le}}}else u.run()};return l&&l(D),u=new Eo(d),u.scheduler=i?()=>i(D,!1):D,m=w=>Rl(w,!1,u),g=u.onStop=()=>{const w=In.get(u);if(w){if(c)c(w,4);else for(const U of w)U();In.delete(u)}},t?s?D(!0):T=u.run():i?i(D.bind(null,!0),!0):u.run(),M.pause=u.pause.bind(u),M.resume=u.resume.bind(u),M.stop=M,M}function it(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))it(e.value,t,n);else if(V(e))for(let s=0;s{it(s,t,n)});else if(ho(e)){for(const s in e)it(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&it(e[s],t,n)}return e}/** +**/let he;class vo{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(nn){let t=nn;for(nn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;tn;){let t=tn;for(tn=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 xo(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ao(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Ks(s),Zi(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function bs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Ro(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Ro(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===fn)||(e.globalVersion=fn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!bs(e))))return;e.flags|=2;const t=e.dep,n=ne,s=je;ne=e,je=!0;try{xo(e);const r=e.fn(e._value);(t.version===0||Qe(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ne=n,je=s,Ao(e),e.flags&=-3}}function Ks(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)Ks(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Zi(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let je=!0;const Co=[];function ut(){Co.push(je),je=!1}function at(){const e=Co.pop();je=e===void 0?!0:e}function fr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ne;ne=void 0;try{t()}finally{ne=n}}}let fn=0;class el{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 Gs{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||!je||ne===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ne)n=this.activeLink=new el(ne,this),ne.deps?(n.prevDep=ne.depsTail,ne.depsTail.nextDep=n,ne.depsTail=n):ne.deps=ne.depsTail=n,Oo(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++,fn++,this.notify(t)}notify(t){Bs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Hs()}}}function Oo(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)Oo(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Pn=new WeakMap,Ct=Symbol(""),Es=Symbol(""),dn=Symbol("");function pe(e,t,n){if(je&&ne){let s=Pn.get(e);s||Pn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Gs),r.map=s,r.key=n),r.track()}}function ot(e,t,n,s,r,o){const i=Pn.get(e);if(!i){fn++;return}const l=c=>{c&&c.trigger()};if(Bs(),t==="clear")i.forEach(l);else{const c=V(e),f=c&&Bn(n);if(c&&n==="length"){const u=Number(s);i.forEach((d,g)=>{(g==="length"||g===dn||!Xe(g)&&g>=u)&&l(d)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),f&&l(i.get(dn)),t){case"add":c?f&&l(i.get("length")):(l(i.get(Ct)),Ft(e)&&l(i.get(Es)));break;case"delete":c||(l(i.get(Ct)),Ft(e)&&l(i.get(Es)));break;case"set":Ft(e)&&l(i.get(Ct));break}}Hs()}function tl(e,t){const n=Pn.get(e);return n&&n.get(t)}function Dt(e){const t=z(e);return t===e?t:(pe(t,"iterate",dn),Me(e)?t:t.map(Ue))}function $n(e){return pe(e=z(e),"iterate",dn),e}function ze(e,t){return ft(e)?Ut(lt(e)?Ue(t):t):Ue(t)}const nl={__proto__:null,[Symbol.iterator](){return cs(this,Symbol.iterator,e=>ze(this,e))},concat(...e){return Dt(this).concat(...e.map(t=>V(t)?Dt(t):t))},entries(){return cs(this,"entries",e=>(e[1]=ze(this,e[1]),e))},every(e,t){return tt(this,"every",e,t,void 0,arguments)},filter(e,t){return tt(this,"filter",e,t,n=>n.map(s=>ze(this,s)),arguments)},find(e,t){return tt(this,"find",e,t,n=>ze(this,n),arguments)},findIndex(e,t){return tt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return tt(this,"findLast",e,t,n=>ze(this,n),arguments)},findLastIndex(e,t){return tt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return tt(this,"forEach",e,t,void 0,arguments)},includes(...e){return us(this,"includes",e)},indexOf(...e){return us(this,"indexOf",e)},join(e){return Dt(this).join(e)},lastIndexOf(...e){return us(this,"lastIndexOf",e)},map(e,t){return tt(this,"map",e,t,void 0,arguments)},pop(){return zt(this,"pop")},push(...e){return zt(this,"push",e)},reduce(e,...t){return dr(this,"reduce",e,t)},reduceRight(e,...t){return dr(this,"reduceRight",e,t)},shift(){return zt(this,"shift")},some(e,t){return tt(this,"some",e,t,void 0,arguments)},splice(...e){return zt(this,"splice",e)},toReversed(){return Dt(this).toReversed()},toSorted(e){return Dt(this).toSorted(e)},toSpliced(...e){return Dt(this).toSpliced(...e)},unshift(...e){return zt(this,"unshift",e)},values(){return cs(this,"values",e=>ze(this,e))}};function cs(e,t,n){const s=$n(e),r=s[t]();return s!==e&&!Me(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.done||(o.value=n(o.value)),o}),r}const sl=Array.prototype;function tt(e,t,n,s,r,o){const i=$n(e),l=i!==e&&!Me(e),c=i[t];if(c!==sl[t]){const d=c.apply(e,o);return l?Ue(d):d}let f=n;i!==e&&(l?f=function(d,g){return n.call(this,ze(e,d),g,e)}:n.length>2&&(f=function(d,g){return n.call(this,d,g,e)}));const u=c.call(i,f,s);return l&&r?r(u):u}function dr(e,t,n,s){const r=$n(e),o=r!==e&&!Me(e);let i=n,l=!1;r!==e&&(o?(l=s.length===0,i=function(f,u,d){return l&&(l=!1,f=ze(e,f)),n.call(this,f,ze(e,u),d,e)}):n.length>3&&(i=function(f,u,d){return n.call(this,f,u,d,e)}));const c=r[t](i,...s);return l?ze(e,c):c}function us(e,t,n){const s=z(e);pe(s,"iterate",dn);const r=s[t](...n);return(r===-1||r===!1)&&zn(n[0])?(n[0]=z(n[0]),s[t](...n)):r}function zt(e,t,n=[]){ut(),Bs();const s=z(e)[t].apply(e,n);return Hs(),at(),s}const rl=ks("__proto__,__v_isRef,__isVue"),To=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Xe));function ol(e){Xe(e)||(e=String(e));const t=z(this);return pe(t,"has",e),t.hasOwnProperty(e)}class Po{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?gl:Mo:o?Do:No).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=V(t);if(!r){let c;if(i&&(c=nl[n]))return c;if(n==="hasOwnProperty")return ol}const l=Reflect.get(t,n,le(t)?t:s);if((Xe(n)?To.has(n):rl(n))||(r||pe(t,"get",n),o))return l;if(le(l)){const c=i&&Bn(n)?l:l.value;return r&&Z(c)?ws(c):c}return Z(l)?r?ws(l):yn(l):l}}class Io extends Po{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];const i=V(t)&&Bn(n);if(!this._isShallow){const f=ft(o);if(!Me(s)&&!ft(s)&&(o=z(o),s=z(s)),!i&&le(o)&&!le(s))return f||(o.value=s),!0}const l=i?Number(n)e,Sn=e=>Reflect.getPrototypeOf(e);function al(e,t,n){return function(...s){const r=this.__v_raw,o=z(r),i=Ft(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,f=r[e](...s),u=n?Ss:t?Ut:Ue;return!t&&pe(o,"iterate",c?Es:Ct),de(Object.create(f),{next(){const{value:d,done:g}=f.next();return g?{value:d,done:g}:{value:l?[u(d[0]),u(d[1])]:u(d),done:g}}})}}function wn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function fl(e,t){const n={get(r){const o=this.__v_raw,i=z(o),l=z(r);e||(Qe(r,l)&&pe(i,"get",r),pe(i,"get",l));const{has:c}=Sn(i),f=t?Ss:e?Ut:Ue;if(c.call(i,r))return f(o.get(r));if(c.call(i,l))return f(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&pe(z(r),"iterate",Ct),r.size},has(r){const o=this.__v_raw,i=z(o),l=z(r);return e||(Qe(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=z(l),f=t?Ss:e?Ut:Ue;return!e&&pe(c,"iterate",Ct),l.forEach((u,d)=>r.call(o,f(u),f(d),i))}};return de(n,e?{add:wn("add"),set:wn("set"),delete:wn("delete"),clear:wn("clear")}:{add(r){const o=z(this),i=Sn(o),l=z(r),c=!t&&!Me(r)&&!ft(r)?l:r;return i.has.call(o,c)||Qe(r,c)&&i.has.call(o,r)||Qe(l,c)&&i.has.call(o,l)||(o.add(c),ot(o,"add",c,c)),this},set(r,o){!t&&!Me(o)&&!ft(o)&&(o=z(o));const i=z(this),{has:l,get:c}=Sn(i);let f=l.call(i,r);f||(r=z(r),f=l.call(i,r));const u=c.call(i,r);return i.set(r,o),f?Qe(o,u)&&ot(i,"set",r,o):ot(i,"add",r,o),this},delete(r){const o=z(this),{has:i,get:l}=Sn(o);let c=i.call(o,r);c||(r=z(r),c=i.call(o,r)),l&&l.call(o,r);const f=o.delete(r);return c&&ot(o,"delete",r,void 0),f},clear(){const r=z(this),o=r.size!==0,i=r.clear();return o&&ot(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=al(r,e,t)}),n}function Ws(e,t){const n=fl(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 dl={get:Ws(!1,!1)},hl={get:Ws(!1,!0)},pl={get:Ws(!0,!1)};const No=new WeakMap,Do=new WeakMap,Mo=new WeakMap,gl=new WeakMap;function ml(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function _l(e){return e.__v_skip||!Object.isExtensible(e)?0:ml(Hi(e))}function yn(e){return ft(e)?e:qs(e,!1,ll,dl,No)}function Lo(e){return qs(e,!1,ul,hl,Do)}function ws(e){return qs(e,!0,cl,pl,Mo)}function qs(e,t,n,s,r){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=_l(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 lt(e){return ft(e)?lt(e.__v_raw):!!(e&&e.__v_isReactive)}function ft(e){return!!(e&&e.__v_isReadonly)}function Me(e){return!!(e&&e.__v_isShallow)}function zn(e){return e?!!e.__v_raw:!1}function z(e){const t=e&&e.__v_raw;return t?z(t):e}function $s(e){return!Y(e,"__v_skip")&&Object.isExtensible(e)&&po(e,"__v_skip",!0),e}const Ue=e=>Z(e)?yn(e):e,Ut=e=>Z(e)?ws(e):e;function le(e){return e?e.__v_isRef===!0:!1}function Ie(e){return ko(e,!1)}function vl(e){return ko(e,!0)}function ko(e,t){return le(e)?e:new yl(e,t)}class yl{constructor(t,n){this.dep=new Gs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:z(t),this._value=n?t:Ue(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Me(t)||ft(t);t=s?t:z(t),Qe(t,n)&&(this._rawValue=t,this._value=s?t:Ue(t),this.dep.trigger())}}function Ot(e){return le(e)?e.value:e}const bl={get:(e,t,n)=>t==="__v_raw"?e:Ot(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return le(r)&&!le(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Vo(e){return lt(e)?e:new Proxy(e,bl)}function El(e){const t=V(e)?new Array(e.length):{};for(const n in e)t[n]=wl(e,n);return t}class Sl{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._raw=z(t);let r=!0,o=t;if(!V(t)||!Bn(String(n)))do r=!zn(o)||Me(o);while(r&&(o=o.__v_raw));this._shallow=r}get value(){let t=this._object[this._key];return this._shallow&&(t=Ot(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&le(this._raw[this._key])){const n=this._object[this._key];if(le(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return tl(this._raw,this._key)}}function wl(e,t,n){return new Sl(e,t,n)}class xl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Gs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=fn-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 wo(this,!0),!0}get value(){const t=this.dep.track();return Ro(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Al(e,t,n=!1){let s,r;return B(e)?s=e:(s=e.get,r=e.set),new xl(s,r,n)}const xn={},In=new WeakMap;let At;function Rl(e,t=!1,n=At){if(n){let s=In.get(n);s||In.set(n,s=[]),s.push(e)}}function Cl(e,t,n=ee){const{immediate:s,deep:r,once:o,scheduler:i,augmentJob:l,call:c}=n,f=w=>r?w:Me(w)||r===!1||r===0?it(w,1):it(w);let u,d,g,m,A=!1,S=!1;if(le(e)?(d=()=>e.value,A=Me(e)):lt(e)?(d=()=>f(e),A=!0):V(e)?(S=!0,A=e.some(w=>lt(w)||Me(w)),d=()=>e.map(w=>{if(le(w))return w.value;if(lt(w))return f(w);if(B(w))return c?c(w,2):w()})):B(e)?t?d=c?()=>c(e,2):e:d=()=>{if(g){ut();try{g()}finally{at()}}const w=At;At=u;try{return c?c(e,3,[m]):e(m)}finally{At=w}}:d=Ye,t&&r){const w=d,U=r===!0?1/0:r;d=()=>it(w(),U)}const N=bo(),M=()=>{u.stop(),N&&N.active&&Fs(N.effects,u)};if(o&&t){const w=t;t=(...U)=>{w(...U),M()}}let T=S?new Array(e.length).fill(xn):xn;const D=w=>{if(!(!(u.flags&1)||!u.dirty&&!w))if(t){const U=u.run();if(r||A||(S?U.some((ce,W)=>Qe(ce,T[W])):Qe(U,T))){g&&g();const ce=At;At=u;try{const W=[U,T===xn?void 0:S&&T[0]===xn?[]:T,m];T=U,c?c(t,3,W):t(...W)}finally{At=ce}}}else u.run()};return l&&l(D),u=new Eo(d),u.scheduler=i?()=>i(D,!1):D,m=w=>Rl(w,!1,u),g=u.onStop=()=>{const w=In.get(u);if(w){if(c)c(w,4);else for(const U of w)U();In.delete(u)}},t?s?D(!0):T=u.run():i?i(D.bind(null,!0),!0):u.run(),M.pause=u.pause.bind(u),M.resume=u.resume.bind(u),M.stop=M,M}function it(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--,le(e))it(e.value,t,n);else if(V(e))for(let s=0;s{it(s,t,n)});else if(ho(e)){for(const s in e)it(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&it(e[s],t,n)}return e}/** * @vue/runtime-core v3.5.30 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function bn(e,t,n,s){try{return s?e(...s):e()}catch(r){Jn(r,t,n)}}function Ze(e,t,n,s){if(B(e)){const r=bn(e,t,n,s);return r&&ao(r)&&r.catch(o=>{Jn(o,t,n)}),r}if(V(e)){const r=[];for(let o=0;o>>1,r=ye[s],o=hn(r);o=hn(n)?ye.push(e):ye.splice(Tl(t),0,e),e.flags|=1,jo()}}function jo(){Nn||(Nn=Fo.then(Bo))}function Pl(e){V(e)?jt.push(...e):_t&&e.id===-1?_t.splice(Lt+1,0,e):e.flags&1||(jt.push(e),e.flags|=1),jo()}function hr(e,t,n=$e+1){for(;nhn(n)-hn(s));if(jt.length=0,_t){_t.push(...t);return}for(_t=t,Lt=0;Lt<_t.length;Lt++){const n=_t[Lt];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}_t=null,Lt=0}}const hn=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Bo(e){try{for($e=0;$e{s._d&&kn(-1);const o=Dn(t);let i;try{i=e(...r)}finally{Dn(o),s._d&&kn(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function Nl(e,t){if(Ne===null)return e;const n=ts(Ne),s=e.dirs||(e.dirs=[]);for(let r=0;r1)return n&&B(t)?t.call(s&&s.proxy):t}}function Dl(){return!!(gi()||Tt)}const Ml=Symbol.for("v-scx"),Ll=()=>Fe(Ml);function sn(e,t,n){return Ko(e,t,n)}function Ko(e,t,n=ee){const{immediate:s,deep:r,flush:o,once:i}=n,l=fe({},n),c=t&&s||!t&&o!=="post";let f;if(gn){if(o==="sync"){const m=Ll();f=m.__watcherHandles||(m.__watcherHandles=[])}else if(!c){const m=()=>{};return m.stop=Ye,m.resume=Ye,m.pause=Ye,m}}const u=ge;l.call=(m,A,S)=>Ze(m,u,A,S);let d=!1;o==="post"?l.scheduler=m=>{Re(m,u&&u.suspense)}:o!=="sync"&&(d=!0,l.scheduler=(m,A)=>{A?m():zs(m)}),l.augmentJob=m=>{t&&(m.flags|=4),d&&(m.flags|=2,u&&(m.id=u.uid,m.i=u))};const g=Cl(e,t,l);return gn&&(f?f.push(g):c&&g()),g}function kl(e,t,n){const s=this.proxy,r=ue(e)?e.includes(".")?Go(s,e):()=>s[e]:e.bind(s,s);let o;B(t)?o=t:(o=t.handler,n=t);const i=En(this),l=Ko(r,o.bind(s),n);return i(),l}function Go(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;re.__isTeleport,jl=Symbol("_leaveCb");function Js(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Js(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 Yn(e,t){return B(e)?fe({name:e.name},t,{setup:e}):e}function Wo(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function pr(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const Mn=new WeakMap;function rn(e,t,n,s,r=!1){if(V(e)){e.forEach((S,N)=>rn(S,t&&(V(t)?t[N]:t),n,s,r));return}if(on(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&rn(e,t,n,s.component.subTree);return}const o=s.shapeFlag&4?ts(s.component):s.el,i=r?null:o,{i:l,r:c}=e,f=t&&t.r,u=l.refs===ee?l.refs={}:l.refs,d=l.setupState,g=z(d),m=d===ee?uo:S=>pr(u,S)?!1:Y(g,S),A=(S,N)=>!(N&&pr(u,N));if(f!=null&&f!==c){if(gr(t),ue(f))u[f]=null,m(f)&&(d[f]=null);else if(ie(f)){const S=t;A(f,S.k)&&(f.value=null),S.k&&(u[S.k]=null)}}if(B(c))bn(c,l,12,[i,u]);else{const S=ue(c),N=ie(c);if(S||N){const M=()=>{if(e.f){const T=S?m(c)?d[c]:u[c]:A()||!e.k?c.value:u[e.k];if(r)V(T)&&Fs(T,o);else if(V(T))T.includes(o)||T.push(o);else if(S)u[c]=[o],m(c)&&(d[c]=u[c]);else{const D=[o];A(c,e.k)&&(c.value=D),e.k&&(u[e.k]=D)}}else S?(u[c]=i,m(c)&&(d[c]=i)):N&&(A(c,e.k)&&(c.value=i),e.k&&(u[e.k]=i))};if(i){const T=()=>{M(),Mn.delete(e)};T.id=-1,Mn.set(e,T),Re(T,n)}else gr(e),M()}}}function gr(e){const t=Mn.get(e);t&&(t.flags|=8,Mn.delete(e))}Wn().requestIdleCallback;Wn().cancelIdleCallback;const on=e=>!!e.type.__asyncLoader,qo=e=>e.type.__isKeepAlive;function Ul(e,t){$o(e,"a",t)}function Bl(e,t){$o(e,"da",t)}function $o(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(Xn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)qo(r.parent.vnode)&&Hl(s,t,n,r),r=r.parent}}function Hl(e,t,n,s){const r=Xn(t,e,s,!0);Ys(()=>{Fs(s[t],r)},n)}function Xn(e,t,n=ge,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{ut();const l=En(n),c=Ze(t,n,e,i);return l(),at(),c});return s?r.unshift(o):r.push(o),o}}const dt=e=>(t,n=ge)=>{(!gn||e==="sp")&&Xn(e,(...s)=>t(...s),n)},Kl=dt("bm"),Qs=dt("m"),Gl=dt("bu"),Wl=dt("u"),ql=dt("bum"),Ys=dt("um"),$l=dt("sp"),zl=dt("rtg"),Jl=dt("rtc");function Ql(e,t=ge){Xn("ec",e,t)}const Yl="components";function Xl(e,t){return ec(Yl,e,!0,t)||e}const Zl=Symbol.for("v-ndc");function ec(e,t,n=!0,s=!1){const r=Ne||ge;if(r){const o=r.type;{const l=jc(o,!1);if(l&&(l===t||l===Ee(t)||l===Kn(Ee(t))))return o}const i=mr(r[e]||o[e],t)||mr(r.appContext[e],t);return!i&&s?o:i}}function mr(e,t){return e&&(e[t]||e[Ee(t)]||e[Kn(Ee(t))])}function _r(e,t,n,s){let r;const o=n,i=V(e);if(i||ue(e)){const l=i&<(e);let c=!1,f=!1;l&&(c=!Me(e),f=ft(e),e=$n(e)),r=new Array(e.length);for(let u=0,d=e.length;ut(l,c,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,f=l.length;ce?mi(e)?ts(e):xs(e.parent):null,ln=fe(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=>xs(e.parent),$root:e=>xs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Jo(e),$forceUpdate:e=>e.f||(e.f=()=>{zs(e.update)}),$nextTick:e=>e.n||(e.n=Qn.bind(e.proxy)),$watch:e=>kl.bind(e)}),as=(e,t)=>e!==ee&&!e.__isScriptSetup&&Y(e,t),tc={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(as(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];As&&(i[t]=0)}}const f=ln[t];let u,d;if(f)return t==="$attrs"&&pe(e.attrs,"get",""),f(e);if((u=l.__cssModules)&&(u=u[t]))return u;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 as(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)||as(t,l)||Y(o,l)||Y(s,l)||Y(ln,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 vr(e){return V(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let As=!0;function nc(e){const t=Jo(e),n=e.proxy,s=e.ctx;As=!1,t.beforeCreate&&yr(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:f,created:u,beforeMount:d,mounted:g,beforeUpdate:m,updated:A,activated:S,deactivated:N,beforeDestroy:M,beforeUnmount:T,destroyed:D,unmounted:w,render:U,renderTracked:le,renderTriggered:W,errorCaptured:K,serverPrefetch:G,expose:re,inheritAttrs:me,components:Oe,directives:Se,filters:Et}=t;if(f&&sc(f,s,null),i)for(const H in i){const J=i[H];B(J)&&(s[H]=J.bind(n))}if(r){const H=r.call(n,n);Z(H)&&(e.data=yn(H))}if(As=!0,o)for(const H in o){const J=o[H],et=B(J)?J.bind(n,n):B(J.get)?J.get.bind(n,n):Ye,pt=!B(J)&&B(J.set)?J.set.bind(n):Ye,He=ce({get:et,set:pt});Object.defineProperty(s,H,{enumerable:!0,configurable:!0,get:()=>He.value,set:we=>He.value=we})}if(l)for(const H in l)zo(l[H],s,n,H);if(c){const H=B(c)?c.call(n):c;Reflect.ownKeys(H).forEach(J=>{Rn(J,H[J])})}u&&yr(u,e,"c");function se(H,J){V(J)?J.forEach(et=>H(et.bind(n))):J&&H(J.bind(n))}if(se(Kl,d),se(Qs,g),se(Gl,m),se(Wl,A),se(Ul,S),se(Bl,N),se(Ql,K),se(Jl,le),se(zl,W),se(ql,T),se(Ys,w),se($l,G),V(re))if(re.length){const H=e.exposed||(e.exposed={});re.forEach(J=>{Object.defineProperty(H,J,{get:()=>n[J],set:et=>n[J]=et,enumerable:!0})})}else e.exposed||(e.exposed={});U&&e.render===Ye&&(e.render=U),me!=null&&(e.inheritAttrs=me),Oe&&(e.components=Oe),Se&&(e.directives=Se),G&&Wo(e)}function sc(e,t,n=Ye){V(e)&&(e=Rs(e));for(const s in e){const r=e[s];let o;Z(r)?"default"in r?o=Fe(r.from||s,r.default,!0):o=Fe(r.from||s):o=Fe(r),ie(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function yr(e,t,n){Ze(V(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function zo(e,t,n,s){let r=s.includes(".")?Go(n,s):()=>n[s];if(ue(e)){const o=t[e];B(o)&&sn(r,o)}else if(B(e))sn(r,e.bind(n));else if(Z(e))if(V(e))e.forEach(o=>zo(o,t,n,s));else{const o=B(e.handler)?e.handler.bind(n):t[e.handler];B(o)&&sn(r,o,e)}}function Jo(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(f=>Ln(c,f,i,!0)),Ln(c,t,i)),Z(t)&&o.set(t,c),c}function Ln(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&Ln(e,o,n,!0),r&&r.forEach(i=>Ln(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=rc[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const rc={data:br,props:Er,emits:Er,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:ic,provide:br,inject:oc};function br(e,t){return t?e?function(){return fe(B(e)?e.call(this,this):e,B(t)?t.call(this,this):t)}:t:e}function oc(e,t){return Zt(Rs(e),Rs(t))}function Rs(e){if(V(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ee(t)}Modifiers`]||e[`${Pt(t)}Modifiers`];function ac(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ee;let r=n;const o=t.startsWith("update:"),i=o&&uc(s,t.slice(7));i&&(i.trim&&(r=n.map(u=>ue(u)?u.trim():u)),i.number&&(r=n.map(Gn)));let l,c=s[l=os(t)]||s[l=os(Ee(t))];!c&&o&&(c=s[l=os(Pt(t))]),c&&Ze(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ze(f,e,6,r)}}const fc=new WeakMap;function Yo(e,t,n=!1){const s=n?fc: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=f=>{const u=Yo(f,t,!0);u&&(l=!0,fe(i,u))};!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):fe(i,o),Z(e)&&s.set(e,i),i)}function Zn(e,t){return!e||!Un(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,Pt(t))||Y(e,t))}function Sr(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:c,render:f,renderCache:u,props:d,data:g,setupState:m,ctx:A,inheritAttrs:S}=e,N=Dn(e);let M,T;try{if(n.shapeFlag&4){const w=r||s,U=w;M=Je(f.call(U,w,u,d,m,g,A)),T=l}else{const w=t;M=Je(w.length>1?w(d,{attrs:l,slots:i,emit:c}):w(d,null)),T=t.props?l:dc(l)}}catch(w){cn.length=0,Jn(w,e,1),M=be(bt)}let D=M;if(T&&S!==!1){const w=Object.keys(T),{shapeFlag:U}=D;w.length&&U&7&&(o&&w.some(Vs)&&(T=hc(T,o)),D=Bt(D,T,!1,!0))}return n.dirs&&(D=Bt(D,null,!1,!0),D.dirs=D.dirs?D.dirs.concat(n.dirs):n.dirs),n.transition&&Js(D,n.transition),M=D,Dn(N),M}const dc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Un(n))&&((t||(t={}))[n]=e[n]);return t},hc=(e,t)=>{const n={};for(const s in e)(!Vs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function pc(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,f=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?wr(s,i,f):!!i;if(c&8){const u=t.dynamicProps;for(let d=0;dObject.create(Zo),ti=e=>Object.getPrototypeOf(e)===Zo;function mc(e,t,n,s=!1){const r={},o=ei();e.propsDefaults=Object.create(null),ni(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:Lo(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function _c(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=z(r),[c]=e.propsOptions;let f=!1;if((s||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let d=0;d{c=!0;const[g,m]=si(d,t,!0);fe(i,g),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!o&&!c)return Z(e)&&s.set(e,Vt),Vt;if(V(o))for(let u=0;ue==="_"||e==="_ctx"||e==="$stable",Zs=e=>V(e)?e.map(Je):[Je(e)],yc=(e,t,n)=>{if(t._n)return t;const s=Il((...r)=>Zs(t(...r)),n);return s._c=!1,s},ri=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Xs(r))continue;const o=e[r];if(B(o))t[r]=yc(r,o,s);else if(o!=null){const i=Zs(o);t[r]=()=>i}}},oi=(e,t)=>{const n=Zs(t);e.slots.default=()=>n},ii=(e,t,n)=>{for(const s in t)(n||!Xs(s))&&(e[s]=t[s])},bc=(e,t,n)=>{const s=e.slots=ei();if(e.vnode.shapeFlag&32){const r=t._;r?(ii(s,t,n),n&&po(s,"_",r,!0)):ri(t,s)}else t&&oi(e,t)},Ec=(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:ii(r,t,n):(o=!t.$stable,ri(t,r)),i=t}else t&&(oi(e,t),i={default:1});if(o)for(const l in r)!Xs(l)&&i[l]==null&&delete r[l]},Re=Rc;function Sc(e){return wc(e)}function wc(e,t){const n=Wn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:f,setElementText:u,parentNode:d,nextSibling:g,setScopeId:m=Ye,insertStaticContent:A}=e,S=(a,h,p,_=null,b=null,v=null,C=void 0,R=null,x=!!h.dynamicChildren)=>{if(a===h)return;a&&!Jt(a,h)&&(_=y(a),we(a,b,v,!0),a=null),h.patchFlag===-2&&(x=!1,h.dynamicChildren=null);const{type:E,ref:F,shapeFlag:P}=h;switch(E){case es:N(a,h,p,_);break;case bt:M(a,h,p,_);break;case Cn:a==null&&T(h,p,_,C);break;case Ve:Oe(a,h,p,_,b,v,C,R,x);break;default:P&1?U(a,h,p,_,b,v,C,R,x):P&6?Se(a,h,p,_,b,v,C,R,x):(P&64||P&128)&&E.process(a,h,p,_,b,v,C,R,x,L)}F!=null&&b?rn(F,a&&a.ref,v,h||a,!h):F==null&&a&&a.ref!=null&&rn(a.ref,null,v,a,!0)},N=(a,h,p,_)=>{if(a==null)s(h.el=l(h.children),p,_);else{const b=h.el=a.el;h.children!==a.children&&f(b,h.children)}},M=(a,h,p,_)=>{a==null?s(h.el=c(h.children||""),p,_):h.el=a.el},T=(a,h,p,_)=>{[a.el,a.anchor]=A(a.children,h,p,_,a.el,a.anchor)},D=({el:a,anchor:h},p,_)=>{let b;for(;a&&a!==h;)b=g(a),s(a,p,_),a=b;s(h,p,_)},w=({el:a,anchor:h})=>{let p;for(;a&&a!==h;)p=g(a),r(a),a=p;r(h)},U=(a,h,p,_,b,v,C,R,x)=>{if(h.type==="svg"?C="svg":h.type==="math"&&(C="mathml"),a==null)le(h,p,_,b,v,C,R,x);else{const E=a.el&&a.el._isVueCE?a.el:null;try{E&&E._beginPatch(),G(a,h,b,v,C,R,x)}finally{E&&E._endPatch()}}},le=(a,h,p,_,b,v,C,R)=>{let x,E;const{props:F,shapeFlag:P,transition:k,dirs:j}=a;if(x=a.el=i(a.type,v,F&&F.is,F),P&8?u(x,a.children):P&16&&K(a.children,x,null,_,b,fs(a,v),C,R),j&&wt(a,null,_,"created"),W(x,a,a.scopeId,C,_),F){for(const te in F)te!=="value"&&!en(te)&&o(x,te,null,F[te],v,_);"value"in F&&o(x,"value",null,F.value,v),(E=F.onVnodeBeforeMount)&&qe(E,_,a)}j&&wt(a,null,_,"beforeMount");const $=xc(b,k);$&&k.beforeEnter(x),s(x,h,p),((E=F&&F.onVnodeMounted)||$||j)&&Re(()=>{E&&qe(E,_,a),$&&k.enter(x),j&&wt(a,null,_,"mounted")},b)},W=(a,h,p,_,b)=>{if(p&&m(a,p),_)for(let v=0;v<_.length;v++)m(a,_[v]);if(b){let v=b.subTree;if(h===v||ai(v.type)&&(v.ssContent===h||v.ssFallback===h)){const C=b.vnode;W(a,C,C.scopeId,C.slotScopeIds,b.parent)}}},K=(a,h,p,_,b,v,C,R,x=0)=>{for(let E=x;E{const R=h.el=a.el;let{patchFlag:x,dynamicChildren:E,dirs:F}=h;x|=a.patchFlag&16;const P=a.props||ee,k=h.props||ee;let j;if(p&&xt(p,!1),(j=k.onVnodeBeforeUpdate)&&qe(j,p,h,a),F&&wt(h,a,p,"beforeUpdate"),p&&xt(p,!0),(P.innerHTML&&k.innerHTML==null||P.textContent&&k.textContent==null)&&u(R,""),E?re(a.dynamicChildren,E,R,p,_,fs(h,b),v):C||J(a,h,R,null,p,_,fs(h,b),v,!1),x>0){if(x&16)me(R,P,k,p,b);else if(x&2&&P.class!==k.class&&o(R,"class",null,k.class,b),x&4&&o(R,"style",P.style,k.style,b),x&8){const $=h.dynamicProps;for(let te=0;te<$.length;te++){const X=$[te],xe=P[X],Ae=k[X];(Ae!==xe||X==="value")&&o(R,X,xe,Ae,b,p)}}x&1&&a.children!==h.children&&u(R,h.children)}else!C&&E==null&&me(R,P,k,p,b);((j=k.onVnodeUpdated)||F)&&Re(()=>{j&&qe(j,p,h,a),F&&wt(h,a,p,"updated")},_)},re=(a,h,p,_,b,v,C)=>{for(let R=0;R{if(h!==p){if(h!==ee)for(const v in h)!en(v)&&!(v in p)&&o(a,v,h[v],null,b,_);for(const v in p){if(en(v))continue;const C=p[v],R=h[v];C!==R&&v!=="value"&&o(a,v,R,C,b,_)}"value"in p&&o(a,"value",h.value,p.value,b)}},Oe=(a,h,p,_,b,v,C,R,x)=>{const E=h.el=a?a.el:l(""),F=h.anchor=a?a.anchor:l("");let{patchFlag:P,dynamicChildren:k,slotScopeIds:j}=h;j&&(R=R?R.concat(j):j),a==null?(s(E,p,_),s(F,p,_),K(h.children||[],p,F,b,v,C,R,x)):P>0&&P&64&&k&&a.dynamicChildren&&a.dynamicChildren.length===k.length?(re(a.dynamicChildren,k,p,b,v,C,R),(h.key!=null||b&&h===b.subTree)&&li(a,h,!0)):J(a,h,p,F,b,v,C,R,x)},Se=(a,h,p,_,b,v,C,R,x)=>{h.slotScopeIds=R,a==null?h.shapeFlag&512?b.ctx.activate(h,p,_,C,x):Et(h,p,_,b,v,C,x):ht(a,h,x)},Et=(a,h,p,_,b,v,C)=>{const R=a.component=Mc(a,_,b);if(qo(a)&&(R.ctx.renderer=L),Lc(R,!1,C),R.asyncDep){if(b&&b.registerDep(R,se,C),!a.el){const x=R.subTree=be(bt);M(null,x,h,p),a.placeholder=x.el}}else se(R,a,h,p,b,v,C)},ht=(a,h,p)=>{const _=h.component=a.component;if(pc(a,h,p))if(_.asyncDep&&!_.asyncResolved){H(_,h,p);return}else _.next=h,_.update();else h.el=a.el,_.vnode=h},se=(a,h,p,_,b,v,C)=>{const R=()=>{if(a.isMounted){let{next:P,bu:k,u:j,parent:$,vnode:te}=a;{const Ge=ci(a);if(Ge){P&&(P.el=te.el,H(a,P,C)),Ge.asyncDep.then(()=>{Re(()=>{a.isUnmounted||E()},b)});return}}let X=P,xe;xt(a,!1),P?(P.el=te.el,H(a,P,C)):P=te,k&&An(k),(xe=P.props&&P.props.onVnodeBeforeUpdate)&&qe(xe,$,P,te),xt(a,!0);const Ae=Sr(a),Ke=a.subTree;a.subTree=Ae,S(Ke,Ae,d(Ke.el),y(Ke),a,b,v),P.el=Ae.el,X===null&&gc(a,Ae.el),j&&Re(j,b),(xe=P.props&&P.props.onVnodeUpdated)&&Re(()=>qe(xe,$,P,te),b)}else{let P;const{el:k,props:j}=h,{bm:$,m:te,parent:X,root:xe,type:Ae}=a,Ke=on(h);xt(a,!1),$&&An($),!Ke&&(P=j&&j.onVnodeBeforeMount)&&qe(P,X,h),xt(a,!0);{xe.ce&&xe.ce._hasShadowRoot()&&xe.ce._injectChildStyle(Ae,a.parent?a.parent.type:void 0);const Ge=a.subTree=Sr(a);S(null,Ge,p,_,a,b,v),h.el=Ge.el}if(te&&Re(te,b),!Ke&&(P=j&&j.onVnodeMounted)){const Ge=h;Re(()=>qe(P,X,Ge),b)}(h.shapeFlag&256||X&&on(X.vnode)&&X.vnode.shapeFlag&256)&&a.a&&Re(a.a,b),a.isMounted=!0,h=p=_=null}};a.scope.on();const x=a.effect=new Eo(R);a.scope.off();const E=a.update=x.run.bind(x),F=a.job=x.runIfDirty.bind(x);F.i=a,F.id=a.uid,x.scheduler=()=>zs(F),xt(a,!0),E()},H=(a,h,p)=>{h.component=a;const _=a.vnode.props;a.vnode=h,a.next=null,_c(a,h.props,_,p),Ec(a,h.children,p),ut(),hr(a),at()},J=(a,h,p,_,b,v,C,R,x=!1)=>{const E=a&&a.children,F=a?a.shapeFlag:0,P=h.children,{patchFlag:k,shapeFlag:j}=h;if(k>0){if(k&128){pt(E,P,p,_,b,v,C,R,x);return}else if(k&256){et(E,P,p,_,b,v,C,R,x);return}}j&8?(F&16&&Le(E,b,v),P!==E&&u(p,P)):F&16?j&16?pt(E,P,p,_,b,v,C,R,x):Le(E,b,v,!0):(F&8&&u(p,""),j&16&&K(P,p,_,b,v,C,R,x))},et=(a,h,p,_,b,v,C,R,x)=>{a=a||Vt,h=h||Vt;const E=a.length,F=h.length,P=Math.min(E,F);let k;for(k=0;kF?Le(a,b,v,!0,!1,P):K(h,p,_,b,v,C,R,x,P)},pt=(a,h,p,_,b,v,C,R,x)=>{let E=0;const F=h.length;let P=a.length-1,k=F-1;for(;E<=P&&E<=k;){const j=a[E],$=h[E]=x?rt(h[E]):Je(h[E]);if(Jt(j,$))S(j,$,p,null,b,v,C,R,x);else break;E++}for(;E<=P&&E<=k;){const j=a[P],$=h[k]=x?rt(h[k]):Je(h[k]);if(Jt(j,$))S(j,$,p,null,b,v,C,R,x);else break;P--,k--}if(E>P){if(E<=k){const j=k+1,$=jk)for(;E<=P;)we(a[E],b,v,!0),E++;else{const j=E,$=E,te=new Map;for(E=$;E<=k;E++){const Te=h[E]=x?rt(h[E]):Je(h[E]);Te.key!=null&&te.set(Te.key,E)}let X,xe=0;const Ae=k-$+1;let Ke=!1,Ge=0;const $t=new Array(Ae);for(E=0;E=Ae){we(Te,b,v,!0);continue}let We;if(Te.key!=null)We=te.get(Te.key);else for(X=$;X<=k;X++)if($t[X-$]===0&&Jt(Te,h[X])){We=X;break}We===void 0?we(Te,b,v,!0):($t[We-$]=E+1,We>=Ge?Ge=We:Ke=!0,S(Te,h[We],p,null,b,v,C,R,x),xe++)}const or=Ke?Ac($t):Vt;for(X=or.length-1,E=Ae-1;E>=0;E--){const Te=$+E,We=h[Te],ir=h[Te+1],lr=Te+1{const{el:v,type:C,transition:R,children:x,shapeFlag:E}=a;if(E&6){He(a.component.subTree,h,p,_);return}if(E&128){a.suspense.move(h,p,_);return}if(E&64){C.move(a,h,p,L);return}if(C===Ve){s(v,h,p);for(let P=0;PR.enter(v),b);else{const{leave:P,delayLeave:k,afterLeave:j}=R,$=()=>{a.ctx.isUnmounted?r(v):s(v,h,p)},te=()=>{v._isLeaving&&v[jl](!0),P(v,()=>{$(),j&&j()})};k?k(v,$,te):te()}else s(v,h,p)},we=(a,h,p,_=!1,b=!1)=>{const{type:v,props:C,ref:R,children:x,dynamicChildren:E,shapeFlag:F,patchFlag:P,dirs:k,cacheIndex:j}=a;if(P===-2&&(b=!1),R!=null&&(ut(),rn(R,null,p,a,!0),at()),j!=null&&(h.renderCache[j]=void 0),F&256){h.ctx.deactivate(a);return}const $=F&1&&k,te=!on(a);let X;if(te&&(X=C&&C.onVnodeBeforeUnmount)&&qe(X,h,a),F&6)St(a.component,p,_);else{if(F&128){a.suspense.unmount(p,_);return}$&&wt(a,null,h,"beforeUnmount"),F&64?a.type.remove(a,h,p,L,_):E&&!E.hasOnce&&(v!==Ve||P>0&&P&64)?Le(E,h,p,!1,!0):(v===Ve&&P&384||!b&&F&16)&&Le(x,h,p),_&&It(a)}(te&&(X=C&&C.onVnodeUnmounted)||$)&&Re(()=>{X&&qe(X,h,a),$&&wt(a,null,h,"unmounted")},p)},It=a=>{const{type:h,el:p,anchor:_,transition:b}=a;if(h===Ve){Nt(p,_);return}if(h===Cn){w(a);return}const v=()=>{r(p),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(a.shapeFlag&1&&b&&!b.persisted){const{leave:C,delayLeave:R}=b,x=()=>C(p,v);R?R(a.el,v,x):x()}else v()},Nt=(a,h)=>{let p;for(;a!==h;)p=g(a),r(a),a=p;r(h)},St=(a,h,p)=>{const{bum:_,scope:b,job:v,subTree:C,um:R,m:x,a:E}=a;Ar(x),Ar(E),_&&An(_),b.stop(),v&&(v.flags|=8,we(C,a,h,p)),R&&Re(R,h),Re(()=>{a.isUnmounted=!0},h)},Le=(a,h,p,_=!1,b=!1,v=0)=>{for(let C=v;C{if(a.shapeFlag&6)return y(a.component.subTree);if(a.shapeFlag&128)return a.suspense.next();const h=g(a.anchor||a.el),p=h&&h[Vl];return p?g(p):h};let I=!1;const O=(a,h,p)=>{let _;a==null?h._vnode&&(we(h._vnode,null,null,!0),_=h._vnode.component):S(h._vnode||null,a,h,null,null,null,p),h._vnode=a,I||(I=!0,hr(_),Uo(),I=!1)},L={p:S,um:we,m:He,r:It,mt:Et,mc:K,pc:J,pbc:re,n:y,o:e};return{render:O,hydrate:void 0,createApp:cc(O)}}function fs({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 xt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function xc(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function li(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 ci(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ci(t)}function Ar(e){if(e)for(let t=0;te.__isSuspense;function Rc(e,t){t&&t.pendingBranch?V(e)?t.effects.push(...e):t.effects.push(e):Pl(e)}const Ve=Symbol.for("v-fgt"),es=Symbol.for("v-txt"),bt=Symbol.for("v-cmt"),Cn=Symbol.for("v-stc"),cn=[];let De=null;function Ce(e=!1){cn.push(De=e?null:[])}function Cc(){cn.pop(),De=cn[cn.length-1]||null}let pn=1;function kn(e,t=!1){pn+=e,e<0&&De&&t&&(De.hasOnce=!0)}function fi(e){return e.dynamicChildren=pn>0?De||Vt:null,Cc(),pn>0&&De&&De.push(e),e}function ke(e,t,n,s,r,o){return fi(Pe(e,t,n,s,r,o,!0))}function di(e,t,n,s,r){return fi(be(e,t,n,s,r,!0))}function Vn(e){return e?e.__v_isVNode===!0:!1}function Jt(e,t){return e.type===t.type&&e.key===t.key}const hi=({key:e})=>e??null,On=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ue(e)||ie(e)||B(e)?{i:Ne,r:e,k:t,f:!!n}:e:null);function Pe(e,t=null,n=null,s=0,r=null,o=e===Ve?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&hi(t),ref:t&&On(t),scopeId:Ho,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:Ne};return l?(er(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ue(n)?8:16),pn>0&&!i&&De&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&De.push(c),c}const be=Oc;function Oc(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===Zl)&&(e=bt),Vn(e)){const l=Bt(e,t,!0);return n&&er(l,n),pn>0&&!o&&De&&(l.shapeFlag&6?De[De.indexOf(e)]=l:De.push(l)),l.patchFlag=-2,l}if(Uc(e)&&(e=e.__vccOpts),t){t=Tc(t);let{class:l,style:c}=t;l&&!ue(l)&&(t.class=qn(l)),Z(c)&&(zn(c)&&!V(c)&&(c=fe({},c)),t.style=js(c))}const i=ue(e)?1:ai(e)?128:Fl(e)?64:Z(e)?4:B(e)?2:0;return Pe(e,t,n,s,r,i,o,!0)}function Tc(e){return e?zn(e)||ti(e)?fe({},e):e:null}function Bt(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:c}=e,f=t?Ic(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&hi(f),ref:t&&t.ref?n&&o?V(o)?o.concat(On(t)):[o,On(t)]:On(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!==Ve?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&&Bt(e.ssContent),ssFallback:e.ssFallback&&Bt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Js(u,c.clone(u)),u}function Pc(e=" ",t=0){return be(es,null,e,t)}function Ja(e,t){const n=be(Cn,null,e);return n.staticCount=t,n}function pi(e="",t=!1){return t?(Ce(),di(bt,null,e)):be(bt,null,e)}function Je(e){return e==null||typeof e=="boolean"?be(bt):V(e)?be(Ve,null,e.slice()):Vn(e)?rt(e):be(es,null,String(e))}function rt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Bt(e)}function er(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),er(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!ti(t)?t._ctx=Ne:r===3&&Ne&&(Ne.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else B(t)?(t={default:t,_ctx:Ne},n=32):(t=String(t),s&64?(n=16,t=[Pc(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ic(...e){const t={};for(let n=0;nge||Ne;let Fn,Os;{const e=Wn(),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)}};Fn=t("__VUE_INSTANCE_SETTERS__",n=>ge=n),Os=t("__VUE_SSR_SETTERS__",n=>gn=n)}const En=e=>{const t=ge;return Fn(e),e.scope.on(),()=>{e.scope.off(),Fn(t)}},Rr=()=>{ge&&ge.scope.off(),Fn(null)};function mi(e){return e.vnode.shapeFlag&4}let gn=!1;function Lc(e,t=!1,n=!1){t&&Os(t);const{props:s,children:r}=e.vnode,o=mi(e);mc(e,s,o,t),bc(e,r,n||t);const i=o?kc(e,t):void 0;return t&&Os(!1),i}function kc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,tc);const{setup:s}=n;if(s){ut();const r=e.setupContext=s.length>1?Fc(e):null,o=En(e),i=bn(s,e,0,[e.props,r]),l=ao(i);if(at(),o(),(l||e.sp)&&!on(e)&&Wo(e),l){if(i.then(Rr,Rr),t)return i.then(c=>{Cr(e,c)}).catch(c=>{Jn(c,e,0)});e.asyncDep=i}else Cr(e,i)}else _i(e)}function Cr(e,t,n){B(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=Vo(t)),_i(e)}function _i(e,t,n){const s=e.type;e.render||(e.render=s.render||Ye);{const r=En(e);ut();try{nc(e)}finally{at(),r()}}}const Vc={get(e,t){return pe(e,"get",""),e[t]}};function Fc(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Vc),slots:e.slots,emit:e.emit,expose:t}}function ts(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Vo($s(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in ln)return ln[n](e)},has(t,n){return n in t||n in ln}})):e.proxy}function jc(e,t=!0){return B(e)?e.displayName||e.name:e.name||t&&e.__name}function Uc(e){return B(e)&&"__vccOpts"in e}const ce=(e,t)=>Al(e,t,gn);function vi(e,t,n){try{kn(-1);const s=arguments.length;return s===2?Z(t)&&!V(t)?Vn(t)?be(e,null,[t]):be(e,t):be(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Vn(n)&&(n=[n]),be(e,t,n))}finally{kn(1)}}const Bc="3.5.30";/** +**/function bn(e,t,n,s){try{return s?e(...s):e()}catch(r){Jn(r,t,n)}}function Ze(e,t,n,s){if(B(e)){const r=bn(e,t,n,s);return r&&ao(r)&&r.catch(o=>{Jn(o,t,n)}),r}if(V(e)){const r=[];for(let o=0;o>>1,r=ye[s],o=hn(r);o=hn(n)?ye.push(e):ye.splice(Tl(t),0,e),e.flags|=1,jo()}}function jo(){Nn||(Nn=Fo.then(Bo))}function Pl(e){V(e)?jt.push(...e):_t&&e.id===-1?_t.splice(Lt+1,0,e):e.flags&1||(jt.push(e),e.flags|=1),jo()}function hr(e,t,n=$e+1){for(;nhn(n)-hn(s));if(jt.length=0,_t){_t.push(...t);return}for(_t=t,Lt=0;Lt<_t.length;Lt++){const n=_t[Lt];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}_t=null,Lt=0}}const hn=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Bo(e){try{for($e=0;$e{s._d&&kn(-1);const o=Dn(t);let i;try{i=e(...r)}finally{Dn(o),s._d&&kn(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function Nl(e,t){if(Ne===null)return e;const n=ts(Ne),s=e.dirs||(e.dirs=[]);for(let r=0;r1)return n&&B(t)?t.call(s&&s.proxy):t}}function Dl(){return!!(gi()||Tt)}const Ml=Symbol.for("v-scx"),Ll=()=>Fe(Ml);function sn(e,t,n){return Ko(e,t,n)}function Ko(e,t,n=ee){const{immediate:s,deep:r,flush:o,once:i}=n,l=de({},n),c=t&&s||!t&&o!=="post";let f;if(gn){if(o==="sync"){const m=Ll();f=m.__watcherHandles||(m.__watcherHandles=[])}else if(!c){const m=()=>{};return m.stop=Ye,m.resume=Ye,m.pause=Ye,m}}const u=ge;l.call=(m,A,S)=>Ze(m,u,A,S);let d=!1;o==="post"?l.scheduler=m=>{Re(m,u&&u.suspense)}:o!=="sync"&&(d=!0,l.scheduler=(m,A)=>{A?m():zs(m)}),l.augmentJob=m=>{t&&(m.flags|=4),d&&(m.flags|=2,u&&(m.id=u.uid,m.i=u))};const g=Cl(e,t,l);return gn&&(f?f.push(g):c&&g()),g}function kl(e,t,n){const s=this.proxy,r=ae(e)?e.includes(".")?Go(s,e):()=>s[e]:e.bind(s,s);let o;B(t)?o=t:(o=t.handler,n=t);const i=En(this),l=Ko(r,o.bind(s),n);return i(),l}function Go(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;re.__isTeleport,jl=Symbol("_leaveCb");function Js(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Js(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 Yn(e,t){return B(e)?de({name:e.name},t,{setup:e}):e}function Wo(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function pr(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const Mn=new WeakMap;function rn(e,t,n,s,r=!1){if(V(e)){e.forEach((S,N)=>rn(S,t&&(V(t)?t[N]:t),n,s,r));return}if(on(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&rn(e,t,n,s.component.subTree);return}const o=s.shapeFlag&4?ts(s.component):s.el,i=r?null:o,{i:l,r:c}=e,f=t&&t.r,u=l.refs===ee?l.refs={}:l.refs,d=l.setupState,g=z(d),m=d===ee?uo:S=>pr(u,S)?!1:Y(g,S),A=(S,N)=>!(N&&pr(u,N));if(f!=null&&f!==c){if(gr(t),ae(f))u[f]=null,m(f)&&(d[f]=null);else if(le(f)){const S=t;A(f,S.k)&&(f.value=null),S.k&&(u[S.k]=null)}}if(B(c))bn(c,l,12,[i,u]);else{const S=ae(c),N=le(c);if(S||N){const M=()=>{if(e.f){const T=S?m(c)?d[c]:u[c]:A()||!e.k?c.value:u[e.k];if(r)V(T)&&Fs(T,o);else if(V(T))T.includes(o)||T.push(o);else if(S)u[c]=[o],m(c)&&(d[c]=u[c]);else{const D=[o];A(c,e.k)&&(c.value=D),e.k&&(u[e.k]=D)}}else S?(u[c]=i,m(c)&&(d[c]=i)):N&&(A(c,e.k)&&(c.value=i),e.k&&(u[e.k]=i))};if(i){const T=()=>{M(),Mn.delete(e)};T.id=-1,Mn.set(e,T),Re(T,n)}else gr(e),M()}}}function gr(e){const t=Mn.get(e);t&&(t.flags|=8,Mn.delete(e))}Wn().requestIdleCallback;Wn().cancelIdleCallback;const on=e=>!!e.type.__asyncLoader,qo=e=>e.type.__isKeepAlive;function Ul(e,t){$o(e,"a",t)}function Bl(e,t){$o(e,"da",t)}function $o(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(Xn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)qo(r.parent.vnode)&&Hl(s,t,n,r),r=r.parent}}function Hl(e,t,n,s){const r=Xn(t,e,s,!0);Ys(()=>{Fs(s[t],r)},n)}function Xn(e,t,n=ge,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{ut();const l=En(n),c=Ze(t,n,e,i);return l(),at(),c});return s?r.unshift(o):r.push(o),o}}const dt=e=>(t,n=ge)=>{(!gn||e==="sp")&&Xn(e,(...s)=>t(...s),n)},Kl=dt("bm"),Qs=dt("m"),Gl=dt("bu"),Wl=dt("u"),ql=dt("bum"),Ys=dt("um"),$l=dt("sp"),zl=dt("rtg"),Jl=dt("rtc");function Ql(e,t=ge){Xn("ec",e,t)}const Yl="components";function Xl(e,t){return ec(Yl,e,!0,t)||e}const Zl=Symbol.for("v-ndc");function ec(e,t,n=!0,s=!1){const r=Ne||ge;if(r){const o=r.type;{const l=jc(o,!1);if(l&&(l===t||l===Ee(t)||l===Kn(Ee(t))))return o}const i=mr(r[e]||o[e],t)||mr(r.appContext[e],t);return!i&&s?o:i}}function mr(e,t){return e&&(e[t]||e[Ee(t)]||e[Kn(Ee(t))])}function _r(e,t,n,s){let r;const o=n,i=V(e);if(i||ae(e)){const l=i&<(e);let c=!1,f=!1;l&&(c=!Me(e),f=ft(e),e=$n(e)),r=new Array(e.length);for(let u=0,d=e.length;ut(l,c,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,f=l.length;ce?mi(e)?ts(e):xs(e.parent):null,ln=de(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=>xs(e.parent),$root:e=>xs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Jo(e),$forceUpdate:e=>e.f||(e.f=()=>{zs(e.update)}),$nextTick:e=>e.n||(e.n=Qn.bind(e.proxy)),$watch:e=>kl.bind(e)}),as=(e,t)=>e!==ee&&!e.__isScriptSetup&&Y(e,t),tc={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(as(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];As&&(i[t]=0)}}const f=ln[t];let u,d;if(f)return t==="$attrs"&&pe(e.attrs,"get",""),f(e);if((u=l.__cssModules)&&(u=u[t]))return u;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 as(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)||as(t,l)||Y(o,l)||Y(s,l)||Y(ln,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 vr(e){return V(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let As=!0;function nc(e){const t=Jo(e),n=e.proxy,s=e.ctx;As=!1,t.beforeCreate&&yr(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:f,created:u,beforeMount:d,mounted:g,beforeUpdate:m,updated:A,activated:S,deactivated:N,beforeDestroy:M,beforeUnmount:T,destroyed:D,unmounted:w,render:U,renderTracked:ce,renderTriggered:W,errorCaptured:K,serverPrefetch:G,expose:re,inheritAttrs:me,components:Oe,directives:Se,filters:Et}=t;if(f&&sc(f,s,null),i)for(const H in i){const J=i[H];B(J)&&(s[H]=J.bind(n))}if(r){const H=r.call(n,n);Z(H)&&(e.data=yn(H))}if(As=!0,o)for(const H in o){const J=o[H],et=B(J)?J.bind(n,n):B(J.get)?J.get.bind(n,n):Ye,pt=!B(J)&&B(J.set)?J.set.bind(n):Ye,He=ue({get:et,set:pt});Object.defineProperty(s,H,{enumerable:!0,configurable:!0,get:()=>He.value,set:we=>He.value=we})}if(l)for(const H in l)zo(l[H],s,n,H);if(c){const H=B(c)?c.call(n):c;Reflect.ownKeys(H).forEach(J=>{Rn(J,H[J])})}u&&yr(u,e,"c");function se(H,J){V(J)?J.forEach(et=>H(et.bind(n))):J&&H(J.bind(n))}if(se(Kl,d),se(Qs,g),se(Gl,m),se(Wl,A),se(Ul,S),se(Bl,N),se(Ql,K),se(Jl,ce),se(zl,W),se(ql,T),se(Ys,w),se($l,G),V(re))if(re.length){const H=e.exposed||(e.exposed={});re.forEach(J=>{Object.defineProperty(H,J,{get:()=>n[J],set:et=>n[J]=et,enumerable:!0})})}else e.exposed||(e.exposed={});U&&e.render===Ye&&(e.render=U),me!=null&&(e.inheritAttrs=me),Oe&&(e.components=Oe),Se&&(e.directives=Se),G&&Wo(e)}function sc(e,t,n=Ye){V(e)&&(e=Rs(e));for(const s in e){const r=e[s];let o;Z(r)?"default"in r?o=Fe(r.from||s,r.default,!0):o=Fe(r.from||s):o=Fe(r),le(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function yr(e,t,n){Ze(V(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function zo(e,t,n,s){let r=s.includes(".")?Go(n,s):()=>n[s];if(ae(e)){const o=t[e];B(o)&&sn(r,o)}else if(B(e))sn(r,e.bind(n));else if(Z(e))if(V(e))e.forEach(o=>zo(o,t,n,s));else{const o=B(e.handler)?e.handler.bind(n):t[e.handler];B(o)&&sn(r,o,e)}}function Jo(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(f=>Ln(c,f,i,!0)),Ln(c,t,i)),Z(t)&&o.set(t,c),c}function Ln(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&Ln(e,o,n,!0),r&&r.forEach(i=>Ln(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=rc[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const rc={data:br,props:Er,emits:Er,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:ic,provide:br,inject:oc};function br(e,t){return t?e?function(){return de(B(e)?e.call(this,this):e,B(t)?t.call(this,this):t)}:t:e}function oc(e,t){return Zt(Rs(e),Rs(t))}function Rs(e){if(V(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ee(t)}Modifiers`]||e[`${Pt(t)}Modifiers`];function ac(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ee;let r=n;const o=t.startsWith("update:"),i=o&&uc(s,t.slice(7));i&&(i.trim&&(r=n.map(u=>ae(u)?u.trim():u)),i.number&&(r=n.map(Gn)));let l,c=s[l=os(t)]||s[l=os(Ee(t))];!c&&o&&(c=s[l=os(Pt(t))]),c&&Ze(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ze(f,e,6,r)}}const fc=new WeakMap;function Yo(e,t,n=!1){const s=n?fc: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=f=>{const u=Yo(f,t,!0);u&&(l=!0,de(i,u))};!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):de(i,o),Z(e)&&s.set(e,i),i)}function Zn(e,t){return!e||!Un(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,Pt(t))||Y(e,t))}function Sr(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:c,render:f,renderCache:u,props:d,data:g,setupState:m,ctx:A,inheritAttrs:S}=e,N=Dn(e);let M,T;try{if(n.shapeFlag&4){const w=r||s,U=w;M=Je(f.call(U,w,u,d,m,g,A)),T=l}else{const w=t;M=Je(w.length>1?w(d,{attrs:l,slots:i,emit:c}):w(d,null)),T=t.props?l:dc(l)}}catch(w){cn.length=0,Jn(w,e,1),M=be(bt)}let D=M;if(T&&S!==!1){const w=Object.keys(T),{shapeFlag:U}=D;w.length&&U&7&&(o&&w.some(Vs)&&(T=hc(T,o)),D=Bt(D,T,!1,!0))}return n.dirs&&(D=Bt(D,null,!1,!0),D.dirs=D.dirs?D.dirs.concat(n.dirs):n.dirs),n.transition&&Js(D,n.transition),M=D,Dn(N),M}const dc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Un(n))&&((t||(t={}))[n]=e[n]);return t},hc=(e,t)=>{const n={};for(const s in e)(!Vs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function pc(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,f=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?wr(s,i,f):!!i;if(c&8){const u=t.dynamicProps;for(let d=0;dObject.create(Zo),ti=e=>Object.getPrototypeOf(e)===Zo;function mc(e,t,n,s=!1){const r={},o=ei();e.propsDefaults=Object.create(null),ni(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:Lo(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function _c(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=z(r),[c]=e.propsOptions;let f=!1;if((s||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let d=0;d{c=!0;const[g,m]=si(d,t,!0);de(i,g),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!o&&!c)return Z(e)&&s.set(e,Vt),Vt;if(V(o))for(let u=0;ue==="_"||e==="_ctx"||e==="$stable",Zs=e=>V(e)?e.map(Je):[Je(e)],yc=(e,t,n)=>{if(t._n)return t;const s=Il((...r)=>Zs(t(...r)),n);return s._c=!1,s},ri=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Xs(r))continue;const o=e[r];if(B(o))t[r]=yc(r,o,s);else if(o!=null){const i=Zs(o);t[r]=()=>i}}},oi=(e,t)=>{const n=Zs(t);e.slots.default=()=>n},ii=(e,t,n)=>{for(const s in t)(n||!Xs(s))&&(e[s]=t[s])},bc=(e,t,n)=>{const s=e.slots=ei();if(e.vnode.shapeFlag&32){const r=t._;r?(ii(s,t,n),n&&po(s,"_",r,!0)):ri(t,s)}else t&&oi(e,t)},Ec=(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:ii(r,t,n):(o=!t.$stable,ri(t,r)),i=t}else t&&(oi(e,t),i={default:1});if(o)for(const l in r)!Xs(l)&&i[l]==null&&delete r[l]},Re=Rc;function Sc(e){return wc(e)}function wc(e,t){const n=Wn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:f,setElementText:u,parentNode:d,nextSibling:g,setScopeId:m=Ye,insertStaticContent:A}=e,S=(a,h,p,_=null,b=null,v=null,C=void 0,R=null,x=!!h.dynamicChildren)=>{if(a===h)return;a&&!Jt(a,h)&&(_=y(a),we(a,b,v,!0),a=null),h.patchFlag===-2&&(x=!1,h.dynamicChildren=null);const{type:E,ref:F,shapeFlag:P}=h;switch(E){case es:N(a,h,p,_);break;case bt:M(a,h,p,_);break;case Cn:a==null&&T(h,p,_,C);break;case Ve:Oe(a,h,p,_,b,v,C,R,x);break;default:P&1?U(a,h,p,_,b,v,C,R,x):P&6?Se(a,h,p,_,b,v,C,R,x):(P&64||P&128)&&E.process(a,h,p,_,b,v,C,R,x,L)}F!=null&&b?rn(F,a&&a.ref,v,h||a,!h):F==null&&a&&a.ref!=null&&rn(a.ref,null,v,a,!0)},N=(a,h,p,_)=>{if(a==null)s(h.el=l(h.children),p,_);else{const b=h.el=a.el;h.children!==a.children&&f(b,h.children)}},M=(a,h,p,_)=>{a==null?s(h.el=c(h.children||""),p,_):h.el=a.el},T=(a,h,p,_)=>{[a.el,a.anchor]=A(a.children,h,p,_,a.el,a.anchor)},D=({el:a,anchor:h},p,_)=>{let b;for(;a&&a!==h;)b=g(a),s(a,p,_),a=b;s(h,p,_)},w=({el:a,anchor:h})=>{let p;for(;a&&a!==h;)p=g(a),r(a),a=p;r(h)},U=(a,h,p,_,b,v,C,R,x)=>{if(h.type==="svg"?C="svg":h.type==="math"&&(C="mathml"),a==null)ce(h,p,_,b,v,C,R,x);else{const E=a.el&&a.el._isVueCE?a.el:null;try{E&&E._beginPatch(),G(a,h,b,v,C,R,x)}finally{E&&E._endPatch()}}},ce=(a,h,p,_,b,v,C,R)=>{let x,E;const{props:F,shapeFlag:P,transition:k,dirs:j}=a;if(x=a.el=i(a.type,v,F&&F.is,F),P&8?u(x,a.children):P&16&&K(a.children,x,null,_,b,fs(a,v),C,R),j&&wt(a,null,_,"created"),W(x,a,a.scopeId,C,_),F){for(const te in F)te!=="value"&&!en(te)&&o(x,te,null,F[te],v,_);"value"in F&&o(x,"value",null,F.value,v),(E=F.onVnodeBeforeMount)&&qe(E,_,a)}j&&wt(a,null,_,"beforeMount");const $=xc(b,k);$&&k.beforeEnter(x),s(x,h,p),((E=F&&F.onVnodeMounted)||$||j)&&Re(()=>{E&&qe(E,_,a),$&&k.enter(x),j&&wt(a,null,_,"mounted")},b)},W=(a,h,p,_,b)=>{if(p&&m(a,p),_)for(let v=0;v<_.length;v++)m(a,_[v]);if(b){let v=b.subTree;if(h===v||ai(v.type)&&(v.ssContent===h||v.ssFallback===h)){const C=b.vnode;W(a,C,C.scopeId,C.slotScopeIds,b.parent)}}},K=(a,h,p,_,b,v,C,R,x=0)=>{for(let E=x;E{const R=h.el=a.el;let{patchFlag:x,dynamicChildren:E,dirs:F}=h;x|=a.patchFlag&16;const P=a.props||ee,k=h.props||ee;let j;if(p&&xt(p,!1),(j=k.onVnodeBeforeUpdate)&&qe(j,p,h,a),F&&wt(h,a,p,"beforeUpdate"),p&&xt(p,!0),(P.innerHTML&&k.innerHTML==null||P.textContent&&k.textContent==null)&&u(R,""),E?re(a.dynamicChildren,E,R,p,_,fs(h,b),v):C||J(a,h,R,null,p,_,fs(h,b),v,!1),x>0){if(x&16)me(R,P,k,p,b);else if(x&2&&P.class!==k.class&&o(R,"class",null,k.class,b),x&4&&o(R,"style",P.style,k.style,b),x&8){const $=h.dynamicProps;for(let te=0;te<$.length;te++){const X=$[te],xe=P[X],Ae=k[X];(Ae!==xe||X==="value")&&o(R,X,xe,Ae,b,p)}}x&1&&a.children!==h.children&&u(R,h.children)}else!C&&E==null&&me(R,P,k,p,b);((j=k.onVnodeUpdated)||F)&&Re(()=>{j&&qe(j,p,h,a),F&&wt(h,a,p,"updated")},_)},re=(a,h,p,_,b,v,C)=>{for(let R=0;R{if(h!==p){if(h!==ee)for(const v in h)!en(v)&&!(v in p)&&o(a,v,h[v],null,b,_);for(const v in p){if(en(v))continue;const C=p[v],R=h[v];C!==R&&v!=="value"&&o(a,v,R,C,b,_)}"value"in p&&o(a,"value",h.value,p.value,b)}},Oe=(a,h,p,_,b,v,C,R,x)=>{const E=h.el=a?a.el:l(""),F=h.anchor=a?a.anchor:l("");let{patchFlag:P,dynamicChildren:k,slotScopeIds:j}=h;j&&(R=R?R.concat(j):j),a==null?(s(E,p,_),s(F,p,_),K(h.children||[],p,F,b,v,C,R,x)):P>0&&P&64&&k&&a.dynamicChildren&&a.dynamicChildren.length===k.length?(re(a.dynamicChildren,k,p,b,v,C,R),(h.key!=null||b&&h===b.subTree)&&li(a,h,!0)):J(a,h,p,F,b,v,C,R,x)},Se=(a,h,p,_,b,v,C,R,x)=>{h.slotScopeIds=R,a==null?h.shapeFlag&512?b.ctx.activate(h,p,_,C,x):Et(h,p,_,b,v,C,x):ht(a,h,x)},Et=(a,h,p,_,b,v,C)=>{const R=a.component=Mc(a,_,b);if(qo(a)&&(R.ctx.renderer=L),Lc(R,!1,C),R.asyncDep){if(b&&b.registerDep(R,se,C),!a.el){const x=R.subTree=be(bt);M(null,x,h,p),a.placeholder=x.el}}else se(R,a,h,p,b,v,C)},ht=(a,h,p)=>{const _=h.component=a.component;if(pc(a,h,p))if(_.asyncDep&&!_.asyncResolved){H(_,h,p);return}else _.next=h,_.update();else h.el=a.el,_.vnode=h},se=(a,h,p,_,b,v,C)=>{const R=()=>{if(a.isMounted){let{next:P,bu:k,u:j,parent:$,vnode:te}=a;{const Ge=ci(a);if(Ge){P&&(P.el=te.el,H(a,P,C)),Ge.asyncDep.then(()=>{Re(()=>{a.isUnmounted||E()},b)});return}}let X=P,xe;xt(a,!1),P?(P.el=te.el,H(a,P,C)):P=te,k&&An(k),(xe=P.props&&P.props.onVnodeBeforeUpdate)&&qe(xe,$,P,te),xt(a,!0);const Ae=Sr(a),Ke=a.subTree;a.subTree=Ae,S(Ke,Ae,d(Ke.el),y(Ke),a,b,v),P.el=Ae.el,X===null&&gc(a,Ae.el),j&&Re(j,b),(xe=P.props&&P.props.onVnodeUpdated)&&Re(()=>qe(xe,$,P,te),b)}else{let P;const{el:k,props:j}=h,{bm:$,m:te,parent:X,root:xe,type:Ae}=a,Ke=on(h);xt(a,!1),$&&An($),!Ke&&(P=j&&j.onVnodeBeforeMount)&&qe(P,X,h),xt(a,!0);{xe.ce&&xe.ce._hasShadowRoot()&&xe.ce._injectChildStyle(Ae,a.parent?a.parent.type:void 0);const Ge=a.subTree=Sr(a);S(null,Ge,p,_,a,b,v),h.el=Ge.el}if(te&&Re(te,b),!Ke&&(P=j&&j.onVnodeMounted)){const Ge=h;Re(()=>qe(P,X,Ge),b)}(h.shapeFlag&256||X&&on(X.vnode)&&X.vnode.shapeFlag&256)&&a.a&&Re(a.a,b),a.isMounted=!0,h=p=_=null}};a.scope.on();const x=a.effect=new Eo(R);a.scope.off();const E=a.update=x.run.bind(x),F=a.job=x.runIfDirty.bind(x);F.i=a,F.id=a.uid,x.scheduler=()=>zs(F),xt(a,!0),E()},H=(a,h,p)=>{h.component=a;const _=a.vnode.props;a.vnode=h,a.next=null,_c(a,h.props,_,p),Ec(a,h.children,p),ut(),hr(a),at()},J=(a,h,p,_,b,v,C,R,x=!1)=>{const E=a&&a.children,F=a?a.shapeFlag:0,P=h.children,{patchFlag:k,shapeFlag:j}=h;if(k>0){if(k&128){pt(E,P,p,_,b,v,C,R,x);return}else if(k&256){et(E,P,p,_,b,v,C,R,x);return}}j&8?(F&16&&Le(E,b,v),P!==E&&u(p,P)):F&16?j&16?pt(E,P,p,_,b,v,C,R,x):Le(E,b,v,!0):(F&8&&u(p,""),j&16&&K(P,p,_,b,v,C,R,x))},et=(a,h,p,_,b,v,C,R,x)=>{a=a||Vt,h=h||Vt;const E=a.length,F=h.length,P=Math.min(E,F);let k;for(k=0;kF?Le(a,b,v,!0,!1,P):K(h,p,_,b,v,C,R,x,P)},pt=(a,h,p,_,b,v,C,R,x)=>{let E=0;const F=h.length;let P=a.length-1,k=F-1;for(;E<=P&&E<=k;){const j=a[E],$=h[E]=x?rt(h[E]):Je(h[E]);if(Jt(j,$))S(j,$,p,null,b,v,C,R,x);else break;E++}for(;E<=P&&E<=k;){const j=a[P],$=h[k]=x?rt(h[k]):Je(h[k]);if(Jt(j,$))S(j,$,p,null,b,v,C,R,x);else break;P--,k--}if(E>P){if(E<=k){const j=k+1,$=jk)for(;E<=P;)we(a[E],b,v,!0),E++;else{const j=E,$=E,te=new Map;for(E=$;E<=k;E++){const Te=h[E]=x?rt(h[E]):Je(h[E]);Te.key!=null&&te.set(Te.key,E)}let X,xe=0;const Ae=k-$+1;let Ke=!1,Ge=0;const $t=new Array(Ae);for(E=0;E=Ae){we(Te,b,v,!0);continue}let We;if(Te.key!=null)We=te.get(Te.key);else for(X=$;X<=k;X++)if($t[X-$]===0&&Jt(Te,h[X])){We=X;break}We===void 0?we(Te,b,v,!0):($t[We-$]=E+1,We>=Ge?Ge=We:Ke=!0,S(Te,h[We],p,null,b,v,C,R,x),xe++)}const or=Ke?Ac($t):Vt;for(X=or.length-1,E=Ae-1;E>=0;E--){const Te=$+E,We=h[Te],ir=h[Te+1],lr=Te+1{const{el:v,type:C,transition:R,children:x,shapeFlag:E}=a;if(E&6){He(a.component.subTree,h,p,_);return}if(E&128){a.suspense.move(h,p,_);return}if(E&64){C.move(a,h,p,L);return}if(C===Ve){s(v,h,p);for(let P=0;PR.enter(v),b);else{const{leave:P,delayLeave:k,afterLeave:j}=R,$=()=>{a.ctx.isUnmounted?r(v):s(v,h,p)},te=()=>{v._isLeaving&&v[jl](!0),P(v,()=>{$(),j&&j()})};k?k(v,$,te):te()}else s(v,h,p)},we=(a,h,p,_=!1,b=!1)=>{const{type:v,props:C,ref:R,children:x,dynamicChildren:E,shapeFlag:F,patchFlag:P,dirs:k,cacheIndex:j}=a;if(P===-2&&(b=!1),R!=null&&(ut(),rn(R,null,p,a,!0),at()),j!=null&&(h.renderCache[j]=void 0),F&256){h.ctx.deactivate(a);return}const $=F&1&&k,te=!on(a);let X;if(te&&(X=C&&C.onVnodeBeforeUnmount)&&qe(X,h,a),F&6)St(a.component,p,_);else{if(F&128){a.suspense.unmount(p,_);return}$&&wt(a,null,h,"beforeUnmount"),F&64?a.type.remove(a,h,p,L,_):E&&!E.hasOnce&&(v!==Ve||P>0&&P&64)?Le(E,h,p,!1,!0):(v===Ve&&P&384||!b&&F&16)&&Le(x,h,p),_&&It(a)}(te&&(X=C&&C.onVnodeUnmounted)||$)&&Re(()=>{X&&qe(X,h,a),$&&wt(a,null,h,"unmounted")},p)},It=a=>{const{type:h,el:p,anchor:_,transition:b}=a;if(h===Ve){Nt(p,_);return}if(h===Cn){w(a);return}const v=()=>{r(p),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(a.shapeFlag&1&&b&&!b.persisted){const{leave:C,delayLeave:R}=b,x=()=>C(p,v);R?R(a.el,v,x):x()}else v()},Nt=(a,h)=>{let p;for(;a!==h;)p=g(a),r(a),a=p;r(h)},St=(a,h,p)=>{const{bum:_,scope:b,job:v,subTree:C,um:R,m:x,a:E}=a;Ar(x),Ar(E),_&&An(_),b.stop(),v&&(v.flags|=8,we(C,a,h,p)),R&&Re(R,h),Re(()=>{a.isUnmounted=!0},h)},Le=(a,h,p,_=!1,b=!1,v=0)=>{for(let C=v;C{if(a.shapeFlag&6)return y(a.component.subTree);if(a.shapeFlag&128)return a.suspense.next();const h=g(a.anchor||a.el),p=h&&h[Vl];return p?g(p):h};let I=!1;const O=(a,h,p)=>{let _;a==null?h._vnode&&(we(h._vnode,null,null,!0),_=h._vnode.component):S(h._vnode||null,a,h,null,null,null,p),h._vnode=a,I||(I=!0,hr(_),Uo(),I=!1)},L={p:S,um:we,m:He,r:It,mt:Et,mc:K,pc:J,pbc:re,n:y,o:e};return{render:O,hydrate:void 0,createApp:cc(O)}}function fs({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 xt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function xc(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function li(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 ci(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ci(t)}function Ar(e){if(e)for(let t=0;te.__isSuspense;function Rc(e,t){t&&t.pendingBranch?V(e)?t.effects.push(...e):t.effects.push(e):Pl(e)}const Ve=Symbol.for("v-fgt"),es=Symbol.for("v-txt"),bt=Symbol.for("v-cmt"),Cn=Symbol.for("v-stc"),cn=[];let De=null;function Ce(e=!1){cn.push(De=e?null:[])}function Cc(){cn.pop(),De=cn[cn.length-1]||null}let pn=1;function kn(e,t=!1){pn+=e,e<0&&De&&t&&(De.hasOnce=!0)}function fi(e){return e.dynamicChildren=pn>0?De||Vt:null,Cc(),pn>0&&De&&De.push(e),e}function ke(e,t,n,s,r,o){return fi(Pe(e,t,n,s,r,o,!0))}function di(e,t,n,s,r){return fi(be(e,t,n,s,r,!0))}function Vn(e){return e?e.__v_isVNode===!0:!1}function Jt(e,t){return e.type===t.type&&e.key===t.key}const hi=({key:e})=>e??null,On=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ae(e)||le(e)||B(e)?{i:Ne,r:e,k:t,f:!!n}:e:null);function Pe(e,t=null,n=null,s=0,r=null,o=e===Ve?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&hi(t),ref:t&&On(t),scopeId:Ho,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:Ne};return l?(er(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ae(n)?8:16),pn>0&&!i&&De&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&De.push(c),c}const be=Oc;function Oc(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===Zl)&&(e=bt),Vn(e)){const l=Bt(e,t,!0);return n&&er(l,n),pn>0&&!o&&De&&(l.shapeFlag&6?De[De.indexOf(e)]=l:De.push(l)),l.patchFlag=-2,l}if(Uc(e)&&(e=e.__vccOpts),t){t=Tc(t);let{class:l,style:c}=t;l&&!ae(l)&&(t.class=qn(l)),Z(c)&&(zn(c)&&!V(c)&&(c=de({},c)),t.style=js(c))}const i=ae(e)?1:ai(e)?128:Fl(e)?64:Z(e)?4:B(e)?2:0;return Pe(e,t,n,s,r,i,o,!0)}function Tc(e){return e?zn(e)||ti(e)?de({},e):e:null}function Bt(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:c}=e,f=t?Ic(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&hi(f),ref:t&&t.ref?n&&o?V(o)?o.concat(On(t)):[o,On(t)]:On(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!==Ve?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&&Bt(e.ssContent),ssFallback:e.ssFallback&&Bt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Js(u,c.clone(u)),u}function Pc(e=" ",t=0){return be(es,null,e,t)}function Ja(e,t){const n=be(Cn,null,e);return n.staticCount=t,n}function pi(e="",t=!1){return t?(Ce(),di(bt,null,e)):be(bt,null,e)}function Je(e){return e==null||typeof e=="boolean"?be(bt):V(e)?be(Ve,null,e.slice()):Vn(e)?rt(e):be(es,null,String(e))}function rt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Bt(e)}function er(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),er(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!ti(t)?t._ctx=Ne:r===3&&Ne&&(Ne.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else B(t)?(t={default:t,_ctx:Ne},n=32):(t=String(t),s&64?(n=16,t=[Pc(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ic(...e){const t={};for(let n=0;nge||Ne;let Fn,Os;{const e=Wn(),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)}};Fn=t("__VUE_INSTANCE_SETTERS__",n=>ge=n),Os=t("__VUE_SSR_SETTERS__",n=>gn=n)}const En=e=>{const t=ge;return Fn(e),e.scope.on(),()=>{e.scope.off(),Fn(t)}},Rr=()=>{ge&&ge.scope.off(),Fn(null)};function mi(e){return e.vnode.shapeFlag&4}let gn=!1;function Lc(e,t=!1,n=!1){t&&Os(t);const{props:s,children:r}=e.vnode,o=mi(e);mc(e,s,o,t),bc(e,r,n||t);const i=o?kc(e,t):void 0;return t&&Os(!1),i}function kc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,tc);const{setup:s}=n;if(s){ut();const r=e.setupContext=s.length>1?Fc(e):null,o=En(e),i=bn(s,e,0,[e.props,r]),l=ao(i);if(at(),o(),(l||e.sp)&&!on(e)&&Wo(e),l){if(i.then(Rr,Rr),t)return i.then(c=>{Cr(e,c)}).catch(c=>{Jn(c,e,0)});e.asyncDep=i}else Cr(e,i)}else _i(e)}function Cr(e,t,n){B(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=Vo(t)),_i(e)}function _i(e,t,n){const s=e.type;e.render||(e.render=s.render||Ye);{const r=En(e);ut();try{nc(e)}finally{at(),r()}}}const Vc={get(e,t){return pe(e,"get",""),e[t]}};function Fc(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Vc),slots:e.slots,emit:e.emit,expose:t}}function ts(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Vo($s(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in ln)return ln[n](e)},has(t,n){return n in t||n in ln}})):e.proxy}function jc(e,t=!0){return B(e)?e.displayName||e.name:e.name||t&&e.__name}function Uc(e){return B(e)&&"__vccOpts"in e}const ue=(e,t)=>Al(e,t,gn);function vi(e,t,n){try{kn(-1);const s=arguments.length;return s===2?Z(t)&&!V(t)?Vn(t)?be(e,null,[t]):be(e,t):be(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Vn(n)&&(n=[n]),be(e,t,n))}finally{kn(1)}}const Bc="3.5.30";/** * @vue/runtime-dom v3.5.30 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let Ts;const Or=typeof window<"u"&&window.trustedTypes;if(Or)try{Ts=Or.createPolicy("vue",{createHTML:e=>e})}catch{}const yi=Ts?e=>Ts.createHTML(e):e=>e,Hc="http://www.w3.org/2000/svg",Kc="http://www.w3.org/1998/Math/MathML",st=typeof document<"u"?document:null,Tr=st&&st.createElement("template"),Gc={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"?st.createElementNS(Hc,e):t==="mathml"?st.createElementNS(Kc,e):n?st.createElement(e,{is:n}):st.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>st.createTextNode(e),createComment:e=>st.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>st.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{Tr.innerHTML=yi(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Tr.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]}},Wc=Symbol("_vtc");function qc(e,t,n){const s=e[Wc];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const jn=Symbol("_vod"),bi=Symbol("_vsh"),$c={name:"show",beforeMount(e,{value:t},{transition:n}){e[jn]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Qt(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),Qt(e,!0),s.enter(e)):s.leave(e,()=>{Qt(e,!1)}):Qt(e,t))},beforeUnmount(e,{value:t}){Qt(e,t)}};function Qt(e,t){e.style.display=t?e[jn]:"none",e[bi]=!t}const zc=Symbol(""),Jc=/(?:^|;)\s*display\s*:/;function Qc(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&&Tn(s,l,"")}else for(const i in t)n[i]==null&&Tn(s,i,"");for(const i in n)i==="display"&&(o=!0),Tn(s,i,n[i])}else if(r){if(t!==n){const i=s[zc];i&&(n+=";"+i),s.cssText=n,o=Jc.test(n)}}else t&&e.removeAttribute("style");jn in e&&(e[jn]=o?s.display:"",e[bi]&&(s.display="none"))}const Pr=/\s*!important$/;function Tn(e,t,n){if(V(n))n.forEach(s=>Tn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Yc(e,t);Pr.test(n)?e.setProperty(Pt(s),n.replace(Pr,""),"important"):e[s]=n}}const Ir=["Webkit","Moz","ms"],ds={};function Yc(e,t){const n=ds[t];if(n)return n;let s=Ee(t);if(s!=="filter"&&s in e)return ds[t]=s;s=Kn(s);for(let r=0;rhs||(tu.then(()=>hs=0),hs=Date.now());function su(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ze(ru(s,n.value),t,5,[s])};return n.value=e,n.attached=nu(),n}function ru(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 Vr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ou=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?qc(e,s,i):t==="style"?Qc(e,n,s):Un(t)?Vs(t)||Zc(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):iu(e,t,s,i))?(Mr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Dr(e,t,s,i,o,t!=="value")):e._isVueCE&&(lu(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!ue(s)))?Mr(e,Ee(t),s,o,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Dr(e,t,s,i))};function iu(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Vr(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 Vr(t)&&ue(n)?!1:t in e}function lu(e,t){const n=e._def.props;if(!n)return!1;const s=Ee(t);return Array.isArray(n)?n.some(r=>Ee(r)===s):Object.keys(n).some(r=>Ee(r)===s)}const Ht=e=>{const t=e.props["onUpdate:modelValue"]||!1;return V(t)?n=>An(t,n):t};function cu(e){e.target.composing=!0}function Fr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ct=Symbol("_assign");function jr(e,t,n){return t&&(e=e.trim()),n&&(e=Gn(e)),e}const Qa={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[ct]=Ht(r);const o=s||r.props&&r.props.type==="number";yt(e,t?"change":"input",i=>{i.target.composing||e[ct](jr(e.value,n,o))}),(n||o)&&yt(e,"change",()=>{e.value=jr(e.value,n,o)}),t||(yt(e,"compositionstart",cu),yt(e,"compositionend",Fr),yt(e,"change",Fr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:o}},i){if(e[ct]=Ht(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?Gn(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))}},Ya={deep:!0,created(e,t,n){e[ct]=Ht(n),yt(e,"change",()=>{const s=e._modelValue,r=mn(e),o=e.checked,i=e[ct];if(V(s)){const l=Us(s,r),c=l!==-1;if(o&&!c)i(s.concat(r));else if(!o&&c){const f=[...s];f.splice(l,1),i(f)}}else if(Wt(s)){const l=new Set(s);o?l.add(r):l.delete(r),i(l)}else i(Ei(e,o))})},mounted:Ur,beforeUpdate(e,t,n){e[ct]=Ht(n),Ur(e,t,n)}};function Ur(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(V(t))r=Us(t,s.props.value)>-1;else if(Wt(t))r=t.has(s.props.value);else{if(t===n)return;r=qt(t,Ei(e,!0))}e.checked!==r&&(e.checked=r)}const Xa={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=Wt(t);yt(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?Gn(mn(i)):mn(i));e[ct](e.multiple?r?new Set(o):o:o[0]),e._assigning=!0,Qn(()=>{e._assigning=!1})}),e[ct]=Ht(s)},mounted(e,{value:t}){Br(e,t)},beforeUpdate(e,t,n){e[ct]=Ht(n)},updated(e,{value:t}){e._assigning||Br(e,t)}};function Br(e,t){const n=e.multiple,s=V(t);if(!(n&&!s&&!Wt(t))){for(let r=0,o=e.options.length;rString(f)===String(l)):i.selected=Us(t,l)>-1}else i.selected=t.has(l);else if(qt(mn(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function mn(e){return"_value"in e?e._value:e.value}function Ei(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const uu=["ctrl","shift","alt","meta"],au={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)=>uu.some(n=>e[`${n}Key`]&&!t.includes(n))},Za=(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=du().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=gu(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,pu(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t};function pu(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function gu(e){return ue(e)?document.querySelector(e):e}/*! +**/let Ts;const Or=typeof window<"u"&&window.trustedTypes;if(Or)try{Ts=Or.createPolicy("vue",{createHTML:e=>e})}catch{}const yi=Ts?e=>Ts.createHTML(e):e=>e,Hc="http://www.w3.org/2000/svg",Kc="http://www.w3.org/1998/Math/MathML",st=typeof document<"u"?document:null,Tr=st&&st.createElement("template"),Gc={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"?st.createElementNS(Hc,e):t==="mathml"?st.createElementNS(Kc,e):n?st.createElement(e,{is:n}):st.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>st.createTextNode(e),createComment:e=>st.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>st.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{Tr.innerHTML=yi(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Tr.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]}},Wc=Symbol("_vtc");function qc(e,t,n){const s=e[Wc];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const jn=Symbol("_vod"),bi=Symbol("_vsh"),$c={name:"show",beforeMount(e,{value:t},{transition:n}){e[jn]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Qt(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),Qt(e,!0),s.enter(e)):s.leave(e,()=>{Qt(e,!1)}):Qt(e,t))},beforeUnmount(e,{value:t}){Qt(e,t)}};function Qt(e,t){e.style.display=t?e[jn]:"none",e[bi]=!t}const zc=Symbol(""),Jc=/(?:^|;)\s*display\s*:/;function Qc(e,t,n){const s=e.style,r=ae(n);let o=!1;if(n&&!r){if(t)if(ae(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&Tn(s,l,"")}else for(const i in t)n[i]==null&&Tn(s,i,"");for(const i in n)i==="display"&&(o=!0),Tn(s,i,n[i])}else if(r){if(t!==n){const i=s[zc];i&&(n+=";"+i),s.cssText=n,o=Jc.test(n)}}else t&&e.removeAttribute("style");jn in e&&(e[jn]=o?s.display:"",e[bi]&&(s.display="none"))}const Pr=/\s*!important$/;function Tn(e,t,n){if(V(n))n.forEach(s=>Tn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Yc(e,t);Pr.test(n)?e.setProperty(Pt(s),n.replace(Pr,""),"important"):e[s]=n}}const Ir=["Webkit","Moz","ms"],ds={};function Yc(e,t){const n=ds[t];if(n)return n;let s=Ee(t);if(s!=="filter"&&s in e)return ds[t]=s;s=Kn(s);for(let r=0;rhs||(tu.then(()=>hs=0),hs=Date.now());function su(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ze(ru(s,n.value),t,5,[s])};return n.value=e,n.attached=nu(),n}function ru(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 Vr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ou=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?qc(e,s,i):t==="style"?Qc(e,n,s):Un(t)?Vs(t)||Zc(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):iu(e,t,s,i))?(Mr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Dr(e,t,s,i,o,t!=="value")):e._isVueCE&&(lu(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!ae(s)))?Mr(e,Ee(t),s,o,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Dr(e,t,s,i))};function iu(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Vr(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 Vr(t)&&ae(n)?!1:t in e}function lu(e,t){const n=e._def.props;if(!n)return!1;const s=Ee(t);return Array.isArray(n)?n.some(r=>Ee(r)===s):Object.keys(n).some(r=>Ee(r)===s)}const Ht=e=>{const t=e.props["onUpdate:modelValue"]||!1;return V(t)?n=>An(t,n):t};function cu(e){e.target.composing=!0}function Fr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ct=Symbol("_assign");function jr(e,t,n){return t&&(e=e.trim()),n&&(e=Gn(e)),e}const Qa={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[ct]=Ht(r);const o=s||r.props&&r.props.type==="number";yt(e,t?"change":"input",i=>{i.target.composing||e[ct](jr(e.value,n,o))}),(n||o)&&yt(e,"change",()=>{e.value=jr(e.value,n,o)}),t||(yt(e,"compositionstart",cu),yt(e,"compositionend",Fr),yt(e,"change",Fr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:o}},i){if(e[ct]=Ht(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?Gn(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))}},Ya={deep:!0,created(e,t,n){e[ct]=Ht(n),yt(e,"change",()=>{const s=e._modelValue,r=mn(e),o=e.checked,i=e[ct];if(V(s)){const l=Us(s,r),c=l!==-1;if(o&&!c)i(s.concat(r));else if(!o&&c){const f=[...s];f.splice(l,1),i(f)}}else if(Wt(s)){const l=new Set(s);o?l.add(r):l.delete(r),i(l)}else i(Ei(e,o))})},mounted:Ur,beforeUpdate(e,t,n){e[ct]=Ht(n),Ur(e,t,n)}};function Ur(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(V(t))r=Us(t,s.props.value)>-1;else if(Wt(t))r=t.has(s.props.value);else{if(t===n)return;r=qt(t,Ei(e,!0))}e.checked!==r&&(e.checked=r)}const Xa={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=Wt(t);yt(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?Gn(mn(i)):mn(i));e[ct](e.multiple?r?new Set(o):o:o[0]),e._assigning=!0,Qn(()=>{e._assigning=!1})}),e[ct]=Ht(s)},mounted(e,{value:t}){Br(e,t)},beforeUpdate(e,t,n){e[ct]=Ht(n)},updated(e,{value:t}){e._assigning||Br(e,t)}};function Br(e,t){const n=e.multiple,s=V(t);if(!(n&&!s&&!Wt(t))){for(let r=0,o=e.options.length;rString(f)===String(l)):i.selected=Us(t,l)>-1}else i.selected=t.has(l);else if(qt(mn(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function mn(e){return"_value"in e?e._value:e.value}function Ei(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const uu=["ctrl","shift","alt","meta"],au={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)=>uu.some(n=>e[`${n}Key`]&&!t.includes(n))},Za=(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=du().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=gu(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,pu(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t};function pu(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function gu(e){return ae(e)?document.querySelector(e):e}/*! * pinia v2.3.1 * (c) 2025 Eduardo San Martin Morote * @license MIT - */let Si;const ns=e=>Si=e,wi=Symbol();function Ps(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var un;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(un||(un={}));function mu(){const e=yo(!0),t=e.run(()=>Ie({}));let n=[],s=[];const r=$s({install(o){ns(r),r._a=o,o.provide(wi,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 xi=()=>{};function Kr(e,t,n,s=xi){e.push(t);const r=()=>{const o=e.indexOf(t);o>-1&&(e.splice(o,1),s())};return!n&&bo()&&Xi(r),r}function Mt(e,...t){e.slice().forEach(n=>{n(...t)})}const _u=e=>e(),Gr=Symbol(),ps=Symbol();function Is(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];Ps(r)&&Ps(s)&&e.hasOwnProperty(n)&&!ie(s)&&!lt(s)?e[n]=Is(r,s):e[n]=s}return e}const vu=Symbol();function yu(e){return!Ps(e)||!e.hasOwnProperty(vu)}const{assign:mt}=Object;function bu(e){return!!(ie(e)&&e.effect)}function Eu(e,t,n,s){const{state:r,actions:o,getters:i}=t,l=n.state.value[e];let c;function f(){l||(n.state.value[e]=r?r():{});const u=El(n.state.value[e]);return mt(u,o,Object.keys(i||{}).reduce((d,g)=>(d[g]=$s(ce(()=>{ns(n);const m=n._s.get(e);return i[g].call(m,m)})),d),{}))}return c=Ai(e,f,t,n,s,!0),c}function Ai(e,t,n={},s,r,o){let i;const l=mt({actions:{}},n),c={deep:!0};let f,u,d=[],g=[],m;const A=s.state.value[e];!o&&!A&&(s.state.value[e]={});let S;function N(K){let G;f=u=!1,typeof K=="function"?(K(s.state.value[e]),G={type:un.patchFunction,storeId:e,events:m}):(Is(s.state.value[e],K),G={type:un.patchObject,payload:K,storeId:e,events:m});const re=S=Symbol();Qn().then(()=>{S===re&&(f=!0)}),u=!0,Mt(d,G,s.state.value[e])}const M=o?function(){const{state:G}=n,re=G?G():{};this.$patch(me=>{mt(me,re)})}:xi;function T(){i.stop(),d=[],g=[],s._s.delete(e)}const D=(K,G="")=>{if(Gr in K)return K[ps]=G,K;const re=function(){ns(s);const me=Array.from(arguments),Oe=[],Se=[];function Et(H){Oe.push(H)}function ht(H){Se.push(H)}Mt(g,{args:me,name:re[ps],store:U,after:Et,onError:ht});let se;try{se=K.apply(this&&this.$id===e?this:U,me)}catch(H){throw Mt(Se,H),H}return se instanceof Promise?se.then(H=>(Mt(Oe,H),H)).catch(H=>(Mt(Se,H),Promise.reject(H))):(Mt(Oe,se),se)};return re[Gr]=!0,re[ps]=G,re},w={_p:s,$id:e,$onAction:Kr.bind(null,g),$patch:N,$reset:M,$subscribe(K,G={}){const re=Kr(d,K,G.detached,()=>me()),me=i.run(()=>sn(()=>s.state.value[e],Oe=>{(G.flush==="sync"?u:f)&&K({storeId:e,type:un.direct,events:m},Oe)},mt({},c,G)));return re},$dispose:T},U=yn(w);s._s.set(e,U);const W=(s._a&&s._a.runWithContext||_u)(()=>s._e.run(()=>(i=yo()).run(()=>t({action:D}))));for(const K in W){const G=W[K];if(ie(G)&&!bu(G)||lt(G))o||(A&&yu(G)&&(ie(G)?G.value=A[K]:Is(G,A[K])),s.state.value[e][K]=G);else if(typeof G=="function"){const re=D(G,K);W[K]=re,l.actions[K]=G}}return mt(U,W),mt(z(U),W),Object.defineProperty(U,"$state",{get:()=>s.state.value[e],set:K=>{N(G=>{mt(G,K)})}}),s._p.forEach(K=>{mt(U,i.run(()=>K({store:U,app:s._a,pinia:s,options:l})))}),A&&o&&n.hydrate&&n.hydrate(U.$state,A),f=!0,u=!0,U}/*! #__NO_SIDE_EFFECTS__ */function Su(e,t,n){let s,r;const o=typeof t=="function";s=e,r=o?n:t;function i(l,c){const f=Dl();return l=l||(f?Fe(wi,null):null),l&&ns(l),l=Si,l._s.has(s)||(o?Ai(s,t,r,l):Eu(s,r,l)),l._s.get(s)}return i.$id=s,i}const wu="/api";class xu{constructor(t){cr(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 u=await fetch(`${this.baseUrl}${n}`,{...i,headers:r});return{data:await u.json(),status:u.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 Yt=new xu(wu),tr=Su("auth",()=>{const e=Ie(null),t=Ie(localStorage.getItem("accessToken")),n=Ie(localStorage.getItem("refreshToken")),s=Ie(localStorage.getItem("orgSlug")||""),r=ce(()=>!!e.value&&!!t.value),o=ce(()=>!!t.value),i=ce(()=>{var w;return((w=e.value)==null?void 0:w.role)==="chef"}),l=ce(()=>{var w;return((w=e.value)==null?void 0:w.role)==="disponent"}),c=ce(()=>{var w;return((w=e.value)==null?void 0:w.role)==="mitarbeiter"}),f=ce(()=>i.value||l.value),u=ce(()=>i.value||l.value),d=ce(()=>e.value?`${e.value.first_name} ${e.value.last_name}`:"");function g(w,U){t.value=w,n.value=U,localStorage.setItem("accessToken",w),localStorage.setItem("refreshToken",U)}function m(w){s.value=w,localStorage.setItem("orgSlug",w)}function A(){e.value=null,t.value=null,n.value=null,localStorage.removeItem("accessToken"),localStorage.removeItem("refreshToken")}async function S(w,U,le){const W=await Yt.post("/auth/login",{email:w,password:U,org_slug:le});return g(W.data.accessToken,W.data.refreshToken),m(le),e.value=W.data.user,W.data}async function N(w){return(await Yt.post("/auth/register",w)).data}async function M(){try{await Yt.post("/auth/logout")}catch{}A()}async function T(){try{const w=await Yt.get("/auth/me");e.value=w.data.user}catch{A()}}async function D(){if(!n.value)throw new Error("No refresh token");const w=await Yt.post("/auth/refresh",{refreshToken:n.value});return t.value=w.data.accessToken,localStorage.setItem("accessToken",w.data.accessToken),w.data.accessToken}return{user:e,accessToken:t,refreshToken:n,orgSlug:s,isAuthenticated:r,hasStoredToken:o,isChef:i,isDisponent:l,isMitarbeiter:c,canManageUsers:f,canManageOrders:u,fullName:d,login:S,register:N,logout:M,fetchCurrentUser:T,refreshAccessToken:D,setOrgSlug:m}}),Au={class:"fixed inset-0 bg-gradient-to-br from-purple-600 to-indigo-700 flex flex-col items-center justify-center z-50"},Ru={key:0,class:"text-center"},Cu=["disabled"],Ou={key:0,class:"animate-spin"},Tu={key:1},Pu={key:1,class:"text-center"},Iu={class:"flex space-x-3 mb-8"},Nu={key:0,class:"text-red-300 text-sm mb-4"},Du={class:"grid grid-cols-3 gap-4 max-w-xs"},Mu=["onClick"],Lu={key:1,class:"w-16 h-16"},ku=Yn({__name:"LockScreen",emits:["unlocked"],setup(e,{emit:t}){const n=t;tr();const s=Ie(null),r=Ie(""),o=Ie(!1),i=Ie(["","","","","",""]),l=Ie(0);Qs(()=>{s.value=localStorage.getItem("lockMethod"),s.value==="biometric"&&c()});async function c(){o.value=!0,r.value="";try{if(!window.PublicKeyCredential)throw new Error("Biometrie nicht verfügbar");const A=localStorage.getItem("biometricCredentialId");if(!A)throw new Error("Keine biometrischen Daten gespeichert");await navigator.credentials.get({publicKey:{challenge:new Uint8Array(32),timeout:6e4,userVerification:"required",allowCredentials:[{id:Uint8Array.from(atob(A),N=>N.charCodeAt(0)),type:"public-key",transports:["internal"]}]}})&&n("unlocked")}catch(A){console.error("Biometric auth failed:",A),r.value="Biometrie fehlgeschlagen. Bitte PIN verwenden.",s.value="pin"}o.value=!1}function f(A){l.value<6&&(i.value[l.value]=A,l.value++,l.value===6&&g())}function u(){l.value>0&&(l.value--,i.value[l.value]=""),r.value=""}function d(){i.value=["","","","","",""],l.value=0,r.value=""}async function g(){const A=i.value.join(""),S=localStorage.getItem("appPin");A===S?n("unlocked"):(r.value="Falscher PIN",setTimeout(d,500))}function m(){s.value="pin",r.value=""}return(A,S)=>(Ce(),ke("div",Au,[S[2]||(S[2]=Pe("div",{class:"text-6xl mb-4"},"🔐",-1)),S[3]||(S[3]=Pe("h1",{class:"text-2xl font-bold text-white mb-2"},"SeCu",-1)),S[4]||(S[4]=Pe("p",{class:"text-white/70 mb-8"},"Bitte entsperren",-1)),s.value==="biometric"&&!r.value?(Ce(),ke("div",Ru,[Pe("button",{onClick:c,disabled:o.value,class:"w-20 h-20 bg-white/20 rounded-full flex items-center justify-center text-4xl mb-4 hover:bg-white/30 transition"},[o.value?(Ce(),ke("span",Ou,"⏳")):(Ce(),ke("span",Tu,"👆"))],8,Cu),S[1]||(S[1]=Pe("p",{class:"text-white/70 text-sm"},"Fingerabdruck oder Face ID",-1)),Pe("button",{onClick:m,class:"mt-4 text-white/50 text-sm underline"}," Stattdessen PIN verwenden ")])):(Ce(),ke("div",Pu,[Pe("div",Iu,[(Ce(!0),ke(Ve,null,_r(i.value,(N,M)=>(Ce(),ke("div",{key:M,class:qn(["w-4 h-4 rounded-full transition-all",N?"bg-white scale-110":"bg-white/30",r.value?"animate-shake bg-red-400":""])},null,2))),128))]),r.value?(Ce(),ke("p",Nu,ys(r.value),1)):pi("",!0),Pe("div",Du,[(Ce(),ke(Ve,null,_r([1,2,3,4,5,6,7,8,9],N=>Pe("button",{key:N,onClick:M=>f(String(N)),class:"w-16 h-16 bg-white/20 rounded-full text-white text-2xl font-semibold hover:bg-white/30 transition"},ys(N),9,Mu)),64)),s.value==="biometric"||A.localStorage.getItem("biometricCredentialId")?(Ce(),ke("button",{key:0,onClick:c,class:"w-16 h-16 bg-white/20 rounded-full text-white text-2xl hover:bg-white/30 transition"}," 👆 ")):(Ce(),ke("div",Lu)),Pe("button",{onClick:S[0]||(S[0]=N=>f("0")),class:"w-16 h-16 bg-white/20 rounded-full text-white text-2xl font-semibold hover:bg-white/30 transition"}," 0 "),Pe("button",{onClick:u,class:"w-16 h-16 bg-white/10 rounded-full text-white text-xl hover:bg-white/20 transition"}," ⌫ ")])]))]))}}),Vu=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Fu=Vu(ku,[["__scopeId","data-v-5cf90e48"]]),Wr=3e4,ju=Yn({__name:"App",setup(e){const t=tr(),n=Ie(!1),s=Ie(Date.now()),r=ce(()=>localStorage.getItem("lockMethod")&&localStorage.getItem("lockMethod")!=="none"&&t.isAuthenticated);Qs(async()=>{if(t.hasStoredToken&&await t.fetchCurrentUser(),r.value){const c=localStorage.getItem("lastUnlockTime"),f=Date.now();(!c||f-parseInt(c)>Wr)&&(n.value=!0)}document.addEventListener("visibilitychange",i),document.addEventListener("touchstart",o),document.addEventListener("click",o),document.addEventListener("keydown",o)}),Ys(()=>{document.removeEventListener("visibilitychange",i),document.removeEventListener("touchstart",o),document.removeEventListener("click",o),document.removeEventListener("keydown",o)});function o(){s.value=Date.now()}function i(){if(document.visibilityState==="hidden")localStorage.setItem("backgroundTime",String(Date.now()));else if(document.visibilityState==="visible"&&r.value){const c=localStorage.getItem("backgroundTime"),f=Date.now();c&&f-parseInt(c)>Wr&&(n.value=!0)}}function l(){n.value=!1,localStorage.setItem("lastUnlockTime",String(Date.now()))}return(c,f)=>{const u=Xl("router-view");return Ce(),ke(Ve,null,[n.value&&r.value?(Ce(),di(Fu,{key:0,onUnlocked:l})):pi("",!0),Nl(be(u,null,null,512),[[$c,!n.value||!r.value]])],64)}}}),Uu="modulepreload",Bu=function(e){return"/app/"+e},qr={},de=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 qr)return;qr[c]=!0;const f=c.endsWith(".css"),u=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${u}`))return;const d=document.createElement("link");if(d.rel=f?"stylesheet":Uu,f||(d.as="script"),d.crossOrigin="",d.href=c,l&&d.setAttribute("nonce",l),document.head.appendChild(d),f)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)})};/*! + */let Si;const ns=e=>Si=e,wi=Symbol();function Ps(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var un;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(un||(un={}));function mu(){const e=yo(!0),t=e.run(()=>Ie({}));let n=[],s=[];const r=$s({install(o){ns(r),r._a=o,o.provide(wi,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 xi=()=>{};function Kr(e,t,n,s=xi){e.push(t);const r=()=>{const o=e.indexOf(t);o>-1&&(e.splice(o,1),s())};return!n&&bo()&&Xi(r),r}function Mt(e,...t){e.slice().forEach(n=>{n(...t)})}const _u=e=>e(),Gr=Symbol(),ps=Symbol();function Is(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];Ps(r)&&Ps(s)&&e.hasOwnProperty(n)&&!le(s)&&!lt(s)?e[n]=Is(r,s):e[n]=s}return e}const vu=Symbol();function yu(e){return!Ps(e)||!e.hasOwnProperty(vu)}const{assign:mt}=Object;function bu(e){return!!(le(e)&&e.effect)}function Eu(e,t,n,s){const{state:r,actions:o,getters:i}=t,l=n.state.value[e];let c;function f(){l||(n.state.value[e]=r?r():{});const u=El(n.state.value[e]);return mt(u,o,Object.keys(i||{}).reduce((d,g)=>(d[g]=$s(ue(()=>{ns(n);const m=n._s.get(e);return i[g].call(m,m)})),d),{}))}return c=Ai(e,f,t,n,s,!0),c}function Ai(e,t,n={},s,r,o){let i;const l=mt({actions:{}},n),c={deep:!0};let f,u,d=[],g=[],m;const A=s.state.value[e];!o&&!A&&(s.state.value[e]={});let S;function N(K){let G;f=u=!1,typeof K=="function"?(K(s.state.value[e]),G={type:un.patchFunction,storeId:e,events:m}):(Is(s.state.value[e],K),G={type:un.patchObject,payload:K,storeId:e,events:m});const re=S=Symbol();Qn().then(()=>{S===re&&(f=!0)}),u=!0,Mt(d,G,s.state.value[e])}const M=o?function(){const{state:G}=n,re=G?G():{};this.$patch(me=>{mt(me,re)})}:xi;function T(){i.stop(),d=[],g=[],s._s.delete(e)}const D=(K,G="")=>{if(Gr in K)return K[ps]=G,K;const re=function(){ns(s);const me=Array.from(arguments),Oe=[],Se=[];function Et(H){Oe.push(H)}function ht(H){Se.push(H)}Mt(g,{args:me,name:re[ps],store:U,after:Et,onError:ht});let se;try{se=K.apply(this&&this.$id===e?this:U,me)}catch(H){throw Mt(Se,H),H}return se instanceof Promise?se.then(H=>(Mt(Oe,H),H)).catch(H=>(Mt(Se,H),Promise.reject(H))):(Mt(Oe,se),se)};return re[Gr]=!0,re[ps]=G,re},w={_p:s,$id:e,$onAction:Kr.bind(null,g),$patch:N,$reset:M,$subscribe(K,G={}){const re=Kr(d,K,G.detached,()=>me()),me=i.run(()=>sn(()=>s.state.value[e],Oe=>{(G.flush==="sync"?u:f)&&K({storeId:e,type:un.direct,events:m},Oe)},mt({},c,G)));return re},$dispose:T},U=yn(w);s._s.set(e,U);const W=(s._a&&s._a.runWithContext||_u)(()=>s._e.run(()=>(i=yo()).run(()=>t({action:D}))));for(const K in W){const G=W[K];if(le(G)&&!bu(G)||lt(G))o||(A&&yu(G)&&(le(G)?G.value=A[K]:Is(G,A[K])),s.state.value[e][K]=G);else if(typeof G=="function"){const re=D(G,K);W[K]=re,l.actions[K]=G}}return mt(U,W),mt(z(U),W),Object.defineProperty(U,"$state",{get:()=>s.state.value[e],set:K=>{N(G=>{mt(G,K)})}}),s._p.forEach(K=>{mt(U,i.run(()=>K({store:U,app:s._a,pinia:s,options:l})))}),A&&o&&n.hydrate&&n.hydrate(U.$state,A),f=!0,u=!0,U}/*! #__NO_SIDE_EFFECTS__ */function Su(e,t,n){let s,r;const o=typeof t=="function";s=e,r=o?n:t;function i(l,c){const f=Dl();return l=l||(f?Fe(wi,null):null),l&&ns(l),l=Si,l._s.has(s)||(o?Ai(s,t,r,l):Eu(s,r,l)),l._s.get(s)}return i.$id=s,i}const wu="/api";class xu{constructor(t){cr(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 u=await fetch(`${this.baseUrl}${n}`,{...i,headers:r});return{data:await u.json(),status:u.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 Yt=new xu(wu),tr=Su("auth",()=>{const e=Ie(null),t=Ie(localStorage.getItem("accessToken")),n=Ie(localStorage.getItem("refreshToken")),s=Ie(localStorage.getItem("orgSlug")||""),r=ue(()=>!!e.value&&!!t.value),o=ue(()=>!!t.value),i=ue(()=>{var w;return((w=e.value)==null?void 0:w.role)==="chef"}),l=ue(()=>{var w;return((w=e.value)==null?void 0:w.role)==="disponent"}),c=ue(()=>{var w;return((w=e.value)==null?void 0:w.role)==="mitarbeiter"}),f=ue(()=>i.value||l.value),u=ue(()=>i.value||l.value),d=ue(()=>e.value?`${e.value.first_name} ${e.value.last_name}`:"");function g(w,U){t.value=w,n.value=U,localStorage.setItem("accessToken",w),localStorage.setItem("refreshToken",U)}function m(w){s.value=w,localStorage.setItem("orgSlug",w)}function A(){e.value=null,t.value=null,n.value=null,localStorage.removeItem("accessToken"),localStorage.removeItem("refreshToken")}async function S(w,U,ce){const W=await Yt.post("/auth/login",{email:w,password:U,org_slug:ce});return g(W.data.accessToken,W.data.refreshToken),m(ce),e.value=W.data.user,W.data}async function N(w){return(await Yt.post("/auth/register",w)).data}async function M(){try{await Yt.post("/auth/logout")}catch{}A()}async function T(){try{const w=await Yt.get("/auth/me");e.value=w.data.user}catch{A()}}async function D(){if(!n.value)throw new Error("No refresh token");const w=await Yt.post("/auth/refresh",{refreshToken:n.value});return t.value=w.data.accessToken,localStorage.setItem("accessToken",w.data.accessToken),w.data.accessToken}return{user:e,accessToken:t,refreshToken:n,orgSlug:s,isAuthenticated:r,hasStoredToken:o,isChef:i,isDisponent:l,isMitarbeiter:c,canManageUsers:f,canManageOrders:u,fullName:d,login:S,register:N,logout:M,fetchCurrentUser:T,refreshAccessToken:D,setOrgSlug:m}}),Au={class:"fixed inset-0 bg-gradient-to-br from-purple-600 to-indigo-700 flex flex-col items-center justify-center z-50"},Ru={key:0,class:"text-center"},Cu=["disabled"],Ou={key:0,class:"animate-spin"},Tu={key:1},Pu={key:1,class:"text-center"},Iu={class:"flex space-x-3 mb-8"},Nu={key:0,class:"text-red-300 text-sm mb-4"},Du={class:"grid grid-cols-3 gap-4 max-w-xs"},Mu=["onClick"],Lu={key:1,class:"w-16 h-16"},ku=Yn({__name:"LockScreen",emits:["unlocked"],setup(e,{emit:t}){const n=t;tr();const s=Ie(null),r=Ie(""),o=Ie(!1),i=Ie(["","","","","",""]),l=Ie(0);Qs(()=>{s.value=localStorage.getItem("lockMethod"),s.value==="biometric"&&c()});async function c(){o.value=!0,r.value="";try{if(!window.PublicKeyCredential)throw new Error("Biometrie nicht verfügbar");const A=localStorage.getItem("biometricCredentialId");if(!A)throw new Error("Keine biometrischen Daten gespeichert");await navigator.credentials.get({publicKey:{challenge:new Uint8Array(32),timeout:6e4,userVerification:"required",allowCredentials:[{id:Uint8Array.from(atob(A),N=>N.charCodeAt(0)),type:"public-key",transports:["internal"]}]}})&&n("unlocked")}catch(A){console.error("Biometric auth failed:",A),r.value="Biometrie fehlgeschlagen. Bitte PIN verwenden.",s.value="pin"}o.value=!1}function f(A){l.value<6&&(i.value[l.value]=A,l.value++,l.value===6&&g())}function u(){l.value>0&&(l.value--,i.value[l.value]=""),r.value=""}function d(){i.value=["","","","","",""],l.value=0,r.value=""}async function g(){const A=i.value.join(""),S=localStorage.getItem("appPin");A===S?n("unlocked"):(r.value="Falscher PIN",setTimeout(d,500))}function m(){s.value="pin",r.value=""}return(A,S)=>(Ce(),ke("div",Au,[S[2]||(S[2]=Pe("div",{class:"text-6xl mb-4"},"🔐",-1)),S[3]||(S[3]=Pe("h1",{class:"text-2xl font-bold text-white mb-2"},"SeCu",-1)),S[4]||(S[4]=Pe("p",{class:"text-white/70 mb-8"},"Bitte entsperren",-1)),s.value==="biometric"&&!r.value?(Ce(),ke("div",Ru,[Pe("button",{onClick:c,disabled:o.value,class:"w-20 h-20 bg-white/20 rounded-full flex items-center justify-center text-4xl mb-4 hover:bg-white/30 transition"},[o.value?(Ce(),ke("span",Ou,"⏳")):(Ce(),ke("span",Tu,"👆"))],8,Cu),S[1]||(S[1]=Pe("p",{class:"text-white/70 text-sm"},"Fingerabdruck oder Face ID",-1)),Pe("button",{onClick:m,class:"mt-4 text-white/50 text-sm underline"}," Stattdessen PIN verwenden ")])):(Ce(),ke("div",Pu,[Pe("div",Iu,[(Ce(!0),ke(Ve,null,_r(i.value,(N,M)=>(Ce(),ke("div",{key:M,class:qn(["w-4 h-4 rounded-full transition-all",N?"bg-white scale-110":"bg-white/30",r.value?"animate-shake bg-red-400":""])},null,2))),128))]),r.value?(Ce(),ke("p",Nu,ys(r.value),1)):pi("",!0),Pe("div",Du,[(Ce(),ke(Ve,null,_r([1,2,3,4,5,6,7,8,9],N=>Pe("button",{key:N,onClick:M=>f(String(N)),class:"w-16 h-16 bg-white/20 rounded-full text-white text-2xl font-semibold hover:bg-white/30 transition"},ys(N),9,Mu)),64)),s.value==="biometric"||A.localStorage.getItem("biometricCredentialId")?(Ce(),ke("button",{key:0,onClick:c,class:"w-16 h-16 bg-white/20 rounded-full text-white text-2xl hover:bg-white/30 transition"}," 👆 ")):(Ce(),ke("div",Lu)),Pe("button",{onClick:S[0]||(S[0]=N=>f("0")),class:"w-16 h-16 bg-white/20 rounded-full text-white text-2xl font-semibold hover:bg-white/30 transition"}," 0 "),Pe("button",{onClick:u,class:"w-16 h-16 bg-white/10 rounded-full text-white text-xl hover:bg-white/20 transition"}," ⌫ ")])]))]))}}),Vu=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Fu=Vu(ku,[["__scopeId","data-v-5cf90e48"]]),Wr=3e4,ju=Yn({__name:"App",setup(e){const t=tr(),n=Ie(!1),s=Ie(Date.now()),r=ue(()=>localStorage.getItem("lockMethod")&&localStorage.getItem("lockMethod")!=="none"&&t.isAuthenticated);Qs(async()=>{if(t.hasStoredToken&&await t.fetchCurrentUser(),r.value){const c=localStorage.getItem("lastUnlockTime"),f=Date.now();(!c||f-parseInt(c)>Wr)&&(n.value=!0)}document.addEventListener("visibilitychange",i),document.addEventListener("touchstart",o),document.addEventListener("click",o),document.addEventListener("keydown",o)}),Ys(()=>{document.removeEventListener("visibilitychange",i),document.removeEventListener("touchstart",o),document.removeEventListener("click",o),document.removeEventListener("keydown",o)});function o(){s.value=Date.now()}function i(){if(document.visibilityState==="hidden")localStorage.setItem("backgroundTime",String(Date.now()));else if(document.visibilityState==="visible"&&r.value){const c=localStorage.getItem("backgroundTime"),f=Date.now();c&&f-parseInt(c)>Wr&&(n.value=!0)}}function l(){n.value=!1,localStorage.setItem("lastUnlockTime",String(Date.now()))}return(c,f)=>{const u=Xl("router-view");return Ce(),ke(Ve,null,[n.value&&r.value?(Ce(),di(Fu,{key:0,onUnlocked:l})):pi("",!0),Nl(be(u,null,null,512),[[$c,!n.value||!r.value]])],64)}}}),Uu="modulepreload",Bu=function(e){return"/app/"+e},qr={},oe=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 qr)return;qr[c]=!0;const f=c.endsWith(".css"),u=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${u}`))return;const d=document.createElement("link");if(d.rel=f?"stylesheet":Uu,f||(d.as="script"),d.crossOrigin="",d.href=c,l&&d.setAttribute("nonce",l),document.head.appendChild(d),f)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 kt=typeof document<"u";function Ri(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Hu(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Ri(e.default)}const Q=Object.assign;function gs(e,t){const n={};for(const s in t){const r=t[s];n[s]=Be(r)?r.map(e):e(r)}return n}const an=()=>{},Be=Array.isArray;function $r(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const Ci=/#/g,Ku=/&/g,Gu=/\//g,Wu=/=/g,qu=/\?/g,Oi=/\+/g,$u=/%5B/g,zu=/%5D/g,Ti=/%5E/g,Ju=/%60/g,Pi=/%7B/g,Qu=/%7C/g,Ii=/%7D/g,Yu=/%20/g;function nr(e){return e==null?"":encodeURI(""+e).replace(Qu,"|").replace($u,"[").replace(zu,"]")}function Xu(e){return nr(e).replace(Pi,"{").replace(Ii,"}").replace(Ti,"^")}function Ns(e){return nr(e).replace(Oi,"%2B").replace(Yu,"+").replace(Ci,"%23").replace(Ku,"%26").replace(Ju,"`").replace(Pi,"{").replace(Ii,"}").replace(Ti,"^")}function Zu(e){return Ns(e).replace(Wu,"%3D")}function ea(e){return nr(e).replace(Ci,"%23").replace(qu,"%3F")}function ta(e){return ea(e).replace(Gu,"%2F")}function _n(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const na=/\/$/,sa=e=>e.replace(na,"");function ms(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=la(s??t,n),{fullPath:s+o+i,path:s,query:r,hash:_n(i)}}function ra(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function zr(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function oa(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Kt(t.matched[s],n.matched[r])&&Ni(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Kt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Ni(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!ia(e[n],t[n]))return!1;return!0}function ia(e,t){return Be(e)?Jr(e,t):Be(t)?Jr(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function Jr(e,t){return Be(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function la(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 gt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let Ds=function(e){return e.pop="pop",e.push="push",e}({}),_s=function(e){return e.back="back",e.forward="forward",e.unknown="",e}({});function ca(e){if(!e)if(kt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),sa(e)}const ua=/^[^#]+#/;function aa(e,t){return e.replace(ua,"#")+t}function fa(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 ss=()=>({left:window.scrollX,top:window.scrollY});function da(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=fa(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 Qr(e,t){return(history.state?history.state.position-t:-1)+e}const Ms=new Map;function ha(e,t){Ms.set(e,t)}function pa(e){const t=Ms.get(e);return Ms.delete(e),t}function ga(e){return typeof e=="string"||e&&typeof e=="object"}function Di(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 Mi=Symbol("");oe.MATCHER_NOT_FOUND+"",oe.NAVIGATION_GUARD_REDIRECT+"",oe.NAVIGATION_ABORTED+"",oe.NAVIGATION_CANCELLED+"",oe.NAVIGATION_DUPLICATED+"";function Gt(e,t){return Q(new Error,{type:e,[Mi]:!0},t)}function nt(e,t){return e instanceof Error&&Mi in e&&(t==null||!!(e.type&t))}const ma=["params","query","hash"];function _a(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of ma)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function va(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sr&&Ns(r)):[s&&Ns(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function ya(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=Be(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const ba=Symbol(""),Xr=Symbol(""),rs=Symbol(""),sr=Symbol(""),Ls=Symbol("");function Xt(){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 vt(e,t,n,s,r,o=i=>i()){const i=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,c)=>{const f=g=>{g===!1?c(Gt(oe.NAVIGATION_ABORTED,{from:n,to:t})):g instanceof Error?c(g):ga(g)?c(Gt(oe.NAVIGATION_GUARD_REDIRECT,{from:t,to:g})):(i&&s.enterCallbacks[r]===i&&typeof g=="function"&&i.push(g),l())},u=o(()=>e.call(s&&s.instances[r],t,n,f));let d=Promise.resolve(u);e.length<3&&(d=d.then(f)),d.catch(g=>c(g))})}function vs(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(Ri(c)){const f=(c.__vccOpts||c)[t];f&&o.push(vt(f,n,s,i,l,r))}else{let f=c();o.push(()=>f.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const d=Hu(u)?u.default:u;i.mods[l]=u,i.components[l]=d;const g=(d.__vccOpts||d)[t];return g&&vt(g,n,s,i,l,r)()}))}}return o}function Ea(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iKt(f,l))?s.push(l):n.push(l));const c=e.matched[i];c&&(t.matched.find(f=>Kt(f,c))||r.push(c))}return[n,s,r]}/*! + */const kt=typeof document<"u";function Ri(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Hu(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Ri(e.default)}const Q=Object.assign;function gs(e,t){const n={};for(const s in t){const r=t[s];n[s]=Be(r)?r.map(e):e(r)}return n}const an=()=>{},Be=Array.isArray;function $r(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const Ci=/#/g,Ku=/&/g,Gu=/\//g,Wu=/=/g,qu=/\?/g,Oi=/\+/g,$u=/%5B/g,zu=/%5D/g,Ti=/%5E/g,Ju=/%60/g,Pi=/%7B/g,Qu=/%7C/g,Ii=/%7D/g,Yu=/%20/g;function nr(e){return e==null?"":encodeURI(""+e).replace(Qu,"|").replace($u,"[").replace(zu,"]")}function Xu(e){return nr(e).replace(Pi,"{").replace(Ii,"}").replace(Ti,"^")}function Ns(e){return nr(e).replace(Oi,"%2B").replace(Yu,"+").replace(Ci,"%23").replace(Ku,"%26").replace(Ju,"`").replace(Pi,"{").replace(Ii,"}").replace(Ti,"^")}function Zu(e){return Ns(e).replace(Wu,"%3D")}function ea(e){return nr(e).replace(Ci,"%23").replace(qu,"%3F")}function ta(e){return ea(e).replace(Gu,"%2F")}function _n(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const na=/\/$/,sa=e=>e.replace(na,"");function ms(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=la(s??t,n),{fullPath:s+o+i,path:s,query:r,hash:_n(i)}}function ra(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function zr(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function oa(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Kt(t.matched[s],n.matched[r])&&Ni(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Kt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Ni(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!ia(e[n],t[n]))return!1;return!0}function ia(e,t){return Be(e)?Jr(e,t):Be(t)?Jr(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function Jr(e,t){return Be(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function la(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 gt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let Ds=function(e){return e.pop="pop",e.push="push",e}({}),_s=function(e){return e.back="back",e.forward="forward",e.unknown="",e}({});function ca(e){if(!e)if(kt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),sa(e)}const ua=/^[^#]+#/;function aa(e,t){return e.replace(ua,"#")+t}function fa(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 ss=()=>({left:window.scrollX,top:window.scrollY});function da(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=fa(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 Qr(e,t){return(history.state?history.state.position-t:-1)+e}const Ms=new Map;function ha(e,t){Ms.set(e,t)}function pa(e){const t=Ms.get(e);return Ms.delete(e),t}function ga(e){return typeof e=="string"||e&&typeof e=="object"}function Di(e){return typeof e=="string"||typeof e=="symbol"}let ie=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 Mi=Symbol("");ie.MATCHER_NOT_FOUND+"",ie.NAVIGATION_GUARD_REDIRECT+"",ie.NAVIGATION_ABORTED+"",ie.NAVIGATION_CANCELLED+"",ie.NAVIGATION_DUPLICATED+"";function Gt(e,t){return Q(new Error,{type:e,[Mi]:!0},t)}function nt(e,t){return e instanceof Error&&Mi in e&&(t==null||!!(e.type&t))}const ma=["params","query","hash"];function _a(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of ma)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function va(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sr&&Ns(r)):[s&&Ns(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function ya(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=Be(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const ba=Symbol(""),Xr=Symbol(""),rs=Symbol(""),sr=Symbol(""),Ls=Symbol("");function Xt(){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 vt(e,t,n,s,r,o=i=>i()){const i=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,c)=>{const f=g=>{g===!1?c(Gt(ie.NAVIGATION_ABORTED,{from:n,to:t})):g instanceof Error?c(g):ga(g)?c(Gt(ie.NAVIGATION_GUARD_REDIRECT,{from:t,to:g})):(i&&s.enterCallbacks[r]===i&&typeof g=="function"&&i.push(g),l())},u=o(()=>e.call(s&&s.instances[r],t,n,f));let d=Promise.resolve(u);e.length<3&&(d=d.then(f)),d.catch(g=>c(g))})}function vs(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(Ri(c)){const f=(c.__vccOpts||c)[t];f&&o.push(vt(f,n,s,i,l,r))}else{let f=c();o.push(()=>f.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const d=Hu(u)?u.default:u;i.mods[l]=u,i.components[l]=d;const g=(d.__vccOpts||d)[t];return g&&vt(g,n,s,i,l,r)()}))}}return o}function Ea(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iKt(f,l))?s.push(l):n.push(l));const c=e.matched[i];c&&(t.matched.find(f=>Kt(f,c))||r.push(c))}return[n,s,r]}/*! * vue-router v4.6.4 * (c) 2025 Eduardo San Martin Morote * @license MIT - */let Sa=()=>location.protocol+"//"+location.host;function Li(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),zr(l,"")}return zr(n,e)+s+r}function wa(e,t,n,s){let r=[],o=[],i=null;const l=({state:g})=>{const m=Li(e,location),A=n.value,S=t.value;let N=0;if(g){if(n.value=m,t.value=g,i&&i===A){i=null;return}N=S?g.position-S.position:0}else s(m);r.forEach(M=>{M(n.value,A,{delta:N,type:Ds.pop,direction:N?N>0?_s.forward:_s.back:_s.unknown})})};function c(){i=n.value}function f(g){r.push(g);const m=()=>{const A=r.indexOf(g);A>-1&&r.splice(A,1)};return o.push(m),m}function u(){if(document.visibilityState==="hidden"){const{history:g}=window;if(!g.state)return;g.replaceState(Q({},g.state,{scroll:ss()}),"")}}function d(){for(const g of o)g();o=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:c,listen:f,destroy:d}}function Zr(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?ss():null}}function xa(e){const{history:t,location:n}=window,s={value:Li(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,f,u){const d=e.indexOf("#"),g=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+c:Sa()+e+c;try{t[u?"replaceState":"pushState"](f,"",g),r.value=f}catch(m){console.error(m),n[u?"replace":"assign"](g)}}function i(c,f){o(c,Q({},t.state,Zr(r.value.back,c,r.value.forward,!0),f,{position:r.value.position}),!0),s.value=c}function l(c,f){const u=Q({},r.value,t.state,{forward:c,scroll:ss()});o(u.current,u,!0),o(c,Q({},Zr(s.value,c,null),{position:u.position+1},f),!1),s.value=c}return{location:s,state:r,push:l,replace:i}}function Aa(e){e=ca(e);const t=xa(e),n=wa(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:aa.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 Rt=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var ae=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}(ae||{});const Ra={type:Rt.Static,value:""},Ca=/[a-zA-Z0-9_]/;function Oa(e){if(!e)return[[]];if(e==="/")return[[Ra]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${f}": ${m}`)}let n=ae.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,c,f="",u="";function d(){f&&(n===ae.Static?o.push({type:Rt.Static,value:f}):n===ae.Param||n===ae.ParamRegExp||n===ae.ParamRegExpEnd?(o.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${f}) must be alone in its segment. eg: '/:ids+.`),o.push({type:Rt.Param,value:f,regexp:u,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),f="")}function g(){f+=c}for(;lt.length?t.length===1&&t[0]===ve.Static+ve.Segment?1:-1:0}function ki(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Da={strict:!1,end:!0,sensitive:!1};function Ma(e,t,n){const s=Ia(Oa(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 La(e,t){const n=[],s=new Map;t=$r(Da,t);function r(d){return s.get(d)}function o(d,g,m){const A=!m,S=so(d);S.aliasOf=m&&m.record;const N=$r(t,d),M=[S];if("alias"in d){const w=typeof d.alias=="string"?[d.alias]:d.alias;for(const U of w)M.push(so(Q({},S,{components:m?m.record.components:S.components,path:U,aliasOf:m?m.record:S})))}let T,D;for(const w of M){const{path:U}=w;if(g&&U[0]!=="/"){const le=g.record.path,W=le[le.length-1]==="/"?"":"/";w.path=g.record.path+(U&&W+U)}if(T=Ma(w,g,N),m?m.alias.push(T):(D=D||T,D!==T&&D.alias.push(T),A&&d.name&&!ro(T)&&i(d.name)),Vi(T)&&c(T),S.children){const le=S.children;for(let W=0;W{i(D)}:an}function i(d){if(Di(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=Fa(d,n);n.splice(g,0,d),d.record.name&&!ro(d)&&s.set(d.record.name,d)}function f(d,g){let m,A={},S,N;if("name"in d&&d.name){if(m=s.get(d.name),!m)throw Gt(oe.MATCHER_NOT_FOUND,{location:d});N=m.record.name,A=Q(no(g.params,m.keys.filter(D=>!D.optional).concat(m.parent?m.parent.keys.filter(D=>D.optional):[]).map(D=>D.name)),d.params&&no(d.params,m.keys.map(D=>D.name))),S=m.stringify(A)}else if(d.path!=null)S=d.path,m=n.find(D=>D.re.test(S)),m&&(A=m.parse(S),N=m.record.name);else{if(m=g.name?s.get(g.name):n.find(D=>D.re.test(g.path)),!m)throw Gt(oe.MATCHER_NOT_FOUND,{location:d,currentLocation:g});N=m.record.name,A=Q({},g.params,d.params),S=m.stringify(A)}const M=[];let T=m;for(;T;)M.unshift(T.record),T=T.parent;return{name:N,path:S,params:A,matched:M,meta:Va(M)}}e.forEach(d=>o(d));function u(){n.length=0,s.clear()}return{addRoute:o,resolve:f,removeRoute:i,clearRoutes:u,getRoutes:l,getRecordMatcher:r}}function no(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function so(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:ka(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 ka(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 ro(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Va(e){return e.reduce((t,n)=>Q(t,n.meta),{})}function Fa(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;ki(e,t[o])<0?s=o:n=o+1}const r=ja(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function ja(e){let t=e;for(;t=t.parent;)if(Vi(t)&&ki(e,t)===0)return t}function Vi({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function oo(e){const t=Fe(rs),n=Fe(sr),s=ce(()=>{const c=Ot(e.to);return t.resolve(c)}),r=ce(()=>{const{matched:c}=s.value,{length:f}=c,u=c[f-1],d=n.matched;if(!u||!d.length)return-1;const g=d.findIndex(Kt.bind(null,u));if(g>-1)return g;const m=io(c[f-2]);return f>1&&io(u)===m&&d[d.length-1].path!==m?d.findIndex(Kt.bind(null,c[f-2])):g}),o=ce(()=>r.value>-1&&Ga(n.params,s.value.params)),i=ce(()=>r.value>-1&&r.value===n.matched.length-1&&Ni(n.params,s.value.params));function l(c={}){if(Ka(c)){const f=t[Ot(e.replace)?"replace":"push"](Ot(e.to)).catch(an);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>f),f}return Promise.resolve()}return{route:s,href:ce(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function Ua(e){return e.length===1?e[0]:e}const Ba=Yn({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:oo,setup(e,{slots:t}){const n=yn(oo(e)),{options:s}=Fe(rs),r=ce(()=>({[lo(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[lo(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&Ua(t.default(n));return e.custom?o:vi("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Ha=Ba;function Ka(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 Ga(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(!Be(r)||r.length!==s.length||s.some((o,i)=>o.valueOf()!==r[i].valueOf()))return!1}return!0}function io(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const lo=(e,t,n)=>e??t??n,Wa=Yn({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=Fe(Ls),r=ce(()=>e.route||s.value),o=Fe(Xr,0),i=ce(()=>{let f=Ot(o);const{matched:u}=r.value;let d;for(;(d=u[f])&&!d.components;)f++;return f}),l=ce(()=>r.value.matched[i.value]);Rn(Xr,ce(()=>i.value+1)),Rn(ba,l),Rn(Ls,r);const c=Ie();return sn(()=>[c.value,l.value,e.name],([f,u,d],[g,m,A])=>{u&&(u.instances[d]=f,m&&m!==u&&f&&f===g&&(u.leaveGuards.size||(u.leaveGuards=m.leaveGuards),u.updateGuards.size||(u.updateGuards=m.updateGuards))),f&&u&&(!m||!Kt(u,m)||!g)&&(u.enterCallbacks[d]||[]).forEach(S=>S(f))},{flush:"post"}),()=>{const f=r.value,u=e.name,d=l.value,g=d&&d.components[u];if(!g)return co(n.default,{Component:g,route:f});const m=d.props[u],A=m?m===!0?f.params:typeof m=="function"?m(f):m:null,N=vi(g,Q({},A,t,{onVnodeUnmounted:M=>{M.component.isUnmounted&&(d.instances[u]=null)},ref:c}));return co(n.default,{Component:N,route:f})||N}}});function co(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const qa=Wa;function $a(e){const t=La(e.routes,e),n=e.parseQuery||va,s=e.stringifyQuery||Yr,r=e.history,o=Xt(),i=Xt(),l=Xt(),c=vl(gt);let f=gt;kt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=gs.bind(null,y=>""+y),d=gs.bind(null,ta),g=gs.bind(null,_n);function m(y,I){let O,L;return Di(y)?(O=t.getRecordMatcher(y),L=I):L=y,t.addRoute(L,O)}function A(y){const I=t.getRecordMatcher(y);I&&t.removeRoute(I)}function S(){return t.getRoutes().map(y=>y.record)}function N(y){return!!t.getRecordMatcher(y)}function M(y,I){if(I=Q({},I||c.value),typeof y=="string"){const p=ms(n,y,I.path),_=t.resolve({path:p.path},I),b=r.createHref(p.fullPath);return Q(p,_,{params:g(_.params),hash:_n(p.hash),redirectedFrom:void 0,href:b})}let O;if(y.path!=null)O=Q({},y,{path:ms(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 L=t.resolve(O,I),q=y.hash||"";L.params=u(g(L.params));const a=ra(s,Q({},y,{hash:Xu(q),path:L.path})),h=r.createHref(a);return Q({fullPath:a,hash:q,query:s===Yr?ya(y.query):y.query||{}},L,{redirectedFrom:void 0,href:h})}function T(y){return typeof y=="string"?ms(n,y,c.value.path):Q({},y)}function D(y,I){if(f!==y)return Gt(oe.NAVIGATION_CANCELLED,{from:I,to:y})}function w(y){return W(y)}function U(y){return w(Q(T(y),{replace:!0}))}function le(y,I){const O=y.matched[y.matched.length-1];if(O&&O.redirect){const{redirect:L}=O;let q=typeof L=="function"?L(y,I):L;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=f=M(y),L=c.value,q=y.state,a=y.force,h=y.replace===!0,p=le(O,L);if(p)return W(Q(T(p),{state:typeof p=="object"?Q({},q,p.state):q,force:a,replace:h}),I||O);const _=O;_.redirectedFrom=I;let b;return!a&&oa(s,L,O)&&(b=Gt(oe.NAVIGATION_DUPLICATED,{to:_,from:L}),He(L,L,!0,!1)),(b?Promise.resolve(b):re(_,L)).catch(v=>nt(v)?nt(v,oe.NAVIGATION_GUARD_REDIRECT)?v:pt(v):J(v,_,L)).then(v=>{if(v){if(nt(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:a}),I||_)}else v=Oe(_,L,!0,h,q);return me(_,L,v),v})}function K(y,I){const O=D(y,I);return O?Promise.reject(O):Promise.resolve()}function G(y){const I=Nt.values().next().value;return I&&typeof I.runWithContext=="function"?I.runWithContext(y):y()}function re(y,I){let O;const[L,q,a]=Ea(y,I);O=vs(L.reverse(),"beforeRouteLeave",y,I);for(const p of L)p.leaveGuards.forEach(_=>{O.push(vt(_,y,I))});const h=K.bind(null,y,I);return O.push(h),Le(O).then(()=>{O=[];for(const p of o.list())O.push(vt(p,y,I));return O.push(h),Le(O)}).then(()=>{O=vs(q,"beforeRouteUpdate",y,I);for(const p of q)p.updateGuards.forEach(_=>{O.push(vt(_,y,I))});return O.push(h),Le(O)}).then(()=>{O=[];for(const p of a)if(p.beforeEnter)if(Be(p.beforeEnter))for(const _ of p.beforeEnter)O.push(vt(_,y,I));else O.push(vt(p.beforeEnter,y,I));return O.push(h),Le(O)}).then(()=>(y.matched.forEach(p=>p.enterCallbacks={}),O=vs(a,"beforeRouteEnter",y,I,G),O.push(h),Le(O))).then(()=>{O=[];for(const p of i.list())O.push(vt(p,y,I));return O.push(h),Le(O)}).catch(p=>nt(p,oe.NAVIGATION_CANCELLED)?p:Promise.reject(p))}function me(y,I,O){l.list().forEach(L=>G(()=>L(y,I,O)))}function Oe(y,I,O,L,q){const a=D(y,I);if(a)return a;const h=I===gt,p=kt?history.state:{};O&&(L||h?r.replace(y.fullPath,Q({scroll:h&&p&&p.scroll},q)):r.push(y.fullPath,q)),c.value=y,He(y,I,O,h),pt()}let Se;function Et(){Se||(Se=r.listen((y,I,O)=>{if(!St.listening)return;const L=M(y),q=le(L,St.currentRoute.value);if(q){W(Q(q,{replace:!0,force:!0}),L).catch(an);return}f=L;const a=c.value;kt&&ha(Qr(a.fullPath,O.delta),ss()),re(L,a).catch(h=>nt(h,oe.NAVIGATION_ABORTED|oe.NAVIGATION_CANCELLED)?h:nt(h,oe.NAVIGATION_GUARD_REDIRECT)?(W(Q(T(h.to),{force:!0}),L).then(p=>{nt(p,oe.NAVIGATION_ABORTED|oe.NAVIGATION_DUPLICATED)&&!O.delta&&O.type===Ds.pop&&r.go(-1,!1)}).catch(an),Promise.reject()):(O.delta&&r.go(-O.delta,!1),J(h,L,a))).then(h=>{h=h||Oe(L,a,!1),h&&(O.delta&&!nt(h,oe.NAVIGATION_CANCELLED)?r.go(-O.delta,!1):O.type===Ds.pop&&nt(h,oe.NAVIGATION_ABORTED|oe.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),me(L,a,h)}).catch(an)}))}let ht=Xt(),se=Xt(),H;function J(y,I,O){pt(y);const L=se.list();return L.length?L.forEach(q=>q(y,I,O)):console.error(y),Promise.reject(y)}function et(){return H&&c.value!==gt?Promise.resolve():new Promise((y,I)=>{ht.add([y,I])})}function pt(y){return H||(H=!y,Et(),ht.list().forEach(([I,O])=>y?O(y):I()),ht.reset()),y}function He(y,I,O,L){const{scrollBehavior:q}=e;if(!kt||!q)return Promise.resolve();const a=!O&&pa(Qr(y.fullPath,0))||(L||!O)&&history.state&&history.state.scroll||null;return Qn().then(()=>q(y,I,a)).then(h=>h&&da(h)).catch(h=>J(h,y,I))}const we=y=>r.go(y);let It;const Nt=new Set,St={currentRoute:c,listening:!0,addRoute:m,removeRoute:A,clearRoutes:t.clearRoutes,hasRoute:N,getRoutes:S,resolve:M,options:e,push:w,replace:U,go:we,back:()=>we(-1),forward:()=>we(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:se.add,isReady:et,install(y){y.component("RouterLink",Ha),y.component("RouterView",qa),y.config.globalProperties.$router=St,Object.defineProperty(y.config.globalProperties,"$route",{enumerable:!0,get:()=>Ot(c)}),kt&&!It&&c.value===gt&&(It=!0,w(r.location).catch(L=>{}));const I={};for(const L in gt)Object.defineProperty(I,L,{get:()=>c.value[L],enumerable:!0});y.provide(rs,St),y.provide(sr,Lo(I)),y.provide(Ls,c);const O=y.unmount;Nt.add(y),y.unmount=function(){Nt.delete(y),Nt.size<1&&(f=gt,Se&&Se(),Se=null,c.value=gt,It=!1,H=!1),O()}}};function Le(y){return y.reduce((I,O)=>I.then(()=>G(O)),Promise.resolve())}return St}function ef(){return Fe(rs)}function tf(e){return Fe(sr)}const Fi=$a({history:Aa("/app/"),routes:[{path:"/login",name:"login",component:()=>de(()=>import("./LoginView-D70AJu6A.js"),[]),meta:{guest:!0}},{path:"/register",name:"register-org",component:()=>de(()=>import("./RegisterOrgView-Bf8-oQoy.js"),[]),meta:{guest:!0}},{path:"/admin",name:"admin",component:()=>de(()=>import("./AdminDashboardView-Biz__aWn.js"),[]),meta:{requiresAuth:!0}},{path:"/",component:()=>de(()=>import("./AppLayout-B1xnAEtL.js"),[]),meta:{requiresAuth:!0},children:[{path:"",name:"dashboard",component:()=>de(()=>import("./DashboardView-DXGmhgHs.js"),[])},{path:"orders",name:"orders",component:()=>de(()=>import("./OrdersView-CoEtoYmQ.js"),[])},{path:"orders/:id",name:"order-detail",component:()=>de(()=>import("./OrderDetailView-DVidF9zv.js"),[])},{path:"users",name:"users",component:()=>de(()=>import("./UsersView-DMX0kDUw.js"),[]),meta:{roles:["chef","disponent"]}},{path:"availability",name:"availability",component:()=>de(()=>import("./AvailabilityView-CaUTc8n0.js"),[])},{path:"timesheets",name:"timesheets",component:()=>de(()=>import("./TimesheetsView-Bvjo1kDE.js"),[])},{path:"settings",name:"settings",component:()=>de(()=>import("./SettingsView-Bkdz88hj.js"),[])},{path:"modules",name:"modules",component:()=>de(()=>import("./ModulesView-BBWB_hpb.js"),[]),meta:{roles:["chef"]}},{path:"partnerships",name:"partnerships",component:()=>de(()=>import("./PartnershipsView-BTqY1GtJ.js"),[])},{path:"help",name:"help",component:()=>de(()=>import("./HelpView-zL_K4Iai.js"),[])},{path:"qualifications",name:"qualifications",component:()=>de(()=>import("./QualificationsView-BIlDcj-b.js"),[])},{path:"objects",name:"objects",component:()=>de(()=>import("./ObjectsView-BhTJxexl.js"),[])}]}]});Fi.beforeEach(async(e,t,n)=>{var l;const s=tr();!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 rr=hu(ju);rr.use(mu());rr.use(Fi);rr.mount("#app");export{Ja as A,Ya as B,Ve as F,Pe as a,Nl as b,ke as c,Yn as d,pi as e,ef as f,tf as g,sn as h,be as i,Il as j,ce as k,Xl as l,Yt as m,qn as n,Ce as o,Pc as p,Qs as q,Ie as r,Xa as s,ys as t,tr as u,Qa as v,Za as w,_r as x,Ot as y,di as z}; + */let Sa=()=>location.protocol+"//"+location.host;function Li(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),zr(l,"")}return zr(n,e)+s+r}function wa(e,t,n,s){let r=[],o=[],i=null;const l=({state:g})=>{const m=Li(e,location),A=n.value,S=t.value;let N=0;if(g){if(n.value=m,t.value=g,i&&i===A){i=null;return}N=S?g.position-S.position:0}else s(m);r.forEach(M=>{M(n.value,A,{delta:N,type:Ds.pop,direction:N?N>0?_s.forward:_s.back:_s.unknown})})};function c(){i=n.value}function f(g){r.push(g);const m=()=>{const A=r.indexOf(g);A>-1&&r.splice(A,1)};return o.push(m),m}function u(){if(document.visibilityState==="hidden"){const{history:g}=window;if(!g.state)return;g.replaceState(Q({},g.state,{scroll:ss()}),"")}}function d(){for(const g of o)g();o=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:c,listen:f,destroy:d}}function Zr(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?ss():null}}function xa(e){const{history:t,location:n}=window,s={value:Li(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,f,u){const d=e.indexOf("#"),g=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+c:Sa()+e+c;try{t[u?"replaceState":"pushState"](f,"",g),r.value=f}catch(m){console.error(m),n[u?"replace":"assign"](g)}}function i(c,f){o(c,Q({},t.state,Zr(r.value.back,c,r.value.forward,!0),f,{position:r.value.position}),!0),s.value=c}function l(c,f){const u=Q({},r.value,t.state,{forward:c,scroll:ss()});o(u.current,u,!0),o(c,Q({},Zr(s.value,c,null),{position:u.position+1},f),!1),s.value=c}return{location:s,state:r,push:l,replace:i}}function Aa(e){e=ca(e);const t=xa(e),n=wa(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:aa.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 Rt=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 Ra={type:Rt.Static,value:""},Ca=/[a-zA-Z0-9_]/;function Oa(e){if(!e)return[[]];if(e==="/")return[[Ra]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${f}": ${m}`)}let n=fe.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,c,f="",u="";function d(){f&&(n===fe.Static?o.push({type:Rt.Static,value:f}):n===fe.Param||n===fe.ParamRegExp||n===fe.ParamRegExpEnd?(o.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${f}) must be alone in its segment. eg: '/:ids+.`),o.push({type:Rt.Param,value:f,regexp:u,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),f="")}function g(){f+=c}for(;lt.length?t.length===1&&t[0]===ve.Static+ve.Segment?1:-1:0}function ki(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Da={strict:!1,end:!0,sensitive:!1};function Ma(e,t,n){const s=Ia(Oa(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 La(e,t){const n=[],s=new Map;t=$r(Da,t);function r(d){return s.get(d)}function o(d,g,m){const A=!m,S=so(d);S.aliasOf=m&&m.record;const N=$r(t,d),M=[S];if("alias"in d){const w=typeof d.alias=="string"?[d.alias]:d.alias;for(const U of w)M.push(so(Q({},S,{components:m?m.record.components:S.components,path:U,aliasOf:m?m.record:S})))}let T,D;for(const w of M){const{path:U}=w;if(g&&U[0]!=="/"){const ce=g.record.path,W=ce[ce.length-1]==="/"?"":"/";w.path=g.record.path+(U&&W+U)}if(T=Ma(w,g,N),m?m.alias.push(T):(D=D||T,D!==T&&D.alias.push(T),A&&d.name&&!ro(T)&&i(d.name)),Vi(T)&&c(T),S.children){const ce=S.children;for(let W=0;W{i(D)}:an}function i(d){if(Di(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=Fa(d,n);n.splice(g,0,d),d.record.name&&!ro(d)&&s.set(d.record.name,d)}function f(d,g){let m,A={},S,N;if("name"in d&&d.name){if(m=s.get(d.name),!m)throw Gt(ie.MATCHER_NOT_FOUND,{location:d});N=m.record.name,A=Q(no(g.params,m.keys.filter(D=>!D.optional).concat(m.parent?m.parent.keys.filter(D=>D.optional):[]).map(D=>D.name)),d.params&&no(d.params,m.keys.map(D=>D.name))),S=m.stringify(A)}else if(d.path!=null)S=d.path,m=n.find(D=>D.re.test(S)),m&&(A=m.parse(S),N=m.record.name);else{if(m=g.name?s.get(g.name):n.find(D=>D.re.test(g.path)),!m)throw Gt(ie.MATCHER_NOT_FOUND,{location:d,currentLocation:g});N=m.record.name,A=Q({},g.params,d.params),S=m.stringify(A)}const M=[];let T=m;for(;T;)M.unshift(T.record),T=T.parent;return{name:N,path:S,params:A,matched:M,meta:Va(M)}}e.forEach(d=>o(d));function u(){n.length=0,s.clear()}return{addRoute:o,resolve:f,removeRoute:i,clearRoutes:u,getRoutes:l,getRecordMatcher:r}}function no(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function so(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:ka(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 ka(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 ro(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Va(e){return e.reduce((t,n)=>Q(t,n.meta),{})}function Fa(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;ki(e,t[o])<0?s=o:n=o+1}const r=ja(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function ja(e){let t=e;for(;t=t.parent;)if(Vi(t)&&ki(e,t)===0)return t}function Vi({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function oo(e){const t=Fe(rs),n=Fe(sr),s=ue(()=>{const c=Ot(e.to);return t.resolve(c)}),r=ue(()=>{const{matched:c}=s.value,{length:f}=c,u=c[f-1],d=n.matched;if(!u||!d.length)return-1;const g=d.findIndex(Kt.bind(null,u));if(g>-1)return g;const m=io(c[f-2]);return f>1&&io(u)===m&&d[d.length-1].path!==m?d.findIndex(Kt.bind(null,c[f-2])):g}),o=ue(()=>r.value>-1&&Ga(n.params,s.value.params)),i=ue(()=>r.value>-1&&r.value===n.matched.length-1&&Ni(n.params,s.value.params));function l(c={}){if(Ka(c)){const f=t[Ot(e.replace)?"replace":"push"](Ot(e.to)).catch(an);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>f),f}return Promise.resolve()}return{route:s,href:ue(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function Ua(e){return e.length===1?e[0]:e}const Ba=Yn({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:oo,setup(e,{slots:t}){const n=yn(oo(e)),{options:s}=Fe(rs),r=ue(()=>({[lo(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[lo(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&Ua(t.default(n));return e.custom?o:vi("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Ha=Ba;function Ka(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 Ga(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(!Be(r)||r.length!==s.length||s.some((o,i)=>o.valueOf()!==r[i].valueOf()))return!1}return!0}function io(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const lo=(e,t,n)=>e??t??n,Wa=Yn({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=Fe(Ls),r=ue(()=>e.route||s.value),o=Fe(Xr,0),i=ue(()=>{let f=Ot(o);const{matched:u}=r.value;let d;for(;(d=u[f])&&!d.components;)f++;return f}),l=ue(()=>r.value.matched[i.value]);Rn(Xr,ue(()=>i.value+1)),Rn(ba,l),Rn(Ls,r);const c=Ie();return sn(()=>[c.value,l.value,e.name],([f,u,d],[g,m,A])=>{u&&(u.instances[d]=f,m&&m!==u&&f&&f===g&&(u.leaveGuards.size||(u.leaveGuards=m.leaveGuards),u.updateGuards.size||(u.updateGuards=m.updateGuards))),f&&u&&(!m||!Kt(u,m)||!g)&&(u.enterCallbacks[d]||[]).forEach(S=>S(f))},{flush:"post"}),()=>{const f=r.value,u=e.name,d=l.value,g=d&&d.components[u];if(!g)return co(n.default,{Component:g,route:f});const m=d.props[u],A=m?m===!0?f.params:typeof m=="function"?m(f):m:null,N=vi(g,Q({},A,t,{onVnodeUnmounted:M=>{M.component.isUnmounted&&(d.instances[u]=null)},ref:c}));return co(n.default,{Component:N,route:f})||N}}});function co(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const qa=Wa;function $a(e){const t=La(e.routes,e),n=e.parseQuery||va,s=e.stringifyQuery||Yr,r=e.history,o=Xt(),i=Xt(),l=Xt(),c=vl(gt);let f=gt;kt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=gs.bind(null,y=>""+y),d=gs.bind(null,ta),g=gs.bind(null,_n);function m(y,I){let O,L;return Di(y)?(O=t.getRecordMatcher(y),L=I):L=y,t.addRoute(L,O)}function A(y){const I=t.getRecordMatcher(y);I&&t.removeRoute(I)}function S(){return t.getRoutes().map(y=>y.record)}function N(y){return!!t.getRecordMatcher(y)}function M(y,I){if(I=Q({},I||c.value),typeof y=="string"){const p=ms(n,y,I.path),_=t.resolve({path:p.path},I),b=r.createHref(p.fullPath);return Q(p,_,{params:g(_.params),hash:_n(p.hash),redirectedFrom:void 0,href:b})}let O;if(y.path!=null)O=Q({},y,{path:ms(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 L=t.resolve(O,I),q=y.hash||"";L.params=u(g(L.params));const a=ra(s,Q({},y,{hash:Xu(q),path:L.path})),h=r.createHref(a);return Q({fullPath:a,hash:q,query:s===Yr?ya(y.query):y.query||{}},L,{redirectedFrom:void 0,href:h})}function T(y){return typeof y=="string"?ms(n,y,c.value.path):Q({},y)}function D(y,I){if(f!==y)return Gt(ie.NAVIGATION_CANCELLED,{from:I,to:y})}function w(y){return W(y)}function U(y){return w(Q(T(y),{replace:!0}))}function ce(y,I){const O=y.matched[y.matched.length-1];if(O&&O.redirect){const{redirect:L}=O;let q=typeof L=="function"?L(y,I):L;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=f=M(y),L=c.value,q=y.state,a=y.force,h=y.replace===!0,p=ce(O,L);if(p)return W(Q(T(p),{state:typeof p=="object"?Q({},q,p.state):q,force:a,replace:h}),I||O);const _=O;_.redirectedFrom=I;let b;return!a&&oa(s,L,O)&&(b=Gt(ie.NAVIGATION_DUPLICATED,{to:_,from:L}),He(L,L,!0,!1)),(b?Promise.resolve(b):re(_,L)).catch(v=>nt(v)?nt(v,ie.NAVIGATION_GUARD_REDIRECT)?v:pt(v):J(v,_,L)).then(v=>{if(v){if(nt(v,ie.NAVIGATION_GUARD_REDIRECT))return W(Q({replace:h},T(v.to),{state:typeof v.to=="object"?Q({},q,v.to.state):q,force:a}),I||_)}else v=Oe(_,L,!0,h,q);return me(_,L,v),v})}function K(y,I){const O=D(y,I);return O?Promise.reject(O):Promise.resolve()}function G(y){const I=Nt.values().next().value;return I&&typeof I.runWithContext=="function"?I.runWithContext(y):y()}function re(y,I){let O;const[L,q,a]=Ea(y,I);O=vs(L.reverse(),"beforeRouteLeave",y,I);for(const p of L)p.leaveGuards.forEach(_=>{O.push(vt(_,y,I))});const h=K.bind(null,y,I);return O.push(h),Le(O).then(()=>{O=[];for(const p of o.list())O.push(vt(p,y,I));return O.push(h),Le(O)}).then(()=>{O=vs(q,"beforeRouteUpdate",y,I);for(const p of q)p.updateGuards.forEach(_=>{O.push(vt(_,y,I))});return O.push(h),Le(O)}).then(()=>{O=[];for(const p of a)if(p.beforeEnter)if(Be(p.beforeEnter))for(const _ of p.beforeEnter)O.push(vt(_,y,I));else O.push(vt(p.beforeEnter,y,I));return O.push(h),Le(O)}).then(()=>(y.matched.forEach(p=>p.enterCallbacks={}),O=vs(a,"beforeRouteEnter",y,I,G),O.push(h),Le(O))).then(()=>{O=[];for(const p of i.list())O.push(vt(p,y,I));return O.push(h),Le(O)}).catch(p=>nt(p,ie.NAVIGATION_CANCELLED)?p:Promise.reject(p))}function me(y,I,O){l.list().forEach(L=>G(()=>L(y,I,O)))}function Oe(y,I,O,L,q){const a=D(y,I);if(a)return a;const h=I===gt,p=kt?history.state:{};O&&(L||h?r.replace(y.fullPath,Q({scroll:h&&p&&p.scroll},q)):r.push(y.fullPath,q)),c.value=y,He(y,I,O,h),pt()}let Se;function Et(){Se||(Se=r.listen((y,I,O)=>{if(!St.listening)return;const L=M(y),q=ce(L,St.currentRoute.value);if(q){W(Q(q,{replace:!0,force:!0}),L).catch(an);return}f=L;const a=c.value;kt&&ha(Qr(a.fullPath,O.delta),ss()),re(L,a).catch(h=>nt(h,ie.NAVIGATION_ABORTED|ie.NAVIGATION_CANCELLED)?h:nt(h,ie.NAVIGATION_GUARD_REDIRECT)?(W(Q(T(h.to),{force:!0}),L).then(p=>{nt(p,ie.NAVIGATION_ABORTED|ie.NAVIGATION_DUPLICATED)&&!O.delta&&O.type===Ds.pop&&r.go(-1,!1)}).catch(an),Promise.reject()):(O.delta&&r.go(-O.delta,!1),J(h,L,a))).then(h=>{h=h||Oe(L,a,!1),h&&(O.delta&&!nt(h,ie.NAVIGATION_CANCELLED)?r.go(-O.delta,!1):O.type===Ds.pop&&nt(h,ie.NAVIGATION_ABORTED|ie.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),me(L,a,h)}).catch(an)}))}let ht=Xt(),se=Xt(),H;function J(y,I,O){pt(y);const L=se.list();return L.length?L.forEach(q=>q(y,I,O)):console.error(y),Promise.reject(y)}function et(){return H&&c.value!==gt?Promise.resolve():new Promise((y,I)=>{ht.add([y,I])})}function pt(y){return H||(H=!y,Et(),ht.list().forEach(([I,O])=>y?O(y):I()),ht.reset()),y}function He(y,I,O,L){const{scrollBehavior:q}=e;if(!kt||!q)return Promise.resolve();const a=!O&&pa(Qr(y.fullPath,0))||(L||!O)&&history.state&&history.state.scroll||null;return Qn().then(()=>q(y,I,a)).then(h=>h&&da(h)).catch(h=>J(h,y,I))}const we=y=>r.go(y);let It;const Nt=new Set,St={currentRoute:c,listening:!0,addRoute:m,removeRoute:A,clearRoutes:t.clearRoutes,hasRoute:N,getRoutes:S,resolve:M,options:e,push:w,replace:U,go:we,back:()=>we(-1),forward:()=>we(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:se.add,isReady:et,install(y){y.component("RouterLink",Ha),y.component("RouterView",qa),y.config.globalProperties.$router=St,Object.defineProperty(y.config.globalProperties,"$route",{enumerable:!0,get:()=>Ot(c)}),kt&&!It&&c.value===gt&&(It=!0,w(r.location).catch(L=>{}));const I={};for(const L in gt)Object.defineProperty(I,L,{get:()=>c.value[L],enumerable:!0});y.provide(rs,St),y.provide(sr,Lo(I)),y.provide(Ls,c);const O=y.unmount;Nt.add(y),y.unmount=function(){Nt.delete(y),Nt.size<1&&(f=gt,Se&&Se(),Se=null,c.value=gt,It=!1,H=!1),O()}}};function Le(y){return y.reduce((I,O)=>I.then(()=>G(O)),Promise.resolve())}return St}function ef(){return Fe(rs)}function tf(e){return Fe(sr)}const Fi=$a({history:Aa("/app/"),routes:[{path:"/login",name:"login",component:()=>oe(()=>import("./LoginView-D8QH8UMb.js"),[]),meta:{guest:!0}},{path:"/register",name:"register-org",component:()=>oe(()=>import("./RegisterOrgView-CpcADoEU.js"),[]),meta:{guest:!0}},{path:"/admin",name:"admin",component:()=>oe(()=>import("./AdminDashboardView-JnGO4r61.js"),[]),meta:{requiresAuth:!0}},{path:"/",component:()=>oe(()=>import("./AppLayout-AMYs4jcG.js"),[]),meta:{requiresAuth:!0},children:[{path:"",name:"dashboard",component:()=>oe(()=>import("./DashboardView-D1ilHHiP.js"),[])},{path:"orders",name:"orders",component:()=>oe(()=>import("./OrdersView-Cykxo3M3.js"),[])},{path:"orders/:id",name:"order-detail",component:()=>oe(()=>import("./OrderDetailView-CrMXW-i2.js"),[])},{path:"users",name:"users",component:()=>oe(()=>import("./UsersView-Df5a9eIx.js"),[]),meta:{roles:["chef","disponent"]}},{path:"availability",name:"availability",component:()=>oe(()=>import("./AvailabilityView-BNPzNcWA.js"),[])},{path:"timesheets",name:"timesheets",component:()=>oe(()=>import("./TimesheetsView-Cx-KwgCo.js"),[])},{path:"settings",name:"settings",component:()=>oe(()=>import("./SettingsView-4DujBg5S.js"),[])},{path:"modules",name:"modules",component:()=>oe(()=>import("./ModulesView-BNzetqIV.js"),[]),meta:{roles:["chef"]}},{path:"partnerships",name:"partnerships",component:()=>oe(()=>import("./PartnershipsView-BTiY9iQS.js"),[])},{path:"help",name:"help",component:()=>oe(()=>import("./HelpView-1PeoZaC4.js"),[])},{path:"qualifications",name:"qualifications",component:()=>oe(()=>import("./QualificationsView-BbIklgwE.js"),[])},{path:"objects",name:"objects",component:()=>oe(()=>import("./ObjectsView-CzlgFF9j.js"),[])},{path:"shifts",name:"shifts",component:()=>oe(()=>import("./ShiftsView-gFZrEy1d.js"),[]),meta:{roles:["chef","disponent"]}},{path:"patrols",name:"patrols",component:()=>oe(()=>import("./PatrolsView-CE7IkVbv.js"),[])},{path:"incidents",name:"incidents",component:()=>oe(()=>import("./IncidentsView-DPo8woI1.js"),[])},{path:"vehicles",name:"vehicles",component:()=>oe(()=>import("./VehiclesView-C2kXdRXZ.js"),[]),meta:{roles:["chef","disponent"]}},{path:"documents",name:"documents",component:()=>oe(()=>import("./DocumentsView-cD_00o40.js"),[])},{path:"customers",name:"customers",component:()=>oe(()=>import("./CustomersView-B4K9IT7m.js"),[]),meta:{roles:["chef","disponent"]}},{path:"billing",name:"billing",component:()=>oe(()=>import("./BillingView-TAMo2net.js"),[]),meta:{roles:["chef"]}}]}]});Fi.beforeEach(async(e,t,n)=>{var l;const s=tr();!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 rr=hu(ju);rr.use(mu());rr.use(Fi);rr.mount("#app");export{Ja as A,Ya as B,js as C,Ve as F,Pe as a,Nl as b,ke as c,Yn as d,pi as e,ef as f,tf as g,sn as h,be as i,Il as j,ue as k,Xl as l,Yt as m,qn as n,Ce as o,Pc as p,Qs as q,Ie as r,Xa as s,ys as t,tr as u,Qa as v,Za as w,_r as x,Ot as y,di as z}; diff --git a/dist/index.html b/dist/index.html index 6d8176a..a8c80b6 100644 --- a/dist/index.html +++ b/dist/index.html @@ -18,8 +18,8 @@ - - + +
diff --git a/src/components/layout/AppSidebar.vue b/src/components/layout/AppSidebar.vue index 724584a..67da85e 100644 --- a/src/components/layout/AppSidebar.vue +++ b/src/components/layout/AppSidebar.vue @@ -21,18 +21,34 @@ const navigation = computed(() => { ] if (authStore.canManageUsers) { - items.push({ name: 'Mitarbeiter', href: '/users', icon: '👥' }) + items.push( + { name: 'Mitarbeiter', href: '/users', icon: '👥' }, + { name: 'Schichtplanung', href: '/shifts', icon: '📅' } + ) } items.push( - { name: 'Verfügbarkeit', href: '/availability', icon: '📅' }, + { name: 'Verfügbarkeit', href: '/availability', icon: '🗓️' }, { name: 'Stundenzettel', href: '/timesheets', icon: '⏱️' }, { name: 'Qualifikationen', href: '/qualifications', icon: '🎓' }, { name: 'Objekte', href: '/objects', icon: '🏢' }, + { name: 'Rundgänge', href: '/patrols', icon: '📍' }, + { name: 'Vorfälle', href: '/incidents', icon: '🚨' }, + { name: 'Dokumente', href: '/documents', icon: '📁' }, ) + if (authStore.canManageUsers) { + items.push( + { name: 'Fahrzeuge', href: '/vehicles', icon: '🚗' }, + { name: 'Kunden', href: '/customers', icon: '🤝' } + ) + } + if (authStore.isChef) { - items.push({ name: 'Module', href: '/modules', icon: '⚙️' }) + items.push( + { name: 'Abrechnung', href: '/billing', icon: '💰' }, + { name: 'Module', href: '/modules', icon: '⚙️' } + ) } items.push( diff --git a/src/router/index.ts b/src/router/index.ts index 5af1ddf..2e137d0 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -88,6 +88,45 @@ const router = createRouter({ path: 'objects', name: 'objects', component: () => import('@/views/ObjectsView.vue') + }, + { + path: 'shifts', + name: 'shifts', + component: () => import('@/views/ShiftsView.vue'), + meta: { roles: ['chef', 'disponent'] } + }, + { + path: 'patrols', + name: 'patrols', + component: () => import('@/views/PatrolsView.vue') + }, + { + path: 'incidents', + name: 'incidents', + component: () => import('@/views/IncidentsView.vue') + }, + { + path: 'vehicles', + name: 'vehicles', + component: () => import('@/views/VehiclesView.vue'), + meta: { roles: ['chef', 'disponent'] } + }, + { + path: 'documents', + name: 'documents', + component: () => import('@/views/DocumentsView.vue') + }, + { + path: 'customers', + name: 'customers', + component: () => import('@/views/CustomersView.vue'), + meta: { roles: ['chef', 'disponent'] } + }, + { + path: 'billing', + name: 'billing', + component: () => import('@/views/BillingView.vue'), + meta: { roles: ['chef'] } } ] } diff --git a/src/views/BillingView.vue b/src/views/BillingView.vue new file mode 100644 index 0000000..db9eb2e --- /dev/null +++ b/src/views/BillingView.vue @@ -0,0 +1,165 @@ + + + diff --git a/src/views/CustomersView.vue b/src/views/CustomersView.vue new file mode 100644 index 0000000..9a49140 --- /dev/null +++ b/src/views/CustomersView.vue @@ -0,0 +1,177 @@ + + + diff --git a/src/views/DocumentsView.vue b/src/views/DocumentsView.vue new file mode 100644 index 0000000..4b2722a --- /dev/null +++ b/src/views/DocumentsView.vue @@ -0,0 +1,137 @@ + + + diff --git a/src/views/IncidentsView.vue b/src/views/IncidentsView.vue new file mode 100644 index 0000000..9d684bb --- /dev/null +++ b/src/views/IncidentsView.vue @@ -0,0 +1,134 @@ + + + diff --git a/src/views/ObjectsView.vue b/src/views/ObjectsView.vue index 0845a01..916f444 100644 --- a/src/views/ObjectsView.vue +++ b/src/views/ObjectsView.vue @@ -1,718 +1,189 @@