diff --git a/.env.admin b/.env.admin deleted file mode 100644 index 0be572a..0000000 --- a/.env.admin +++ /dev/null @@ -1,2 +0,0 @@ -VITE_API_URL=https://api.montime.ir -VITE_APP_MODE=admin diff --git a/.env.example b/.env.example index e5af2a6..5317fce 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1 @@ VITE_API_URL=http://localhost:3000 -# web = montime.ir | admin = adm.montime.ir (also auto-detected from hostname) -VITE_APP_MODE=web diff --git a/.gitignore b/.gitignore index cd6a76f..633f97a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ node_modules dist -dist-admin .env .env.local *.log diff --git a/dist-admin/assets/AdminBusinessesView-BaBO_hK6.js b/dist-admin/assets/AdminBusinessesView-BaBO_hK6.js new file mode 100644 index 0000000..234e527 --- /dev/null +++ b/dist-admin/assets/AdminBusinessesView-BaBO_hK6.js @@ -0,0 +1 @@ +import{_ as r}from"./AdminLayout.vue_vue_type_script_setup_true_lang-X12EOjkr.js";import{i as s,b as o,O as a,a as t,u as d}from"./index--aiJRDg4.js";import"./ThemeToggle.vue_vue_type_script_setup_true_lang-MhHgjOGX.js";const x=s({__name:"AdminBusinessesView",setup(n){return(m,e)=>(d(),o(r,null,{default:a(()=>[...e[0]||(e[0]=[t("h1",{class:"text-xl font-bold text-text"},"کسب‌وکارها",-1),t("div",{class:"mt-4 rounded-2xl border border-dashed border-border bg-surface-2 p-6 text-center text-sm text-muted"}," به‌زودی — CRUD کسب‌وکار و واگذاری مدیر ",-1)])]),_:1}))}});export{x as default}; diff --git a/dist-admin/assets/AdminHomeView-_UXcBUiF.js b/dist-admin/assets/AdminHomeView-_UXcBUiF.js new file mode 100644 index 0000000..a8d0733 --- /dev/null +++ b/dist-admin/assets/AdminHomeView-_UXcBUiF.js @@ -0,0 +1 @@ +import{_ as s}from"./AdminLayout.vue_vue_type_script_setup_true_lang-X12EOjkr.js";import{i as r,b as o,O as a,a as t,u as d}from"./index--aiJRDg4.js";import"./ThemeToggle.vue_vue_type_script_setup_true_lang-MhHgjOGX.js";const i=r({__name:"AdminHomeView",setup(x){return(l,e)=>(d(),o(s,null,{default:a(()=>[...e[0]||(e[0]=[t("h1",{class:"text-xl font-bold text-text"},"داشبورد مدیریت",-1),t("p",{class:"mt-2 text-sm text-muted"},"فقط سوپر ادمین — adm.montime.ir",-1),t("div",{class:"mt-6 grid gap-3 sm:grid-cols-2"},[t("div",{class:"rounded-2xl border border-border bg-surface-2 p-4"},[t("p",{class:"text-xs text-muted"},"کسب‌وکارها"),t("p",{class:"mt-1 text-2xl font-bold text-text"},"—")]),t("div",{class:"rounded-2xl border border-border bg-surface-2 p-4"},[t("p",{class:"text-xs text-muted"},"کاربران"),t("p",{class:"mt-1 text-2xl font-bold text-text"},"—")])],-1)])]),_:1}))}});export{i as default}; diff --git a/dist-admin/assets/AdminLayout.vue_vue_type_script_setup_true_lang-X12EOjkr.js b/dist-admin/assets/AdminLayout.vue_vue_type_script_setup_true_lang-X12EOjkr.js new file mode 100644 index 0000000..9133e57 --- /dev/null +++ b/dist-admin/assets/AdminLayout.vue_vue_type_script_setup_true_lang-X12EOjkr.js @@ -0,0 +1 @@ +import{i as b,I as x,b as _,O as o,a as e,g as a,y as f,e as g,x as h,F as y,K as k,J as v,B,u as n,q as C,H as L,D as r,f as A}from"./index--aiJRDg4.js";import{A as R,_ as S}from"./ThemeToggle.vue_vue_type_script_setup_true_lang-MhHgjOGX.js";const N={class:"sticky top-0 z-10 flex items-center justify-between border-b border-amber-500/30 bg-surface/95 px-4 py-3 backdrop-blur"},V={class:"flex items-center gap-2"},w={class:"flex-1 space-y-4 px-4 py-4"},z={class:"sticky bottom-0 border-t border-border bg-surface/95 px-2 py-2"},D={class:"grid grid-cols-3 gap-1"},F={class:"text-lg"},E=b({__name:"AdminLayout",setup($){const l=v(),c=k(),i=x(),d=[{to:"/admin",name:"admin-home",label:"داشبورد",icon:"📊"},{to:"/admin/businesses",name:"admin-businesses",label:"کسب‌وکار",icon:"🏪"},{to:"/admin/users",name:"admin-users",label:"کاربران",icon:"👥"}];function u(){i.logout(),c.push({name:"admin-login"})}return(m,s)=>{const p=B("RouterLink");return n(),_(R,null,{default:o(()=>[e("header",N,[s[0]||(s[0]=e("div",null,[e("p",{class:"font-bold text-text"},"پنل مدیریت"),e("p",{class:"text-xs text-amber-600 dark:text-amber-400"},"adm.montime.ir")],-1)),e("div",V,[a(S),e("button",{type:"button",class:"rounded-xl px-3 py-2 text-sm text-muted hover:bg-surface-3",onClick:u}," خروج ")])]),e("main",w,[f(m.$slots,"default")]),e("nav",z,[e("div",D,[(n(),g(y,null,h(d,t=>a(p,{key:t.to,to:t.to,class:C(["flex flex-col items-center rounded-xl py-2 text-xs",L(l).name===t.name?"bg-amber-500/15 text-amber-700 dark:text-amber-400":"text-muted hover:bg-surface-3"])},{default:o(()=>[e("span",F,r(t.icon),1),A(" "+r(t.label),1)]),_:2},1032,["to","class"])),64))])])]),_:3})}}});export{E as _}; diff --git a/dist-admin/assets/AdminUsersView-BvzKFP7Z.js b/dist-admin/assets/AdminUsersView-BvzKFP7Z.js new file mode 100644 index 0000000..1002883 --- /dev/null +++ b/dist-admin/assets/AdminUsersView-BvzKFP7Z.js @@ -0,0 +1 @@ +import{_ as r}from"./AdminLayout.vue_vue_type_script_setup_true_lang-X12EOjkr.js";import{i as s,b as o,O as a,a as t,u as d}from"./index--aiJRDg4.js";import"./ThemeToggle.vue_vue_type_script_setup_true_lang-MhHgjOGX.js";const c=s({__name:"AdminUsersView",setup(n){return(m,e)=>(d(),o(r,null,{default:a(()=>[...e[0]||(e[0]=[t("h1",{class:"text-xl font-bold text-text"},"کاربران",-1),t("div",{class:"mt-4 rounded-2xl border border-dashed border-border bg-surface-2 p-6 text-center text-sm text-muted"}," به‌زودی ",-1)])]),_:1}))}});export{c as default}; diff --git a/dist-admin/assets/AppBookingsView-c-Kjg5W4.js b/dist-admin/assets/AppBookingsView-c-Kjg5W4.js new file mode 100644 index 0000000..0ad5163 --- /dev/null +++ b/dist-admin/assets/AppBookingsView-c-Kjg5W4.js @@ -0,0 +1 @@ +import{_ as r}from"./WebAppLayout.vue_vue_type_script_setup_true_lang-D1g6DvZW.js";import{i as o,b as s,O as a,a as t,u as d}from"./index--aiJRDg4.js";import"./ThemeToggle.vue_vue_type_script_setup_true_lang-MhHgjOGX.js";const x=o({__name:"AppBookingsView",setup(n){return(m,e)=>(d(),s(r,null,{default:a(()=>[...e[0]||(e[0]=[t("h1",{class:"mb-4 text-xl font-bold text-text"},"رزروهای من",-1),t("div",{class:"rounded-2xl border border-dashed border-border bg-surface-2 p-6 text-center text-sm text-muted"}," به‌زودی ",-1)])]),_:1}))}});export{x as default}; diff --git a/dist-admin/assets/AppHomeView-DRRZFXrJ.js b/dist-admin/assets/AppHomeView-DRRZFXrJ.js new file mode 100644 index 0000000..2d8c1dd --- /dev/null +++ b/dist-admin/assets/AppHomeView-DRRZFXrJ.js @@ -0,0 +1 @@ +import{_ as s}from"./WebAppLayout.vue_vue_type_script_setup_true_lang-D1g6DvZW.js";import{i as r,b as o,O as a,a as e,u as d}from"./index--aiJRDg4.js";import"./ThemeToggle.vue_vue_type_script_setup_true_lang-MhHgjOGX.js";const x=r({__name:"AppHomeView",setup(n){return(c,t)=>(d(),o(s,null,{default:a(()=>[...t[0]||(t[0]=[e("section",{class:"space-y-4"},[e("h1",{class:"text-xl font-bold text-text"},"کشف خدمات محلی"),e("p",{class:"text-sm text-muted"}," به‌زودی: دسته‌بندی‌ها، جستجو و لیست کسب‌وکارها "),e("div",{class:"rounded-2xl border border-dashed border-border bg-surface-2 p-6 text-center text-sm text-muted"}," فاز بعدی — صفحهٔ خانه ")],-1)])]),_:1}))}});export{x as default}; diff --git a/dist-admin/assets/AppOwnerView-B127qc4H.js b/dist-admin/assets/AppOwnerView-B127qc4H.js new file mode 100644 index 0000000..2ceca26 --- /dev/null +++ b/dist-admin/assets/AppOwnerView-B127qc4H.js @@ -0,0 +1 @@ +import{_ as r}from"./WebAppLayout.vue_vue_type_script_setup_true_lang-D1g6DvZW.js";import{i as s,b as o,O as a,a as e,u as d}from"./index--aiJRDg4.js";import"./ThemeToggle.vue_vue_type_script_setup_true_lang-MhHgjOGX.js";const c=s({__name:"AppOwnerView",setup(m){return(n,t)=>(d(),o(r,null,{default:a(()=>[...t[0]||(t[0]=[e("h1",{class:"mb-4 text-xl font-bold text-text"},"مدیریت کسب‌وکار",-1),e("p",{class:"mb-4 text-sm text-muted"},"خدمات، ویژگی‌ها و رزروهای ورودی",-1),e("div",{class:"rounded-2xl border border-dashed border-border bg-surface-2 p-6 text-center text-sm text-muted"}," به‌زودی — پنل صاحب کسب‌وکار ",-1)])]),_:1}))}});export{c as default}; diff --git a/dist-admin/assets/AppProfileView-BR-lRiFJ.js b/dist-admin/assets/AppProfileView-BR-lRiFJ.js new file mode 100644 index 0000000..2f0c0c9 --- /dev/null +++ b/dist-admin/assets/AppProfileView-BR-lRiFJ.js @@ -0,0 +1 @@ +import{_ as n}from"./WebAppLayout.vue_vue_type_script_setup_true_lang-D1g6DvZW.js";import{i as u,I as i,b as m,O as c,a as t,H as r,e as x,D as d,d as f,c as p,u as l}from"./index--aiJRDg4.js";import"./ThemeToggle.vue_vue_type_script_setup_true_lang-MhHgjOGX.js";const _={key:0,class:"space-y-3 rounded-2xl border border-border bg-surface-2 p-4"},b={class:"font-medium",dir:"ltr"},k={class:"font-medium"},v={class:"font-medium"},N=u({__name:"AppProfileView",setup(w){const s=i(),a=p(()=>{var o;switch((o=s.user)==null?void 0:o.role){case"admin":return"مدیر سیستم";case"business_owner":return"صاحب کسب‌وکار";default:return"مشتری"}});return(o,e)=>(l(),m(n,null,{default:c(()=>[e[3]||(e[3]=t("h1",{class:"mb-4 text-xl font-bold text-text"},"پروفایل",-1)),r(s).user?(l(),x("dl",_,[t("div",null,[e[0]||(e[0]=t("dt",{class:"text-xs text-muted"},"موبایل",-1)),t("dd",b,d(r(s).user.mobile),1)]),t("div",null,[e[1]||(e[1]=t("dt",{class:"text-xs text-muted"},"نام",-1)),t("dd",k,d(r(s).user.fullName??"—"),1)]),t("div",null,[e[2]||(e[2]=t("dt",{class:"text-xs text-muted"},"نقش",-1)),t("dd",v,d(a.value),1)])])):f("",!0)]),_:1}))}});export{N as default}; diff --git a/dist-admin/assets/AuthLayout.vue_vue_type_script_setup_true_lang-Bbht7KM7.js b/dist-admin/assets/AuthLayout.vue_vue_type_script_setup_true_lang-Bbht7KM7.js new file mode 100644 index 0000000..ef53343 --- /dev/null +++ b/dist-admin/assets/AuthLayout.vue_vue_type_script_setup_true_lang-Bbht7KM7.js @@ -0,0 +1 @@ +import{i as r,e as l,y as d,q as u,c as f,u as s,D as o,d as i,a,o as b,b as m,O as p,g as x}from"./index--aiJRDg4.js";import{A as h,_ as y}from"./ThemeToggle.vue_vue_type_script_setup_true_lang-MhHgjOGX.js";const _=["type","disabled"],V=r({__name:"AppButton",props:{variant:{default:"primary"},type:{default:"button"},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},setup(e){const t=e,n=f(()=>{switch(t.variant){case"ghost":return"bg-transparent text-muted hover:bg-surface-3 hover:text-text";case"danger":return"bg-red-500/15 text-red-600 dark:text-red-400 hover:bg-red-500/25";default:return"bg-brand-600 text-white hover:bg-brand-700"}});return(c,C)=>(s(),l("button",{type:e.type,class:u(["inline-flex w-full items-center justify-center rounded-xl px-4 py-3 text-sm font-semibold transition disabled:cursor-not-allowed disabled:opacity-50",n.value]),disabled:e.disabled||e.loading},[d(c.$slots,"default")],10,_))}}),g={class:"space-y-1.5"},v=["for"],$=["id"],j=r({inheritAttrs:!1,__name:"AppInput",props:{label:{},id:{},ltr:{type:Boolean,default:!1}},setup(e){return(t,n)=>(s(),l("div",g,[e.label?(s(),l("label",{key:0,for:e.id,class:"block text-sm font-medium text-muted"},o(e.label),9,v)):i("",!0),a("input",b({id:e.id,class:["w-full rounded-xl border border-border bg-surface-2 px-4 py-3 text-text outline-none transition placeholder:text-muted focus:border-brand-500 focus:ring-2 focus:ring-brand-500/30",e.ltr?"text-left":""]},t.$attrs),null,16,$)]))}}),B={class:"flex items-center justify-between px-4 py-3"},k={class:"text-lg font-bold text-text"},w={key:0,class:"text-sm text-muted"},A={class:"flex flex-1 flex-col px-4 pb-8"},D=r({__name:"AuthLayout",props:{title:{},subtitle:{}},setup(e){return(t,n)=>(s(),m(h,null,{default:p(()=>[a("header",B,[a("div",null,[a("p",k,o(e.title),1),e.subtitle?(s(),l("p",w,o(e.subtitle),1)):i("",!0)]),x(y)]),a("main",A,[d(t.$slots,"default")])]),_:3}))}});export{D as _,j as a,V as b}; diff --git a/dist-admin/assets/LoginView-cnE1DVdl.js b/dist-admin/assets/LoginView-cnE1DVdl.js new file mode 100644 index 0000000..a52707e --- /dev/null +++ b/dist-admin/assets/LoginView-cnE1DVdl.js @@ -0,0 +1 @@ +import{i as _,b as y,c as l,O as u,K as x,J as g,u as n,e as V,D as w,d as C,a as S,P as k,g as d,f as A,w as i,z as h,A as B,j as N}from"./index--aiJRDg4.js";import{_ as q,a as $,b as D}from"./AuthLayout.vue_vue_type_script_setup_true_lang-Bbht7KM7.js";import"./ThemeToggle.vue_vue_type_script_setup_true_lang-MhHgjOGX.js";const E={key:0,class:"mb-4 rounded-xl border border-red-500/30 bg-red-500/10 px-4 py-3 text-sm text-red-600 dark:text-red-400"},j=_({__name:"LoginView",setup(M){const m=x(),c=g(),s=l(()=>N()==="admin"||c.meta.adminAuth===!0),p=l(()=>s.value?"پنل مدیریت":"مون‌تایم"),f=l(()=>s.value?"ورود سوپر ادمین":"ورود با شماره موبایل"),t=i(""),r=i(!1),a=i("");async function v(){a.value="",r.value=!0;try{const e=await h(t.value.trim());await m.push({name:s.value?"admin-verify":"verify",query:{mobile:t.value.trim(),expires:String(e.expiresInSeconds),...e.otpCode?{devCode:e.otpCode}:{}}})}catch(e){a.value=e instanceof B?e.message:"خطا در ارسال درخواست. دوباره تلاش کنید."}finally{r.value=!1}}return(e,o)=>(n(),y(q,{title:p.value,subtitle:f.value},{default:u(()=>[a.value?(n(),V("p",E,w(a.value),1)):C("",!0),S("form",{class:"mt-auto space-y-4",onSubmit:k(v,["prevent"])},[d($,{id:"mobile",modelValue:t.value,"onUpdate:modelValue":o[0]||(o[0]=b=>t.value=b),label:"شماره موبایل",type:"tel",inputmode:"numeric",placeholder:"09121234567",autocomplete:"tel",ltr:"",required:""},null,8,["modelValue"]),d(D,{type:"submit",loading:r.value},{default:u(()=>[...o[1]||(o[1]=[A("دریافت کد تأیید",-1)])]),_:1},8,["loading"])],32)]),_:1},8,["title","subtitle"]))}});export{j as default}; diff --git a/dist-admin/assets/ThemeToggle.vue_vue_type_script_setup_true_lang-MhHgjOGX.js b/dist-admin/assets/ThemeToggle.vue_vue_type_script_setup_true_lang-MhHgjOGX.js new file mode 100644 index 0000000..8e59e61 --- /dev/null +++ b/dist-admin/assets/ThemeToggle.vue_vue_type_script_setup_true_lang-MhHgjOGX.js @@ -0,0 +1 @@ +import{_ as ne,e as L,y as oe,u as z,E as re,v as G,h as ae,w as K,r as Q,p as U,M as R,k as H,m as X,n as se,l as ie,s as ue,C as N,G as C,c as A,N as le,H as J,i as ce}from"./index--aiJRDg4.js";const de={},fe={class:"mx-auto flex min-h-dvh w-full max-w-app flex-col bg-surface shadow-xl shadow-black/5 dark:shadow-black/30"};function pe(e,t){return z(),L("div",fe,[oe(e.$slots,"default")])}const $e=ne(de,[["render",pe]]);function me(e){return ie()?(ue(e),!0):!1}const V=new WeakMap,he=(...e)=>{var t;const n=e[0],r=(t=H())==null?void 0:t.proxy;if(r==null&&!X())throw new Error("injectLocal must be called in setup");return r&&V.has(r)&&n in V.get(r)?V.get(r)[n]:se(...e)},ve=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ye=Object.prototype.toString,ge=e=>ye.call(e)==="[object Object]",we=()=>{};function be(e,t){function n(...r){return new Promise((a,c)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(a).catch(c)})}return n}const Y=e=>e();function Se(e=Y,t={}){const{initialState:n="active"}=t,r=Z(n==="active");function a(){r.value=!1}function c(){r.value=!0}const p=(...s)=>{r.value&&e(...s)};return{isActive:G(r),pause:a,resume:c,eventFilter:p}}function $(e){return e.endsWith("rem")?Number.parseFloat(e)*16:Number.parseFloat(e)}function ke(e){return H()}function B(e){return Array.isArray(e)?e:[e]}function Z(...e){if(e.length!==1)return re(...e);const t=e[0];return typeof t=="function"?G(ae(()=>({get:t,set:we}))):K(t)}function _e(e,t,n={}){const{eventFilter:r=Y,...a}=n;return R(e,be(r,t),a)}function Ce(e,t,n={}){const{eventFilter:r,initialState:a="active",...c}=n,{eventFilter:p,pause:s,resume:u,isActive:i}=Se(r,{initialState:a});return{stop:_e(e,t,{...c,eventFilter:p}),pause:s,resume:u,isActive:i}}function q(e,t=!0,n){ke()?Q(e,n):t?e():U(e)}function Ae(e,t,n){return R(e,t,{...n,immediate:!0})}const j=ve?window:void 0;function ee(e){var t;const n=C(e);return(t=n==null?void 0:n.$el)!=null?t:n}function P(...e){const t=[],n=()=>{t.forEach(s=>s()),t.length=0},r=(s,u,i,m)=>(s.addEventListener(u,i,m),()=>s.removeEventListener(u,i,m)),a=A(()=>{const s=B(C(e[0])).filter(u=>u!=null);return s.every(u=>typeof u!="string")?s:void 0}),c=Ae(()=>{var s,u;return[(u=(s=a.value)==null?void 0:s.map(i=>ee(i)))!=null?u:[j].filter(i=>i!=null),B(C(a.value?e[1]:e[0])),B(J(a.value?e[2]:e[1])),C(a.value?e[3]:e[2])]},([s,u,i,m])=>{if(n(),!(s!=null&&s.length)||!(u!=null&&u.length)||!(i!=null&&i.length))return;const v=ge(m)?{...m}:m;t.push(...s.flatMap(S=>u.flatMap(y=>i.map(d=>r(S,y,d,v)))))},{flush:"post"}),p=()=>{c(),n()};return me(n),p}function Me(){const e=N(!1),t=H();return t&&Q(()=>{e.value=!0},t),e}function Te(e){const t=Me();return A(()=>(t.value,!!e()))}const Ee=Symbol("vueuse-ssr-width");function xe(){const e=X()?he(Ee,null):null;return typeof e=="number"?e:void 0}function Oe(e,t={}){const{window:n=j,ssrWidth:r=xe()}=t,a=Te(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function"),c=N(typeof r=="number"),p=N(),s=N(!1),u=i=>{s.value=i.matches};return le(()=>{if(c.value){c.value=!a.value;const i=C(e).split(",");s.value=i.some(m=>{const v=m.includes("not all"),S=m.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),y=m.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);let d=!!(S||y);return S&&d&&(d=r>=$(S[1])),y&&d&&(d=r<=$(y[1])),v?!d:d});return}a.value&&(p.value=n.matchMedia(C(e)),s.value=p.value.matches)}),P(p,"change",u,{passive:!0}),A(()=>s.value)}const D=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},F="__vueuse_ssr_handlers__",We=Ne();function Ne(){return F in D||(D[F]=D[F]||{}),D[F]}function te(e,t){return We[e]||t}function je(e){return Oe("(prefers-color-scheme: dark)",e)}function De(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Fe={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},I="vueuse-storage";function Le(e,t,n,r={}){var a;const{flush:c="pre",deep:p=!0,listenToStorageChanges:s=!0,writeDefaults:u=!0,mergeDefaults:i=!1,shallow:m,window:v=j,eventFilter:S,onError:y=o=>{console.error(o)},initOnMounted:d}=r,g=(m?N:K)(typeof t=="function"?t():t),w=A(()=>C(e));if(!n)try{n=te("getDefaultStorage",()=>{var o;return(o=j)==null?void 0:o.localStorage})()}catch(o){y(o)}if(!n)return g;const b=C(t),x=De(b),M=(a=r.serializer)!=null?a:Fe[x],{pause:h,resume:_}=Ce(g,()=>E(g.value),{flush:c,deep:p,eventFilter:S});R(w,()=>k(),{flush:c}),v&&s&&q(()=>{n instanceof Storage?P(v,"storage",k,{passive:!0}):P(v,I,T),d&&k()}),d||k();function O(o,l){if(v){const f={key:w.value,oldValue:o,newValue:l,storageArea:n};v.dispatchEvent(n instanceof Storage?new StorageEvent("storage",f):new CustomEvent(I,{detail:f}))}}function E(o){try{const l=n.getItem(w.value);if(o==null)O(l,null),n.removeItem(w.value);else{const f=M.write(o);l!==f&&(n.setItem(w.value,f),O(l,f))}}catch(l){y(l)}}function W(o){const l=o?o.newValue:n.getItem(w.value);if(l==null)return u&&b!=null&&n.setItem(w.value,M.write(b)),b;if(!o&&i){const f=M.read(l);return typeof i=="function"?i(f,b):x==="object"&&!Array.isArray(f)?{...b,...f}:f}else return typeof l!="string"?l:M.read(l)}function k(o){if(!(o&&o.storageArea!==n)){if(o&&o.key==null){g.value=b;return}if(!(o&&o.key!==w.value)){h();try{(o==null?void 0:o.newValue)!==M.write(g.value)&&(g.value=W(o))}catch(l){y(l)}finally{o?U(_):_()}}}}function T(o){k(o.detail)}return g}const ze="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function Re(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:a=j,storage:c,storageKey:p="vueuse-color-scheme",listenToStorageChanges:s=!0,storageRef:u,emitAuto:i,disableTransition:m=!0}=e,v={auto:"",light:"light",dark:"dark",...e.modes||{}},S=je({window:a}),y=A(()=>S.value?"dark":"light"),d=u||(p==null?Z(r):Le(p,r,c,{window:a,listenToStorageChanges:s})),g=A(()=>d.value==="auto"?y.value:d.value),w=te("updateHTMLAttrs",(h,_,O)=>{const E=typeof h=="string"?a==null?void 0:a.document.querySelector(h):ee(h);if(!E)return;const W=new Set,k=new Set;let T=null;if(_==="class"){const l=O.split(/\s/g);Object.values(v).flatMap(f=>(f||"").split(/\s/g)).filter(Boolean).forEach(f=>{l.includes(f)?W.add(f):k.add(f)})}else T={key:_,value:O};if(W.size===0&&k.size===0&&T===null)return;let o;m&&(o=a.document.createElement("style"),o.appendChild(document.createTextNode(ze)),a.document.head.appendChild(o));for(const l of W)E.classList.add(l);for(const l of k)E.classList.remove(l);T&&E.setAttribute(T.key,T.value),m&&(a.getComputedStyle(o).opacity,document.head.removeChild(o))});function b(h){var _;w(t,n,(_=v[h])!=null?_:h)}function x(h){e.onChanged?e.onChanged(h,b):b(h)}R(g,x,{flush:"post",immediate:!0}),q(()=>x(g.value));const M=A({get(){return i?d.value:g.value},set(h){d.value=h}});return Object.assign(M,{store:d,system:y,state:g})}function Ve(){const e=Re({storageKey:"montime-theme",attribute:"class",modes:{light:"light",dark:"dark"}});function t(){e.value=e.value==="dark"?"light":"dark"}return{isDark:e,toggle:t}}const Be=["aria-label"],Je={key:0,"aria-hidden":"true"},Pe={key:1,"aria-hidden":"true"},Ie=ce({__name:"ThemeToggle",setup(e){const{isDark:t,toggle:n}=Ve(),r=A(()=>t.value==="dark");return(a,c)=>(z(),L("button",{type:"button",class:"inline-flex h-10 w-10 items-center justify-center rounded-xl border border-border bg-surface-2 text-muted transition hover:text-text","aria-label":r.value?"حالت روشن":"حالت تاریک",onClick:c[0]||(c[0]=(...p)=>J(n)&&J(n)(...p))},[r.value?(z(),L("span",Je,"☀️")):(z(),L("span",Pe,"🌙"))],8,Be))}});export{$e as A,Ie as _}; diff --git a/dist-admin/assets/VerifyOtpView-BchF2b9M.js b/dist-admin/assets/VerifyOtpView-BchF2b9M.js new file mode 100644 index 0000000..f50433b --- /dev/null +++ b/dist-admin/assets/VerifyOtpView-BchF2b9M.js @@ -0,0 +1 @@ +import{i as I,I as N,w as r,r as $,t as B,b as S,O as i,J as O,K as L,c as g,e as x,D as y,d as V,a as M,g as _,f as k,P as D,H as E,z as R,A as h,u as l,L as T,j as U}from"./index--aiJRDg4.js";import{_ as j,a as z,b as C}from"./AuthLayout.vue_vue_type_script_setup_true_lang-Bbht7KM7.js";import"./ThemeToggle.vue_vue_type_script_setup_true_lang-MhHgjOGX.js";const H={key:0,class:"mb-4 rounded-xl border border-brand-500/40 bg-brand-500/10 px-4 py-3 text-sm text-brand-700 dark:text-brand-500"},J={key:1,class:"mb-4 rounded-xl border border-red-500/30 bg-red-500/10 px-4 py-3 text-sm text-red-600 dark:text-red-400"},K={key:2,class:"mt-4 text-center text-sm text-muted"},W=I({__name:"VerifyOtpView",setup(P){const s=O(),o=L(),d=N(),m=g(()=>U()==="admin"||s.meta.adminAuth===!0),u=g(()=>String(s.query.mobile??"")),c=g(()=>s.query.devCode),p=r(c.value??""),v=r(!1),f=r(!1),a=r(""),n=r(Number(s.query.expires)||120);let b=null;$(()=>{if(!u.value){o.replace({name:m.value?"admin-login":"login"});return}b=setInterval(()=>{n.value>0&&(n.value-=1)},1e3)}),B(()=>{b&&clearInterval(b)});async function q(){a.value="",v.value=!0;try{const e=await T(u.value,p.value.trim());if(d.setSession(e.accessToken,e.user),m.value){if(!d.isAdmin){d.logout(),a.value="دسترسی ادمین ندارید.";return}await o.replace({name:"admin-home"});return}await o.replace({name:"app-home"})}catch(e){a.value=e instanceof h?e.message:"کد نامعتبر است. دوباره تلاش کنید."}finally{v.value=!1}}async function A(){a.value="",f.value=!0;try{const e=await R(u.value);n.value=e.expiresInSeconds,e.otpCode&&await o.replace({query:{...s.query,devCode:e.otpCode,expires:String(e.expiresInSeconds)}})}catch(e){a.value=e instanceof h?e.message:"ارسال مجدد ناموفق بود."}finally{f.value=!1}}return(e,t)=>(l(),S(j,{title:"کد تأیید",subtitle:`کد ارسال‌شده به ${u.value}`},{default:i(()=>[c.value?(l(),x("p",H," حالت توسعه — کد: "+y(c.value),1)):V("",!0),a.value?(l(),x("p",J,y(a.value),1)):V("",!0),M("form",{class:"space-y-4",onSubmit:D(q,["prevent"])},[_(z,{id:"code",modelValue:p.value,"onUpdate:modelValue":t[0]||(t[0]=w=>p.value=w),label:"کد ۶ رقمی",type:"text",inputmode:"numeric",maxlength:"8",placeholder:"123456",autocomplete:"one-time-code",ltr:"",required:""},null,8,["modelValue"]),_(C,{type:"submit",loading:v.value},{default:i(()=>[...t[2]||(t[2]=[k("ورود",-1)])]),_:1},8,["loading"])],32),n.value>0?(l(),x("p",K," ارسال مجدد تا "+y(n.value)+" ثانیه ",1)):(l(),S(C,{key:3,variant:"ghost",class:"mt-2",loading:f.value,onClick:A},{default:i(()=>[...t[3]||(t[3]=[k(" ارسال مجدد کد ",-1)])]),_:1},8,["loading"])),_(C,{variant:"ghost",class:"mt-2",onClick:t[1]||(t[1]=w=>E(o).push({name:m.value?"admin-login":"login"}))},{default:i(()=>[...t[4]||(t[4]=[k(" تغییر شماره موبایل ",-1)])]),_:1})]),_:1},8,["subtitle"]))}});export{W as default}; diff --git a/dist-admin/assets/WebAppLayout.vue_vue_type_script_setup_true_lang-D1g6DvZW.js b/dist-admin/assets/WebAppLayout.vue_vue_type_script_setup_true_lang-D1g6DvZW.js new file mode 100644 index 0000000..d319114 --- /dev/null +++ b/dist-admin/assets/WebAppLayout.vue_vue_type_script_setup_true_lang-D1g6DvZW.js @@ -0,0 +1 @@ +import{i as f,I as g,b as p,O as u,a as e,H as n,e as i,D as r,d as h,g as k,y,q as d,x as v,F as B,c as C,K as w,J as L,B as A,u as a}from"./index--aiJRDg4.js";import{A as R,_ as S}from"./ThemeToggle.vue_vue_type_script_setup_true_lang-MhHgjOGX.js";const N={class:"sticky top-0 z-10 flex items-center justify-between border-b border-border bg-surface/95 px-4 py-3 backdrop-blur"},V={key:0,class:"text-xs text-muted"},z={class:"flex items-center gap-2"},D={class:"flex-1 px-4 py-4"},F={class:"sticky bottom-0 border-t border-border bg-surface/95 px-2 py-2 backdrop-blur"},I={class:"text-lg","aria-hidden":"true"},q=f({__name:"WebAppLayout",setup(O){const o=g(),b=L(),m=w(),l=C(()=>{const s=[{to:"/app",name:"app-home",label:"خانه",icon:"🏠"},{to:"/app/bookings",name:"app-bookings",label:"رزروها",icon:"📅"},{to:"/app/profile",name:"app-profile",label:"پروفایل",icon:"👤"}];return o.isBusinessOwner&&s.splice(2,0,{to:"/app/owner",name:"app-owner",label:"کسب‌وکار",icon:"🏪"}),s});function x(){o.logout(),m.push({name:"login"})}return(s,c)=>{const _=A("RouterLink");return a(),p(R,null,{default:u(()=>[e("header",N,[e("div",null,[c[0]||(c[0]=e("p",{class:"font-bold text-text"},"مون‌تایم",-1)),n(o).user?(a(),i("p",V,r(n(o).user.mobile),1)):h("",!0)]),e("div",z,[k(S),e("button",{type:"button",class:"rounded-xl px-3 py-2 text-sm text-muted hover:bg-surface-3 hover:text-text",onClick:x}," خروج ")])]),e("main",D,[y(s.$slots,"default")]),e("nav",F,[e("div",{class:d(["grid gap-1",l.value.length===4?"grid-cols-4":"grid-cols-3"])},[(a(!0),i(B,null,v(l.value,t=>(a(),p(_,{key:t.to,to:t.to,class:d(["flex flex-col items-center rounded-xl px-2 py-2 text-xs transition",n(b).name===t.name?"bg-brand-500/15 text-brand-700 dark:text-brand-500":"text-muted hover:bg-surface-3 hover:text-text"])},{default:u(()=>[e("span",I,r(t.icon),1),e("span",null,r(t.label),1)]),_:2},1032,["to","class"]))),128))],2)])]),_:3})}}});export{q as _}; diff --git a/dist-admin/assets/index--aiJRDg4.js b/dist-admin/assets/index--aiJRDg4.js new file mode 100644 index 0000000..c36a1ed --- /dev/null +++ b/dist-admin/assets/index--aiJRDg4.js @@ -0,0 +1,30 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-cnE1DVdl.js","assets/AuthLayout.vue_vue_type_script_setup_true_lang-Bbht7KM7.js","assets/ThemeToggle.vue_vue_type_script_setup_true_lang-MhHgjOGX.js","assets/VerifyOtpView-BchF2b9M.js","assets/AppHomeView-DRRZFXrJ.js","assets/WebAppLayout.vue_vue_type_script_setup_true_lang-D1g6DvZW.js","assets/AppBookingsView-c-Kjg5W4.js","assets/AppProfileView-BR-lRiFJ.js","assets/AppOwnerView-B127qc4H.js","assets/AdminHomeView-_UXcBUiF.js","assets/AdminLayout.vue_vue_type_script_setup_true_lang-X12EOjkr.js","assets/AdminBusinessesView-BaBO_hK6.js","assets/AdminUsersView-BvzKFP7Z.js"])))=>i.map(i=>d[i]); +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function n(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(r){if(r.ep)return;r.ep=!0;const i=n(r);fetch(r.href,i)}})();/** +* @vue/shared v3.5.34 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Rs(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ne={},Tt=[],Je=()=>{},Gr=()=>!1,Cn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Pn=e=>e.startsWith("onUpdate:"),de=Object.assign,Ss=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ao=Object.prototype.hasOwnProperty,Y=(e,t)=>Ao.call(e,t),V=Array.isArray,Nt=e=>un(e)==="[object Map]",Wr=e=>un(e)==="[object Set]",zs=e=>un(e)==="[object Date]",B=e=>typeof e=="function",le=e=>typeof e=="string",Te=e=>typeof e=="symbol",Q=e=>e!==null&&typeof e=="object",qr=e=>(Q(e)||B(e))&&B(e.then)&&B(e.catch),$r=Object.prototype.toString,un=e=>$r.call(e),Ro=e=>un(e).slice(8,-1),Jr=e=>un(e)==="[object Object]",In=e=>le(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Wt=Rs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Tn=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},So=/-\w/g,Ae=Tn(e=>e.replace(So,t=>t.slice(1).toUpperCase())),xo=/\B([A-Z])/g,St=Tn(e=>e.replace(xo,"-$1").toLowerCase()),Nn=Tn(e=>e.charAt(0).toUpperCase()+e.slice(1)),Gn=Tn(e=>e?`on${Nn(e)}`:""),$e=(e,t)=>!Object.is(e,t),Wn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},wo=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Ys;const Dn=()=>Ys||(Ys=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function xs(e){if(V(e)){const t={};for(let n=0;n{if(n){const s=n.split(Co);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function ws(e){let t="";if(le(e))t=e;else if(V(e))for(let n=0;n!!(e&&e.__v_isRef===!0),Mo=e=>le(e)?e:e==null?"":V(e)||Q(e)&&(e.toString===$r||!B(e.toString))?Qr(e)?Mo(e.value):JSON.stringify(e,Xr,2):String(e),Xr=(e,t)=>Qr(t)?Xr(e,t.value):Nt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[qn(s,i)+" =>"]=r,n),{})}:Wr(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>qn(n))}:Te(t)?qn(t):Q(t)&&!V(t)&&!Jr(t)?String(t):t,qn=(e,t="")=>{var n;return Te(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.34 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let fe;class Zr{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&fe&&(fe.active?(this.parent=fe,this.index=(fe.scopes||(fe.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!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){if(fe===this)fe=this.prevScope;else{let t=fe;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.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($t){let t=$t;for($t=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;qt;){let t=qt;for(qt=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 ii(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function oi(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Is(s),Fo(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function ls(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(li(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function li(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===en)||(e.globalVersion=en,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ls(e))))return;e.flags|=2;const t=e.dep,n=te,s=Fe;te=e,Fe=!0;try{ii(e);const r=e.fn(e._value);(t.version===0||$e(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{te=n,Fe=s,oi(e),e.flags&=-3}}function Is(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 i=n.computed.deps;i;i=i.nextDep)Is(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Fo(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Fe=!0;const ci=[];function st(){ci.push(Fe),Fe=!1}function rt(){const e=ci.pop();Fe=e===void 0?!0:e}function Qs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=te;te=void 0;try{t()}finally{te=n}}}let en=0;class jo{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 Mn{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(!te||!Fe||te===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==te)n=this.activeLink=new jo(te,this),te.deps?(n.prevDep=te.depsTail,te.depsTail.nextDep=n,te.depsTail=n):te.deps=te.depsTail=n,ui(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=te.depsTail,n.nextDep=void 0,te.depsTail.nextDep=n,te.depsTail=n,te.deps===n&&(te.deps=s)}return n}trigger(t){this.version++,en++,this.notify(t)}notify(t){Cs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Ps()}}}function ui(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)ui(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const vn=new WeakMap,At=Symbol(""),cs=Symbol(""),tn=Symbol("");function pe(e,t,n){if(Fe&&te){let s=vn.get(e);s||vn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Mn),r.map=s,r.key=n),r.track()}}function tt(e,t,n,s,r,i){const o=vn.get(e);if(!o){en++;return}const l=c=>{c&&c.trigger()};if(Cs(),t==="clear")o.forEach(l);else{const c=V(e),a=c&&In(n);if(c&&n==="length"){const f=Number(s);o.forEach((d,g)=>{(g==="length"||g===tn||!Te(g)&&g>=f)&&l(d)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),a&&l(o.get(tn)),t){case"add":c?a&&l(o.get("length")):(l(o.get(At)),Nt(e)&&l(o.get(cs)));break;case"delete":c||(l(o.get(At)),Nt(e)&&l(o.get(cs)));break;case"set":Nt(e)&&l(o.get(At));break}}Ps()}function Vo(e,t){const n=vn.get(e);return n&&n.get(t)}function Ot(e){const t=$(e);return t===e?t:(pe(t,"iterate",tn),Ie(e)?t:t.map(je))}function Ln(e){return pe(e=$(e),"iterate",tn),e}function We(e,t){return it(e)?Lt(nt(e)?je(t):t):je(t)}const Ho={__proto__:null,[Symbol.iterator](){return Jn(this,Symbol.iterator,e=>We(this,e))},concat(...e){return Ot(this).concat(...e.map(t=>V(t)?Ot(t):t))},entries(){return Jn(this,"entries",e=>(e[1]=We(this,e[1]),e))},every(e,t){return Qe(this,"every",e,t,void 0,arguments)},filter(e,t){return Qe(this,"filter",e,t,n=>n.map(s=>We(this,s)),arguments)},find(e,t){return Qe(this,"find",e,t,n=>We(this,n),arguments)},findIndex(e,t){return Qe(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Qe(this,"findLast",e,t,n=>We(this,n),arguments)},findLastIndex(e,t){return Qe(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Qe(this,"forEach",e,t,void 0,arguments)},includes(...e){return zn(this,"includes",e)},indexOf(...e){return zn(this,"indexOf",e)},join(e){return Ot(this).join(e)},lastIndexOf(...e){return zn(this,"lastIndexOf",e)},map(e,t){return Qe(this,"map",e,t,void 0,arguments)},pop(){return Bt(this,"pop")},push(...e){return Bt(this,"push",e)},reduce(e,...t){return Xs(this,"reduce",e,t)},reduceRight(e,...t){return Xs(this,"reduceRight",e,t)},shift(){return Bt(this,"shift")},some(e,t){return Qe(this,"some",e,t,void 0,arguments)},splice(...e){return Bt(this,"splice",e)},toReversed(){return Ot(this).toReversed()},toSorted(e){return Ot(this).toSorted(e)},toSpliced(...e){return Ot(this).toSpliced(...e)},unshift(...e){return Bt(this,"unshift",e)},values(){return Jn(this,"values",e=>We(this,e))}};function Jn(e,t,n){const s=Ln(e),r=s[t]();return s!==e&&!Ie(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.done||(i.value=n(i.value)),i}),r}const Bo=Array.prototype;function Qe(e,t,n,s,r,i){const o=Ln(e),l=o!==e&&!Ie(e),c=o[t];if(c!==Bo[t]){const d=c.apply(e,i);return l?je(d):d}let a=n;o!==e&&(l?a=function(d,g){return n.call(this,We(e,d),g,e)}:n.length>2&&(a=function(d,g){return n.call(this,d,g,e)}));const f=c.call(o,a,s);return l&&r?r(f):f}function Xs(e,t,n,s){const r=Ln(e),i=r!==e&&!Ie(e);let o=n,l=!1;r!==e&&(i?(l=s.length===0,o=function(a,f,d){return l&&(l=!1,a=We(e,a)),n.call(this,a,We(e,f),d,e)}):n.length>3&&(o=function(a,f,d){return n.call(this,a,f,d,e)}));const c=r[t](o,...s);return l?We(e,c):c}function zn(e,t,n){const s=$(e);pe(s,"iterate",tn);const r=s[t](...n);return(r===-1||r===!1)&&Fn(n[0])?(n[0]=$(n[0]),s[t](...n)):r}function Bt(e,t,n=[]){st(),Cs();const s=$(e)[t].apply(e,n);return Ps(),rt(),s}const Uo=Rs("__proto__,__v_isRef,__isVue"),fi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Te));function Ko(e){Te(e)||(e=String(e));const t=$(this);return pe(t,"has",e),t.hasOwnProperty(e)}class ai{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,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Xo:gi:i?pi:di).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=V(t);if(!r){let c;if(o&&(c=Ho[n]))return c;if(n==="hasOwnProperty")return Ko}const l=Reflect.get(t,n,ie(t)?t:s);if((Te(n)?fi.has(n):Uo(n))||(r||pe(t,"get",n),i))return l;if(ie(l)){const c=o&&In(n)?l:l.value;return r&&Q(c)?fs(c):c}return Q(l)?r?fs(l):fn(l):l}}class hi extends ai{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];const o=V(t)&&In(n);if(!this._isShallow){const a=it(i);if(!Ie(s)&&!it(s)&&(i=$(i),s=$(s)),!o&&ie(i)&&!ie(s))return a||(i.value=s),!0}const l=o?Number(n)e,dn=e=>Reflect.getPrototypeOf(e);function $o(e,t,n){return function(...s){const r=this.__v_raw,i=$(r),o=Nt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,a=r[e](...s),f=n?us:t?Lt:je;return!t&&pe(i,"iterate",c?cs:At),de(Object.create(a),{next(){const{value:d,done:g}=a.next();return g?{value:d,done:g}:{value:l?[f(d[0]),f(d[1])]:f(d),done:g}}})}}function pn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Jo(e,t){const n={get(r){const i=this.__v_raw,o=$(i),l=$(r);e||($e(r,l)&&pe(o,"get",r),pe(o,"get",l));const{has:c}=dn(o),a=t?us:e?Lt:je;if(c.call(o,r))return a(i.get(r));if(c.call(o,l))return a(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&pe($(r),"iterate",At),r.size},has(r){const i=this.__v_raw,o=$(i),l=$(r);return e||($e(r,l)&&pe(o,"has",r),pe(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=$(l),a=t?us:e?Lt:je;return!e&&pe(c,"iterate",At),l.forEach((f,d)=>r.call(i,a(f),a(d),o))}};return de(n,e?{add:pn("add"),set:pn("set"),delete:pn("delete"),clear:pn("clear")}:{add(r){const i=$(this),o=dn(i),l=$(r),c=!t&&!Ie(r)&&!it(r)?l:r;return o.has.call(i,c)||$e(r,c)&&o.has.call(i,r)||$e(l,c)&&o.has.call(i,l)||(i.add(c),tt(i,"add",c,c)),this},set(r,i){!t&&!Ie(i)&&!it(i)&&(i=$(i));const o=$(this),{has:l,get:c}=dn(o);let a=l.call(o,r);a||(r=$(r),a=l.call(o,r));const f=c.call(o,r);return o.set(r,i),a?$e(i,f)&&tt(o,"set",r,i):tt(o,"add",r,i),this},delete(r){const i=$(this),{has:o,get:l}=dn(i);let c=o.call(i,r);c||(r=$(r),c=o.call(i,r)),l&&l.call(i,r);const a=i.delete(r);return c&&tt(i,"delete",r,void 0),a},clear(){const r=$(this),i=r.size!==0,o=r.clear();return i&&tt(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=$o(r,e,t)}),n}function Ts(e,t){const n=Jo(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(Y(n,r)&&r in s?n:s,r,i)}const zo={get:Ts(!1,!1)},Yo={get:Ts(!1,!0)},Qo={get:Ts(!0,!1)};const di=new WeakMap,pi=new WeakMap,gi=new WeakMap,Xo=new WeakMap;function Zo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function el(e){return e.__v_skip||!Object.isExtensible(e)?0:Zo(Ro(e))}function fn(e){return it(e)?e:Ns(e,!1,Go,zo,di)}function mi(e){return Ns(e,!1,qo,Yo,pi)}function fs(e){return Ns(e,!0,Wo,Qo,gi)}function Ns(e,t,n,s,r){if(!Q(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=el(e);if(i===0)return e;const o=r.get(e);if(o)return o;const l=new Proxy(e,i===2?s:n);return r.set(e,l),l}function nt(e){return it(e)?nt(e.__v_raw):!!(e&&e.__v_isReactive)}function it(e){return!!(e&&e.__v_isReadonly)}function Ie(e){return!!(e&&e.__v_isShallow)}function Fn(e){return e?!!e.__v_raw:!1}function $(e){const t=e&&e.__v_raw;return t?$(t):e}function Ds(e){return!Y(e,"__v_skip")&&Object.isExtensible(e)&&zr(e,"__v_skip",!0),e}const je=e=>Q(e)?fn(e):e,Lt=e=>Q(e)?fs(e):e;function ie(e){return e?e.__v_isRef===!0:!1}function nn(e){return _i(e,!1)}function tl(e){return _i(e,!0)}function _i(e,t){return ie(e)?e:new nl(e,t)}class nl{constructor(t,n){this.dep=new Mn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:$(t),this._value=n?t:je(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Ie(t)||it(t);t=s?t:$(t),$e(t,n)&&(this._rawValue=t,this._value=s?t:je(t),this.dep.trigger())}}function gt(e){return ie(e)?e.value:e}function Pf(e){return B(e)?e():gt(e)}const sl={get:(e,t,n)=>t==="__v_raw"?e:gt(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 vi(e){return nt(e)?e:new Proxy(e,sl)}class rl{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Mn,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function If(e){return new rl(e)}function il(e){const t=V(e)?new Array(e.length):{};for(const n in e)t[n]=yi(e,n);return t}class ol{constructor(t,n,s){this._object=t,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._key=Te(n)?n:String(n),this._raw=$(t);let r=!0,i=t;if(!V(t)||Te(this._key)||!In(this._key))do r=!Fn(i)||Ie(i);while(r&&(i=i.__v_raw));this._shallow=r}get value(){let t=this._object[this._key];return this._shallow&&(t=gt(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 Vo(this._raw,this._key)}}class ll{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Tf(e,t,n){return ie(e)?e:B(e)?new ll(e):Q(e)&&arguments.length>1?yi(e,t,n):nn(e)}function yi(e,t,n){return new ol(e,t,n)}class cl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Mn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=en-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&te!==this)return ri(this,!0),!0}get value(){const t=this.dep.track();return li(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function ul(e,t,n=!1){let s,r;return B(e)?s=e:(s=e.get,r=e.set),new cl(s,r,n)}const gn={},yn=new WeakMap;let bt;function fl(e,t=!1,n=bt){if(n){let s=yn.get(n);s||yn.set(n,s=[]),s.push(e)}}function al(e,t,n=ne){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,a=T=>r?T:Ie(T)||r===!1||r===0?pt(T,1):pt(T);let f,d,g,m,C=!1,S=!1;if(ie(e)?(d=()=>e.value,C=Ie(e)):nt(e)?(d=()=>a(e),C=!0):V(e)?(S=!0,C=e.some(T=>nt(T)||Ie(T)),d=()=>e.map(T=>{if(ie(T))return T.value;if(nt(T))return a(T);if(B(T))return c?c(T,2):T()})):B(e)?t?d=c?()=>c(e,2):e:d=()=>{if(g){st();try{g()}finally{rt()}}const T=bt;bt=f;try{return c?c(e,3,[m]):e(m)}finally{bt=T}}:d=Je,t&&r){const T=d,K=r===!0?1/0:r;d=()=>pt(T(),K)}const j=ti(),F=()=>{f.stop(),j&&j.active&&Ss(j.effects,f)};if(i&&t){const T=t;t=(...K)=>{T(...K),F()}}let P=S?new Array(e.length).fill(gn):gn;const N=T=>{if(!(!(f.flags&1)||!f.dirty&&!T))if(t){const K=f.run();if(r||C||(S?K.some((ae,X)=>$e(ae,P[X])):$e(K,P))){g&&g();const ae=bt;bt=f;try{const X=[K,P===gn?void 0:S&&P[0]===gn?[]:P,m];P=K,c?c(t,3,X):t(...X)}finally{bt=ae}}}else f.run()};return l&&l(N),f=new ni(d),f.scheduler=o?()=>o(N,!1):N,m=T=>fl(T,!1,f),g=f.onStop=()=>{const T=yn.get(f);if(T){if(c)c(T,4);else for(const K of T)K();yn.delete(f)}},t?s?N(!0):P=f.run():o?o(N.bind(null,!0),!0):f.run(),F.pause=f.pause.bind(f),F.resume=f.resume.bind(f),F.stop=F,F}function pt(e,t=1/0,n){if(t<=0||!Q(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,ie(e))pt(e.value,t,n);else if(V(e))for(let s=0;s{pt(s,t,n)});else if(Jr(e)){for(const s in e)pt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&pt(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.34 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function an(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=an(e,t,n,s);return r&&qr(r)&&r.catch(i=>{jn(i,t,n)}),r}if(V(e)){const r=[];for(let i=0;i>>1,r=be[s],i=sn(r);i=sn(n)?be.push(e):be.splice(dl(t),0,e),e.flags|=1,Ei()}}function Ei(){bn||(bn=bi.then(Ri))}function pl(e){V(e)?Dt.push(...e):ht&&e.id===-1?ht.splice(Pt+1,0,e):e.flags&1||(Dt.push(e),e.flags|=1),Ei()}function Zs(e,t,n=Ge+1){for(;nsn(n)-sn(s));if(Dt.length=0,ht){ht.push(...t);return}for(ht=t,Pt=0;Pte.id==null?e.flags&2?-1:1/0:e.id;function Ri(e){try{for(Ge=0;Ge{s._d&&xn(-1);const i=En(t);let o;try{o=e(...r)}finally{En(i),s._d&&xn(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function vt(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;o1)return n&&B(t)?t.call(s&&s.proxy):t}}function ml(){return!!(Xi()||Rt)}const _l=Symbol.for("v-scx"),vl=()=>Me(_l);function Nf(e,t){return Fs(e,null,t)}function Jt(e,t,n){return Fs(e,t,n)}function Fs(e,t,n=ne){const{immediate:s,deep:r,flush:i,once:o}=n,l=de({},n),c=t&&s||!t&&i!=="post";let a;if(ln){if(i==="sync"){const m=vl();a=m.__watcherHandles||(m.__watcherHandles=[])}else if(!c){const m=()=>{};return m.stop=Je,m.resume=Je,m.pause=Je,m}}const f=ge;l.call=(m,C,S)=>ze(m,f,C,S);let d=!1;i==="post"?l.scheduler=m=>{xe(m,f&&f.suspense)}:i!=="sync"&&(d=!0,l.scheduler=(m,C)=>{C?m():Ls(m)}),l.augmentJob=m=>{t&&(m.flags|=4),d&&(m.flags|=2,f&&(m.id=f.uid,m.i=f))};const g=al(e,t,l);return ln&&(a?a.push(g):c&&g()),g}function yl(e,t,n){const s=this.proxy,r=le(e)?e.includes(".")?xi(s,e):()=>s[e]:e.bind(s,s);let i;B(t)?i=t:(i=t.handler,n=t);const o=hn(this),l=Fs(r,i.bind(s),n);return o(),l}function xi(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;re.__isTeleport,Al=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 wi(e,t){return B(e)?de({name:e.name},t,{setup:e}):e}function Oi(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function er(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const An=new WeakMap;function zt(e,t,n,s,r=!1){if(V(e)){e.forEach((S,j)=>zt(S,t&&(V(t)?t[j]:t),n,s,r));return}if(Mt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&zt(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?Us(s.component):s.el,o=r?null:i,{i:l,r:c}=e,a=t&&t.r,f=l.refs===ne?l.refs={}:l.refs,d=l.setupState,g=$(d),m=d===ne?Gr:S=>er(f,S)?!1:Y(g,S),C=(S,j)=>!(j&&er(f,j));if(a!=null&&a!==c){if(tr(t),le(a))f[a]=null,m(a)&&(d[a]=null);else if(ie(a)){const S=t;C(a,S.k)&&(a.value=null),S.k&&(f[S.k]=null)}}if(B(c))an(c,l,12,[o,f]);else{const S=le(c),j=ie(c);if(S||j){const F=()=>{if(e.f){const P=S?m(c)?d[c]:f[c]:C()||!e.k?c.value:f[e.k];if(r)V(P)&&Ss(P,i);else if(V(P))P.includes(i)||P.push(i);else if(S)f[c]=[i],m(c)&&(d[c]=f[c]);else{const N=[i];C(c,e.k)&&(c.value=N),e.k&&(f[e.k]=N)}}else S?(f[c]=o,m(c)&&(d[c]=o)):j&&(C(c,e.k)&&(c.value=o),e.k&&(f[e.k]=o))};if(o){const P=()=>{F(),An.delete(e)};P.id=-1,An.set(e,P),xe(P,n)}else tr(e),F()}}}function tr(e){const t=An.get(e);t&&(t.flags|=8,An.delete(e))}Dn().requestIdleCallback;Dn().cancelIdleCallback;const Mt=e=>!!e.type.__asyncLoader,Ci=e=>e.type.__isKeepAlive;function Rl(e,t){Pi(e,"a",t)}function Sl(e,t){Pi(e,"da",t)}function Pi(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(Vn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Ci(r.parent.vnode)&&xl(s,t,n,r),r=r.parent}}function xl(e,t,n,s){const r=Vn(t,e,s,!0);Ii(()=>{Ss(s[t],r)},n)}function Vn(e,t,n=ge,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{st();const l=hn(n),c=ze(t,n,e,o);return l(),rt(),c});return s?r.unshift(i):r.push(i),i}}const lt=e=>(t,n=ge)=>{(!ln||e==="sp")&&Vn(e,(...s)=>t(...s),n)},wl=lt("bm"),Ol=lt("m"),Cl=lt("bu"),Pl=lt("u"),Il=lt("bum"),Ii=lt("um"),Tl=lt("sp"),Nl=lt("rtg"),Dl=lt("rtc");function Ml(e,t=ge){Vn("ec",e,t)}const Ll="components";function Fl(e,t){return Vl(Ll,e,!0,t)||e}const jl=Symbol.for("v-ndc");function Vl(e,t,n=!0,s=!1){const r=Ee||ge;if(r){const i=r.type;{const l=Rc(i,!1);if(l&&(l===t||l===Ae(t)||l===Nn(Ae(t))))return i}const o=nr(r[e]||i[e],t)||nr(r.appContext[e],t);return!o&&s?i:o}}function nr(e,t){return e&&(e[t]||e[Ae(t)]||e[Nn(Ae(t))])}function Df(e,t,n,s){let r;const i=n,o=V(e);if(o||le(e)){const l=o&&nt(e);let c=!1,a=!1;l&&(c=!Ie(e),a=it(e),e=Ln(e)),r=new Array(e.length);for(let f=0,d=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,a=l.length;c0;return Sn(),wn(De,null,[we("slot",n,s)],a?-2:64)}let i=e[t];i&&i._c&&(i._d=!1),Sn();const o=i&&Ti(i(n)),l=n.key||o&&o.key,c=wn(De,{key:(l&&!Te(l)?l:`_${t}`)+(!o&&s?"_fb":"")},o||[],o&&e._===1?64:-2);return c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),i&&i._c&&(i._d=!0),c}function Ti(e){return e.some(t=>on(t)?!(t.type===ot||t.type===De&&!Ti(t.children)):!0)?e:null}const as=e=>e?Zi(e)?Us(e):as(e.parent):null,Yt=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=>as(e.parent),$root:e=>as(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Di(e),$forceUpdate:e=>e.f||(e.f=()=>{Ls(e.update)}),$nextTick:e=>e.n||(e.n=Ms.bind(e.proxy)),$watch:e=>yl.bind(e)}),Yn=(e,t)=>e!==ne&&!e.__isScriptSetup&&Y(e,t),Hl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;if(t[0]!=="$"){const g=o[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 i[t]}else{if(Yn(s,t))return o[t]=1,s[t];if(r!==ne&&Y(r,t))return o[t]=2,r[t];if(Y(i,t))return o[t]=3,i[t];if(n!==ne&&Y(n,t))return o[t]=4,n[t];hs&&(o[t]=0)}}const a=Yt[t];let f,d;if(a)return t==="$attrs"&&pe(e.attrs,"get",""),a(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==ne&&Y(n,t))return o[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:i}=e;return Yn(r,t)?(r[t]=n,!0):s!==ne&&Y(s,t)?(s[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,props:i,type:o}},l){let c;return!!(n[l]||e!==ne&&l[0]!=="$"&&Y(e,l)||Yn(t,l)||Y(i,l)||Y(s,l)||Y(Yt,l)||Y(r.config.globalProperties,l)||(c=o.__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 sr(e){return V(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let hs=!0;function Bl(e){const t=Di(e),n=e.proxy,s=e.ctx;hs=!1,t.beforeCreate&&rr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:a,created:f,beforeMount:d,mounted:g,beforeUpdate:m,updated:C,activated:S,deactivated:j,beforeDestroy:F,beforeUnmount:P,destroyed:N,unmounted:T,render:K,renderTracked:ae,renderTriggered:X,errorCaptured:k,serverPrefetch:G,expose:re,inheritAttrs:_e,components:Oe,directives:Re,filters:mt}=t;if(a&&Ul(a,s,null),o)for(const U in o){const J=o[U];B(J)&&(s[U]=J.bind(n))}if(r){const U=r.call(n,n);Q(U)&&(e.data=fn(U))}if(hs=!0,i)for(const U in i){const J=i[U],Ye=B(J)?J.bind(n,n):B(J.get)?J.get.bind(n,n):Je,ut=!B(J)&&B(J.set)?J.set.bind(n):Je,He=me({get:Ye,set:ut});Object.defineProperty(s,U,{enumerable:!0,configurable:!0,get:()=>He.value,set:Se=>He.value=Se})}if(l)for(const U in l)Ni(l[U],s,n,U);if(c){const U=B(c)?c.call(n):c;Reflect.ownKeys(U).forEach(J=>{mn(J,U[J])})}f&&rr(f,e,"c");function se(U,J){V(J)?J.forEach(Ye=>U(Ye.bind(n))):J&&U(J.bind(n))}if(se(wl,d),se(Ol,g),se(Cl,m),se(Pl,C),se(Rl,S),se(Sl,j),se(Ml,k),se(Dl,ae),se(Nl,X),se(Il,P),se(Ii,T),se(Tl,G),V(re))if(re.length){const U=e.exposed||(e.exposed={});re.forEach(J=>{Object.defineProperty(U,J,{get:()=>n[J],set:Ye=>n[J]=Ye,enumerable:!0})})}else e.exposed||(e.exposed={});K&&e.render===Je&&(e.render=K),_e!=null&&(e.inheritAttrs=_e),Oe&&(e.components=Oe),Re&&(e.directives=Re),G&&Oi(e)}function Ul(e,t,n=Je){V(e)&&(e=ds(e));for(const s in e){const r=e[s];let i;Q(r)?"default"in r?i=Me(r.from||s,r.default,!0):i=Me(r.from||s):i=Me(r),ie(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function rr(e,t,n){ze(V(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ni(e,t,n,s){let r=s.includes(".")?xi(n,s):()=>n[s];if(le(e)){const i=t[e];B(i)&&Jt(r,i)}else if(B(e))Jt(r,e.bind(n));else if(Q(e))if(V(e))e.forEach(i=>Ni(i,t,n,s));else{const i=B(e.handler)?e.handler.bind(n):t[e.handler];B(i)&&Jt(r,i,e)}}function Di(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>Rn(c,a,o,!0)),Rn(c,t,o)),Q(t)&&i.set(t,c),c}function Rn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&Rn(e,i,n,!0),r&&r.forEach(o=>Rn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Kl[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Kl={data:ir,props:or,emits:or,methods:kt,computed:kt,beforeCreate:ve,created:ve,beforeMount:ve,mounted:ve,beforeUpdate:ve,updated:ve,beforeDestroy:ve,beforeUnmount:ve,destroyed:ve,unmounted:ve,activated:ve,deactivated:ve,errorCaptured:ve,serverPrefetch:ve,components:kt,directives:kt,watch:Gl,provide:ir,inject:kl};function ir(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 kl(e,t){return kt(ds(e),ds(t))}function ds(e){if(V(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ae(t)}Modifiers`]||e[`${St(t)}Modifiers`];function Jl(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ne;let r=n;const i=t.startsWith("update:"),o=i&&$l(s,t.slice(7));o&&(o.trim&&(r=n.map(f=>le(f)?f.trim():f)),o.number&&(r=n.map(wo)));let l,c=s[l=Gn(t)]||s[l=Gn(Ae(t))];!c&&i&&(c=s[l=Gn(St(t))]),c&&ze(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,ze(a,e,6,r)}}const zl=new WeakMap;function Li(e,t,n=!1){const s=n?zl:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!B(e)){const c=a=>{const f=Li(a,t,!0);f&&(l=!0,de(o,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(Q(e)&&s.set(e,null),null):(V(i)?i.forEach(c=>o[c]=null):de(o,i),Q(e)&&s.set(e,o),o)}function Hn(e,t){return!e||!Cn(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,St(t))||Y(e,t))}function lr(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:a,renderCache:f,props:d,data:g,setupState:m,ctx:C,inheritAttrs:S}=e,j=En(e);let F,P;try{if(n.shapeFlag&4){const T=r||s,K=T;F=qe(a.call(K,T,f,d,m,g,C)),P=l}else{const T=t;F=qe(T.length>1?T(d,{attrs:l,slots:o,emit:c}):T(d,null)),P=t.props?l:Yl(l)}}catch(T){Qt.length=0,jn(T,e,1),F=we(ot)}let N=F;if(P&&S!==!1){const T=Object.keys(P),{shapeFlag:K}=N;T.length&&K&7&&(i&&T.some(Pn)&&(P=Ql(P,i)),N=Ft(N,P,!1,!0))}return n.dirs&&(N=Ft(N,null,!1,!0),N.dirs=N.dirs?N.dirs.concat(n.dirs):n.dirs),n.transition&&js(N,n.transition),F=N,En(j),F}const Yl=e=>{let t;for(const n in e)(n==="class"||n==="style"||Cn(n))&&((t||(t={}))[n]=e[n]);return t},Ql=(e,t)=>{const n={};for(const s in e)(!Pn(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Xl(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,a=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?cr(s,o,a):!!o;if(c&8){const f=t.dynamicProps;for(let d=0;dObject.create(ji),Hi=e=>Object.getPrototypeOf(e)===ji;function ec(e,t,n,s=!1){const r={},i=Vi();e.propsDefaults=Object.create(null),Bi(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:mi(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function tc(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=$(r),[c]=e.propsOptions;let a=!1;if((s||o>0)&&!(o&16)){if(o&8){const f=e.vnode.dynamicProps;for(let d=0;d{c=!0;const[g,m]=Ui(d,t,!0);de(o,g),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!i&&!c)return Q(e)&&s.set(e,Tt),Tt;if(V(i))for(let f=0;fe==="_"||e==="_ctx"||e==="$stable",Hs=e=>V(e)?e.map(qe):[qe(e)],sc=(e,t,n)=>{if(t._n)return t;const s=gl((...r)=>Hs(t(...r)),n);return s._c=!1,s},Ki=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Vs(r))continue;const i=e[r];if(B(i))t[r]=sc(r,i,s);else if(i!=null){const o=Hs(i);t[r]=()=>o}}},ki=(e,t)=>{const n=Hs(t);e.slots.default=()=>n},Gi=(e,t,n)=>{for(const s in t)(n||!Vs(s))&&(e[s]=t[s])},rc=(e,t,n)=>{const s=e.slots=Vi();if(e.vnode.shapeFlag&32){const r=t._;r?(Gi(s,t,n),n&&zr(s,"_",r,!0)):Ki(t,s)}else t&&ki(e,t)},ic=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=ne;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:Gi(r,t,n):(i=!t.$stable,Ki(t,r)),o=t}else t&&(ki(e,t),o={default:1});if(i)for(const l in r)!Vs(l)&&o[l]==null&&delete r[l]},xe=fc;function oc(e){return lc(e)}function lc(e,t){const n=Dn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:a,setElementText:f,parentNode:d,nextSibling:g,setScopeId:m=Je,insertStaticContent:C}=e,S=(u,h,p,_=null,b=null,v=null,x=void 0,R=null,A=!!h.dynamicChildren)=>{if(u===h)return;u&&!Ut(u,h)&&(_=y(u),Se(u,b,v,!0),u=null),h.patchFlag===-2&&(A=!1,h.dynamicChildren=null);const{type:E,ref:L,shapeFlag:O}=h;switch(E){case Bn:j(u,h,p,_);break;case ot:F(u,h,p,_);break;case Xn:u==null&&P(h,p,_,x);break;case De:Oe(u,h,p,_,b,v,x,R,A);break;default:O&1?K(u,h,p,_,b,v,x,R,A):O&6?Re(u,h,p,_,b,v,x,R,A):(O&64||O&128)&&E.process(u,h,p,_,b,v,x,R,A,D)}L!=null&&b?zt(L,u&&u.ref,v,h||u,!h):L==null&&u&&u.ref!=null&&zt(u.ref,null,v,u,!0)},j=(u,h,p,_)=>{if(u==null)s(h.el=l(h.children),p,_);else{const b=h.el=u.el;h.children!==u.children&&a(b,h.children)}},F=(u,h,p,_)=>{u==null?s(h.el=c(h.children||""),p,_):h.el=u.el},P=(u,h,p,_)=>{[u.el,u.anchor]=C(u.children,h,p,_,u.el,u.anchor)},N=({el:u,anchor:h},p,_)=>{let b;for(;u&&u!==h;)b=g(u),s(u,p,_),u=b;s(h,p,_)},T=({el:u,anchor:h})=>{let p;for(;u&&u!==h;)p=g(u),r(u),u=p;r(h)},K=(u,h,p,_,b,v,x,R,A)=>{if(h.type==="svg"?x="svg":h.type==="math"&&(x="mathml"),u==null)ae(h,p,_,b,v,x,R,A);else{const E=u.el&&u.el._isVueCE?u.el:null;try{E&&E._beginPatch(),G(u,h,b,v,x,R,A)}finally{E&&E._endPatch()}}},ae=(u,h,p,_,b,v,x,R)=>{let A,E;const{props:L,shapeFlag:O,transition:M,dirs:H}=u;if(A=u.el=o(u.type,v,L&&L.is,L),O&8?f(A,u.children):O&16&&k(u.children,A,null,_,b,Qn(u,v),x,R),H&&vt(u,null,_,"created"),X(A,u,u.scopeId,x,_),L){for(const Z in L)Z!=="value"&&!Wt(Z)&&i(A,Z,null,L[Z],v,_);"value"in L&&i(A,"value",null,L.value,v),(E=L.onVnodeBeforeMount)&&ke(E,_,u)}H&&vt(u,null,_,"beforeMount");const q=cc(b,M);q&&M.beforeEnter(A),s(A,h,p),((E=L&&L.onVnodeMounted)||q||H)&&xe(()=>{try{E&&ke(E,_,u),q&&M.enter(A),H&&vt(u,null,_,"mounted")}finally{}},b)},X=(u,h,p,_,b)=>{if(p&&m(u,p),_)for(let v=0;v<_.length;v++)m(u,_[v]);if(b){let v=b.subTree;if(h===v||Ji(v.type)&&(v.ssContent===h||v.ssFallback===h)){const x=b.vnode;X(u,x,x.scopeId,x.slotScopeIds,b.parent)}}},k=(u,h,p,_,b,v,x,R,A=0)=>{for(let E=A;E{const R=h.el=u.el;let{patchFlag:A,dynamicChildren:E,dirs:L}=h;A|=u.patchFlag&16;const O=u.props||ne,M=h.props||ne;let H;if(p&&yt(p,!1),(H=M.onVnodeBeforeUpdate)&&ke(H,p,h,u),L&&vt(h,u,p,"beforeUpdate"),p&&yt(p,!0),(O.innerHTML&&M.innerHTML==null||O.textContent&&M.textContent==null)&&f(R,""),E?re(u.dynamicChildren,E,R,p,_,Qn(h,b),v):x||J(u,h,R,null,p,_,Qn(h,b),v,!1),A>0){if(A&16)_e(R,O,M,p,b);else if(A&2&&O.class!==M.class&&i(R,"class",null,M.class,b),A&4&&i(R,"style",O.style,M.style,b),A&8){const q=h.dynamicProps;for(let Z=0;Z{H&&ke(H,p,h,u),L&&vt(h,u,p,"updated")},_)},re=(u,h,p,_,b,v,x)=>{for(let R=0;R{if(h!==p){if(h!==ne)for(const v in h)!Wt(v)&&!(v in p)&&i(u,v,h[v],null,b,_);for(const v in p){if(Wt(v))continue;const x=p[v],R=h[v];x!==R&&v!=="value"&&i(u,v,R,x,b,_)}"value"in p&&i(u,"value",h.value,p.value,b)}},Oe=(u,h,p,_,b,v,x,R,A)=>{const E=h.el=u?u.el:l(""),L=h.anchor=u?u.anchor:l("");let{patchFlag:O,dynamicChildren:M,slotScopeIds:H}=h;H&&(R=R?R.concat(H):H),u==null?(s(E,p,_),s(L,p,_),k(h.children||[],p,L,b,v,x,R,A)):O>0&&O&64&&M&&u.dynamicChildren&&u.dynamicChildren.length===M.length?(re(u.dynamicChildren,M,p,b,v,x,R),(h.key!=null||b&&h===b.subTree)&&Wi(u,h,!0)):J(u,h,p,L,b,v,x,R,A)},Re=(u,h,p,_,b,v,x,R,A)=>{h.slotScopeIds=R,u==null?h.shapeFlag&512?b.ctx.activate(h,p,_,x,A):mt(h,p,_,b,v,x,A):ct(u,h,A)},mt=(u,h,p,_,b,v,x)=>{const R=u.component=vc(u,_,b);if(Ci(u)&&(R.ctx.renderer=D),yc(R,!1,x),R.asyncDep){if(b&&b.registerDep(R,se,x),!u.el){const A=R.subTree=we(ot);F(null,A,h,p),u.placeholder=A.el}}else se(R,u,h,p,b,v,x)},ct=(u,h,p)=>{const _=h.component=u.component;if(Xl(u,h,p))if(_.asyncDep&&!_.asyncResolved){U(_,h,p);return}else _.next=h,_.update();else h.el=u.el,_.vnode=h},se=(u,h,p,_,b,v,x)=>{const R=()=>{if(u.isMounted){let{next:O,bu:M,u:H,parent:q,vnode:Z}=u;{const Ue=qi(u);if(Ue){O&&(O.el=Z.el,U(u,O,x)),Ue.asyncDep.then(()=>{xe(()=>{u.isUnmounted||E()},b)});return}}let ee=O,ce;yt(u,!1),O?(O.el=Z.el,U(u,O,x)):O=Z,M&&Wn(M),(ce=O.props&&O.props.onVnodeBeforeUpdate)&&ke(ce,q,O,Z),yt(u,!0);const he=lr(u),Be=u.subTree;u.subTree=he,S(Be,he,d(Be.el),y(Be),u,b,v),O.el=he.el,ee===null&&Zl(u,he.el),H&&xe(H,b),(ce=O.props&&O.props.onVnodeUpdated)&&xe(()=>ke(ce,q,O,Z),b)}else{let O;const{el:M,props:H}=h,{bm:q,m:Z,parent:ee,root:ce,type:he}=u,Be=Mt(h);yt(u,!1),q&&Wn(q),!Be&&(O=H&&H.onVnodeBeforeMount)&&ke(O,ee,h),yt(u,!0);{ce.ce&&ce.ce._hasShadowRoot()&&ce.ce._injectChildStyle(he,u.parent?u.parent.type:void 0);const Ue=u.subTree=lr(u);S(null,Ue,p,_,u,b,v),h.el=Ue.el}if(Z&&xe(Z,b),!Be&&(O=H&&H.onVnodeMounted)){const Ue=h;xe(()=>ke(O,ee,Ue),b)}(h.shapeFlag&256||ee&&Mt(ee.vnode)&&ee.vnode.shapeFlag&256)&&u.a&&xe(u.a,b),u.isMounted=!0,h=p=_=null}};u.scope.on();const A=u.effect=new ni(R);u.scope.off();const E=u.update=A.run.bind(A),L=u.job=A.runIfDirty.bind(A);L.i=u,L.id=u.uid,A.scheduler=()=>Ls(L),yt(u,!0),E()},U=(u,h,p)=>{h.component=u;const _=u.vnode.props;u.vnode=h,u.next=null,tc(u,h.props,_,p),ic(u,h.children,p),st(),Zs(u),rt()},J=(u,h,p,_,b,v,x,R,A=!1)=>{const E=u&&u.children,L=u?u.shapeFlag:0,O=h.children,{patchFlag:M,shapeFlag:H}=h;if(M>0){if(M&128){ut(E,O,p,_,b,v,x,R,A);return}else if(M&256){Ye(E,O,p,_,b,v,x,R,A);return}}H&8?(L&16&&Ne(E,b,v),O!==E&&f(p,O)):L&16?H&16?ut(E,O,p,_,b,v,x,R,A):Ne(E,b,v,!0):(L&8&&f(p,""),H&16&&k(O,p,_,b,v,x,R,A))},Ye=(u,h,p,_,b,v,x,R,A)=>{u=u||Tt,h=h||Tt;const E=u.length,L=h.length,O=Math.min(E,L);let M;for(M=0;ML?Ne(u,b,v,!0,!1,O):k(h,p,_,b,v,x,R,A,O)},ut=(u,h,p,_,b,v,x,R,A)=>{let E=0;const L=h.length;let O=u.length-1,M=L-1;for(;E<=O&&E<=M;){const H=u[E],q=h[E]=A?et(h[E]):qe(h[E]);if(Ut(H,q))S(H,q,p,null,b,v,x,R,A);else break;E++}for(;E<=O&&E<=M;){const H=u[O],q=h[M]=A?et(h[M]):qe(h[M]);if(Ut(H,q))S(H,q,p,null,b,v,x,R,A);else break;O--,M--}if(E>O){if(E<=M){const H=M+1,q=HM)for(;E<=O;)Se(u[E],b,v,!0),E++;else{const H=E,q=E,Z=new Map;for(E=q;E<=M;E++){const Ce=h[E]=A?et(h[E]):qe(h[E]);Ce.key!=null&&Z.set(Ce.key,E)}let ee,ce=0;const he=M-q+1;let Be=!1,Ue=0;const Ht=new Array(he);for(E=0;E=he){Se(Ce,b,v,!0);continue}let Ke;if(Ce.key!=null)Ke=Z.get(Ce.key);else for(ee=q;ee<=M;ee++)if(Ht[ee-q]===0&&Ut(Ce,h[ee])){Ke=ee;break}Ke===void 0?Se(Ce,b,v,!0):(Ht[Ke-q]=E+1,Ke>=Ue?Ue=Ke:Be=!0,S(Ce,h[Ke],p,null,b,v,x,R,A),ce++)}const qs=Be?uc(Ht):Tt;for(ee=qs.length-1,E=he-1;E>=0;E--){const Ce=q+E,Ke=h[Ce],$s=h[Ce+1],Js=Ce+1{const{el:v,type:x,transition:R,children:A,shapeFlag:E}=u;if(E&6){He(u.component.subTree,h,p,_);return}if(E&128){u.suspense.move(h,p,_);return}if(E&64){x.move(u,h,p,D);return}if(x===De){s(v,h,p);for(let O=0;OR.enter(v),b);else{const{leave:O,delayLeave:M,afterLeave:H}=R,q=()=>{u.ctx.isUnmounted?r(v):s(v,h,p)},Z=()=>{v._isLeaving&&v[Al](!0),O(v,()=>{q(),H&&H()})};M?M(v,q,Z):Z()}else s(v,h,p)},Se=(u,h,p,_=!1,b=!1)=>{const{type:v,props:x,ref:R,children:A,dynamicChildren:E,shapeFlag:L,patchFlag:O,dirs:M,cacheIndex:H,memo:q}=u;if(O===-2&&(b=!1),R!=null&&(st(),zt(R,null,p,u,!0),rt()),H!=null&&(h.renderCache[H]=void 0),L&256){h.ctx.deactivate(u);return}const Z=L&1&&M,ee=!Mt(u);let ce;if(ee&&(ce=x&&x.onVnodeBeforeUnmount)&&ke(ce,h,u),L&6)_t(u.component,p,_);else{if(L&128){u.suspense.unmount(p,_);return}Z&&vt(u,null,h,"beforeUnmount"),L&64?u.type.remove(u,h,p,D,_):E&&!E.hasOnce&&(v!==De||O>0&&O&64)?Ne(E,h,p,!1,!0):(v===De&&O&384||!b&&L&16)&&Ne(A,h,p),_&&xt(u)}const he=q!=null&&H==null;(ee&&(ce=x&&x.onVnodeUnmounted)||Z||he)&&xe(()=>{ce&&ke(ce,h,u),Z&&vt(u,null,h,"unmounted"),he&&(u.el=null)},p)},xt=u=>{const{type:h,el:p,anchor:_,transition:b}=u;if(h===De){wt(p,_);return}if(h===Xn){T(u);return}const v=()=>{r(p),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(u.shapeFlag&1&&b&&!b.persisted){const{leave:x,delayLeave:R}=b,A=()=>x(p,v);R?R(u.el,v,A):A()}else v()},wt=(u,h)=>{let p;for(;u!==h;)p=g(u),r(u),u=p;r(h)},_t=(u,h,p)=>{const{bum:_,scope:b,job:v,subTree:x,um:R,m:A,a:E}=u;fr(A),fr(E),_&&Wn(_),b.stop(),v&&(v.flags|=8,Se(x,u,h,p)),R&&xe(R,h),xe(()=>{u.isUnmounted=!0},h)},Ne=(u,h,p,_=!1,b=!1,v=0)=>{for(let x=v;x{if(u.shapeFlag&6)return y(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const h=g(u.anchor||u.el),p=h&&h[bl];return p?g(p):h};let I=!1;const w=(u,h,p)=>{let _;u==null?h._vnode&&(Se(h._vnode,null,null,!0),_=h._vnode.component):S(h._vnode||null,u,h,null,null,null,p),h._vnode=u,I||(I=!0,Zs(_),Ai(),I=!1)},D={p:S,um:Se,m:He,r:xt,mt,mc:k,pc:J,pbc:re,n:y,o:e};return{render:w,hydrate:void 0,createApp:ql(w)}}function Qn({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 yt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function cc(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Wi(e,t,n=!1){const s=e.children,r=t.children;if(V(s)&&V(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function qi(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:qi(t)}function fr(e){if(e)for(let t=0;te.__isSuspense;function fc(e,t){t&&t.pendingBranch?V(e)?t.effects.push(...e):t.effects.push(e):pl(e)}const De=Symbol.for("v-fgt"),Bn=Symbol.for("v-txt"),ot=Symbol.for("v-cmt"),Xn=Symbol.for("v-stc"),Qt=[];let Pe=null;function Sn(e=!1){Qt.push(Pe=e?null:[])}function ac(){Qt.pop(),Pe=Qt[Qt.length-1]||null}let rn=1;function xn(e,t=!1){rn+=e,e<0&&Pe&&t&&(Pe.hasOnce=!0)}function zi(e){return e.dynamicChildren=rn>0?Pe||Tt:null,ac(),rn>0&&Pe&&Pe.push(e),e}function Lf(e,t,n,s,r,i){return zi(Qi(e,t,n,s,r,i,!0))}function wn(e,t,n,s,r){return zi(we(e,t,n,s,r,!0))}function on(e){return e?e.__v_isVNode===!0:!1}function Ut(e,t){return e.type===t.type&&e.key===t.key}const Yi=({key:e})=>e??null,_n=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?le(e)||ie(e)||B(e)?{i:Ee,r:e,k:t,f:!!n}:e:null);function Qi(e,t=null,n=null,s=0,r=null,i=e===De?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Yi(t),ref:t&&_n(t),scopeId:Si,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:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Ee};return l?(Bs(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=le(n)?8:16),rn>0&&!o&&Pe&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Pe.push(c),c}const we=hc;function hc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===jl)&&(e=ot),on(e)){const l=Ft(e,t,!0);return n&&Bs(l,n),rn>0&&!i&&Pe&&(l.shapeFlag&6?Pe[Pe.indexOf(e)]=l:Pe.push(l)),l.patchFlag=-2,l}if(Sc(e)&&(e=e.__vccOpts),t){t=dc(t);let{class:l,style:c}=t;l&&!le(l)&&(t.class=ws(l)),Q(c)&&(Fn(c)&&!V(c)&&(c=de({},c)),t.style=xs(c))}const o=le(e)?1:Ji(e)?128:El(e)?64:Q(e)?4:B(e)?2:0;return Qi(e,t,n,s,r,o,i,!0)}function dc(e){return e?Fn(e)||Hi(e)?de({},e):e:null}function Ft(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,a=t?gc(r||{},t):r,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&Yi(a),ref:t&&t.ref?n&&i?V(i)?i.concat(_n(t)):[i,_n(t)]:_n(t):i,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!==De?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ft(e.ssContent),ssFallback:e.ssFallback&&Ft(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&js(f,c.clone(f)),f}function pc(e=" ",t=0){return we(Bn,null,e,t)}function Ff(e="",t=!1){return t?(Sn(),wn(ot,null,e)):we(ot,null,e)}function qe(e){return e==null||typeof e=="boolean"?we(ot):V(e)?we(De,null,e.slice()):on(e)?et(e):we(Bn,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ft(e)}function Bs(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),Bs(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Hi(t)?t._ctx=Ee:r===3&&Ee&&(Ee.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else B(t)?(t={default:t,_ctx:Ee},n=32):(t=String(t),s&64?(n=16,t=[pc(t)]):n=8);e.children=t,e.shapeFlag|=n}function gc(...e){const t={};for(let n=0;nge||Ee;let On,gs;{const e=Dn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};On=t("__VUE_INSTANCE_SETTERS__",n=>ge=n),gs=t("__VUE_SSR_SETTERS__",n=>ln=n)}const hn=e=>{const t=ge;return On(e),e.scope.on(),()=>{e.scope.off(),On(t)}},ar=()=>{ge&&ge.scope.off(),On(null)};function Zi(e){return e.vnode.shapeFlag&4}let ln=!1;function yc(e,t=!1,n=!1){t&&gs(t);const{props:s,children:r}=e.vnode,i=Zi(e);ec(e,s,i,t),rc(e,r,n||t);const o=i?bc(e,t):void 0;return t&&gs(!1),o}function bc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Hl);const{setup:s}=n;if(s){st();const r=e.setupContext=s.length>1?Ac(e):null,i=hn(e),o=an(s,e,0,[e.props,r]),l=qr(o);if(rt(),i(),(l||e.sp)&&!Mt(e)&&Oi(e),l){if(o.then(ar,ar),t)return o.then(c=>{hr(e,c)}).catch(c=>{jn(c,e,0)});e.asyncDep=o}else hr(e,o)}else eo(e)}function hr(e,t,n){B(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Q(t)&&(e.setupState=vi(t)),eo(e)}function eo(e,t,n){const s=e.type;e.render||(e.render=s.render||Je);{const r=hn(e);st();try{Bl(e)}finally{rt(),r()}}}const Ec={get(e,t){return pe(e,"get",""),e[t]}};function Ac(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Ec),slots:e.slots,emit:e.emit,expose:t}}function Us(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(vi(Ds(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Yt)return Yt[n](e)},has(t,n){return n in t||n in Yt}})):e.proxy}function Rc(e,t=!0){return B(e)?e.displayName||e.name:e.name||t&&e.__name}function Sc(e){return B(e)&&"__vccOpts"in e}const me=(e,t)=>ul(e,t,ln);function to(e,t,n){try{xn(-1);const s=arguments.length;return s===2?Q(t)&&!V(t)?on(t)?we(e,null,[t]):we(e,t):we(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&on(n)&&(n=[n]),we(e,t,n))}finally{xn(1)}}const xc="3.5.34";/** +* @vue/runtime-dom v3.5.34 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let ms;const dr=typeof window<"u"&&window.trustedTypes;if(dr)try{ms=dr.createPolicy("vue",{createHTML:e=>e})}catch{}const no=ms?e=>ms.createHTML(e):e=>e,wc="http://www.w3.org/2000/svg",Oc="http://www.w3.org/1998/Math/MathML",Ze=typeof document<"u"?document:null,pr=Ze&&Ze.createElement("template"),Cc={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"?Ze.createElementNS(wc,e):t==="mathml"?Ze.createElementNS(Oc,e):n?Ze.createElement(e,{is:n}):Ze.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Ze.createTextNode(e),createComment:e=>Ze.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ze.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{pr.innerHTML=no(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=pr.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[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Pc=Symbol("_vtc");function Ic(e,t,n){const s=e[Pc];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const gr=Symbol("_vod"),Tc=Symbol("_vsh"),Nc=Symbol(""),Dc=/(?:^|;)\s*display\s*:/;function Mc(e,t,n){const s=e.style,r=le(n);let i=!1;if(n&&!r){if(t)if(le(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&Gt(s,l,"")}else for(const o in t)n[o]==null&&Gt(s,o,"");for(const o in n){o==="display"&&(i=!0);const l=n[o];l!=null?Fc(e,o,!le(t)&&t?t[o]:void 0,l)||Gt(s,o,l):Gt(s,o,"")}}else if(r){if(t!==n){const o=s[Nc];o&&(n+=";"+o),s.cssText=n,i=Dc.test(n)}}else t&&e.removeAttribute("style");gr in e&&(e[gr]=i?s.display:"",e[Tc]&&(s.display="none"))}const mr=/\s*!important$/;function Gt(e,t,n){if(V(n))n.forEach(s=>Gt(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Lc(e,t);mr.test(n)?e.setProperty(St(s),n.replace(mr,""),"important"):e[s]=n}}const _r=["Webkit","Moz","ms"],Zn={};function Lc(e,t){const n=Zn[t];if(n)return n;let s=Ae(t);if(s!=="filter"&&s in e)return Zn[t]=s;s=Nn(s);for(let r=0;r<_r.length;r++){const i=_r[r]+s;if(i in e)return Zn[t]=i}return t}function Fc(e,t,n,s){return e.tagName==="TEXTAREA"&&(t==="width"||t==="height")&&le(s)&&n===s}const vr="http://www.w3.org/1999/xlink";function yr(e,t,n,s,r,i=No(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(vr,t.slice(6,t.length)):e.setAttributeNS(vr,t,n):n==null||i&&!Yr(n)?e.removeAttribute(t):e.setAttribute(t,i?"":Te(n)?String(n):n)}function br(e,t,n,s,r){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?no(n):n);return}const i=e.tagName;if(t==="value"&&i!=="PROGRESS"&&!i.includes("-")){const l=i==="OPTION"?e.getAttribute("value")||"":e.value,c=n==null?e.type==="checkbox"?"on":"":String(n);(l!==c||!("_value"in e))&&(e.value=c),n==null&&e.removeAttribute(t),e._value=n;return}let o=!1;if(n===""||n==null){const l=typeof e[t];l==="boolean"?n=Yr(n):n==null&&l==="string"?(n="",o=!0):l==="number"&&(n=0,o=!0)}try{e[t]=n}catch{}o&&e.removeAttribute(r||t)}function jc(e,t,n,s){e.addEventListener(t,n,s)}function Vc(e,t,n,s){e.removeEventListener(t,n,s)}const Er=Symbol("_vei");function Hc(e,t,n,s,r=null){const i=e[Er]||(e[Er]={}),o=i[t];if(s&&o)o.value=s;else{const[l,c]=Bc(t);if(s){const a=i[t]=kc(s,r);jc(e,l,a,c)}else o&&(Vc(e,l,o,c),i[t]=void 0)}}const Ar=/(?:Once|Passive|Capture)$/;function Bc(e){let t;if(Ar.test(e)){t={};let s;for(;s=e.match(Ar);)e=e.slice(0,e.length-s[0].length),t[s[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):St(e.slice(2)),t]}let es=0;const Uc=Promise.resolve(),Kc=()=>es||(Uc.then(()=>es=0),es=Date.now());function kc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;ze(Gc(s,n.value),t,5,[s])};return n.value=e,n.attached=Kc(),n}function Gc(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 Rr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Wc=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?Ic(e,s,o):t==="style"?Mc(e,n,s):Cn(t)?Pn(t)||Hc(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):qc(e,t,s,o))?(br(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&yr(e,t,s,o,i,t!=="value")):e._isVueCE&&($c(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!le(s)))?br(e,Ae(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),yr(e,t,s,o))};function qc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Rr(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 Rr(t)&&le(n)?!1:t in e}function $c(e,t){const n=e._def.props;if(!n)return!1;const s=Ae(t);return Array.isArray(n)?n.some(r=>Ae(r)===s):Object.keys(n).some(r=>Ae(r)===s)}const Jc=["ctrl","shift","alt","meta"],zc={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)=>Jc.some(n=>e[`${n}Key`]&&!t.includes(n))},jf=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((r,...i)=>{for(let o=0;o{const t=Qc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=eu(s);if(!r)return;const i=t._component;!B(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Zc(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t});function Zc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function eu(e){return le(e)?document.querySelector(e):e}/*! + * pinia v2.3.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let so;const Un=e=>so=e,ro=Symbol();function _s(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Xt;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Xt||(Xt={}));function tu(){const e=ei(!0),t=e.run(()=>nn({}));let n=[],s=[];const r=Ds({install(i){Un(r),r._a=i,i.provide(ro,r),i.config.globalProperties.$pinia=r,s.forEach(o=>n.push(o)),s=[]},use(i){return this._a?n.push(i):s.push(i),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const io=()=>{};function xr(e,t,n,s=io){e.push(t);const r=()=>{const i=e.indexOf(t);i>-1&&(e.splice(i,1),s())};return!n&&ti()&&Lo(r),r}function Ct(e,...t){e.slice().forEach(n=>{n(...t)})}const nu=e=>e(),wr=Symbol(),ts=Symbol();function vs(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];_s(r)&&_s(s)&&e.hasOwnProperty(n)&&!ie(s)&&!nt(s)?e[n]=vs(r,s):e[n]=s}return e}const su=Symbol();function ru(e){return!_s(e)||!e.hasOwnProperty(su)}const{assign:at}=Object;function iu(e){return!!(ie(e)&&e.effect)}function ou(e,t,n,s){const{state:r,actions:i,getters:o}=t,l=n.state.value[e];let c;function a(){l||(n.state.value[e]=r?r():{});const f=il(n.state.value[e]);return at(f,i,Object.keys(o||{}).reduce((d,g)=>(d[g]=Ds(me(()=>{Un(n);const m=n._s.get(e);return o[g].call(m,m)})),d),{}))}return c=oo(e,a,t,n,s,!0),c}function oo(e,t,n={},s,r,i){let o;const l=at({actions:{}},n),c={deep:!0};let a,f,d=[],g=[],m;const C=s.state.value[e];!i&&!C&&(s.state.value[e]={});let S;function j(k){let G;a=f=!1,typeof k=="function"?(k(s.state.value[e]),G={type:Xt.patchFunction,storeId:e,events:m}):(vs(s.state.value[e],k),G={type:Xt.patchObject,payload:k,storeId:e,events:m});const re=S=Symbol();Ms().then(()=>{S===re&&(a=!0)}),f=!0,Ct(d,G,s.state.value[e])}const F=i?function(){const{state:G}=n,re=G?G():{};this.$patch(_e=>{at(_e,re)})}:io;function P(){o.stop(),d=[],g=[],s._s.delete(e)}const N=(k,G="")=>{if(wr in k)return k[ts]=G,k;const re=function(){Un(s);const _e=Array.from(arguments),Oe=[],Re=[];function mt(U){Oe.push(U)}function ct(U){Re.push(U)}Ct(g,{args:_e,name:re[ts],store:K,after:mt,onError:ct});let se;try{se=k.apply(this&&this.$id===e?this:K,_e)}catch(U){throw Ct(Re,U),U}return se instanceof Promise?se.then(U=>(Ct(Oe,U),U)).catch(U=>(Ct(Re,U),Promise.reject(U))):(Ct(Oe,se),se)};return re[wr]=!0,re[ts]=G,re},T={_p:s,$id:e,$onAction:xr.bind(null,g),$patch:j,$reset:F,$subscribe(k,G={}){const re=xr(d,k,G.detached,()=>_e()),_e=o.run(()=>Jt(()=>s.state.value[e],Oe=>{(G.flush==="sync"?f:a)&&k({storeId:e,type:Xt.direct,events:m},Oe)},at({},c,G)));return re},$dispose:P},K=fn(T);s._s.set(e,K);const X=(s._a&&s._a.runWithContext||nu)(()=>s._e.run(()=>(o=ei()).run(()=>t({action:N}))));for(const k in X){const G=X[k];if(ie(G)&&!iu(G)||nt(G))i||(C&&ru(G)&&(ie(G)?G.value=C[k]:vs(G,C[k])),s.state.value[e][k]=G);else if(typeof G=="function"){const re=N(G,k);X[k]=re,l.actions[k]=G}}return at(K,X),at($(K),X),Object.defineProperty(K,"$state",{get:()=>s.state.value[e],set:k=>{j(G=>{at(G,k)})}}),s._p.forEach(k=>{at(K,o.run(()=>k({store:K,app:s._a,pinia:s,options:l})))}),C&&i&&n.hydrate&&n.hydrate(K.$state,C),a=!0,f=!0,K}/*! #__NO_SIDE_EFFECTS__ */function lu(e,t,n){let s,r;const i=typeof t=="function";s=e,r=i?n:t;function o(l,c){const a=ml();return l=l||(a?Me(ro,null):null),l&&Un(l),l=so,l._s.has(s)||(i?oo(s,t,r,l):ou(s,r,l)),l._s.get(s)}return o.$id=s,o}const cu=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},uu={};function fu(e,t){const n=Fl("RouterView");return Sn(),wn(n)}const au=cu(uu,[["render",fu]]),hu="modulepreload",du=function(e){return"/"+e},Or={},Le=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){let o=function(a){return Promise.all(a.map(f=>Promise.resolve(f).then(d=>({status:"fulfilled",value:d}),d=>({status:"rejected",reason:d}))))};document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),c=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));r=o(n.map(a=>{if(a=du(a),a in Or)return;Or[a]=!0;const f=a.endsWith(".css"),d=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${a}"]${d}`))return;const g=document.createElement("link");if(g.rel=f?"stylesheet":hu,f||(g.as="script"),g.crossOrigin="",g.href=a,c&&g.setAttribute("nonce",c),document.head.appendChild(g),f)return new Promise((m,C)=>{g.addEventListener("load",m),g.addEventListener("error",()=>C(new Error(`Unable to preload CSS for ${a}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})};/*! + * vue-router v4.6.4 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */const It=typeof document<"u";function lo(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function pu(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&lo(e.default)}const z=Object.assign;function ns(e,t){const n={};for(const s in t){const r=t[s];n[s]=Ve(r)?r.map(e):e(r)}return n}const Zt=()=>{},Ve=Array.isArray;function Cr(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const co=/#/g,gu=/&/g,mu=/\//g,_u=/=/g,vu=/\?/g,uo=/\+/g,yu=/%5B/g,bu=/%5D/g,fo=/%5E/g,Eu=/%60/g,ao=/%7B/g,Au=/%7C/g,ho=/%7D/g,Ru=/%20/g;function Ks(e){return e==null?"":encodeURI(""+e).replace(Au,"|").replace(yu,"[").replace(bu,"]")}function Su(e){return Ks(e).replace(ao,"{").replace(ho,"}").replace(fo,"^")}function ys(e){return Ks(e).replace(uo,"%2B").replace(Ru,"+").replace(co,"%23").replace(gu,"%26").replace(Eu,"`").replace(ao,"{").replace(ho,"}").replace(fo,"^")}function xu(e){return ys(e).replace(_u,"%3D")}function wu(e){return Ks(e).replace(co,"%23").replace(vu,"%3F")}function Ou(e){return wu(e).replace(mu,"%2F")}function cn(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const Cu=/\/$/,Pu=e=>e.replace(Cu,"");function ss(e,t,n="/"){let s,r={},i="",o="";const l=t.indexOf("#");let c=t.indexOf("?");return c=l>=0&&c>l?-1:c,c>=0&&(s=t.slice(0,c),i=t.slice(c,l>0?l:t.length),r=e(i.slice(1))),l>=0&&(s=s||t.slice(0,l),o=t.slice(l,t.length)),s=Du(s??t,n),{fullPath:s+i+o,path:s,query:r,hash:cn(o)}}function Iu(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Pr(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Tu(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&jt(t.matched[s],n.matched[r])&&po(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function jt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function po(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!Nu(e[n],t[n]))return!1;return!0}function Nu(e,t){return Ve(e)?Ir(e,t):Ve(t)?Ir(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function Ir(e,t){return Ve(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function Du(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 i=n.length-1,o,l;for(o=0;o1&&i--;else break;return n.slice(0,i).join("/")+"/"+s.slice(o).join("/")}const ft={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let bs=(function(e){return e.pop="pop",e.push="push",e})({}),rs=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function Mu(e){if(!e)if(It){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Pu(e)}const Lu=/^[^#]+#/;function Fu(e,t){return e.replace(Lu,"#")+t}function ju(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 Kn=()=>({left:window.scrollX,top:window.scrollY});function Vu(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=ju(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 Tr(e,t){return(history.state?history.state.position-t:-1)+e}const Es=new Map;function Hu(e,t){Es.set(e,t)}function Bu(e){const t=Es.get(e);return Es.delete(e),t}function Uu(e){return typeof e=="string"||e&&typeof e=="object"}function go(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 mo=Symbol("");oe.MATCHER_NOT_FOUND+"",oe.NAVIGATION_GUARD_REDIRECT+"",oe.NAVIGATION_ABORTED+"",oe.NAVIGATION_CANCELLED+"",oe.NAVIGATION_DUPLICATED+"";function Vt(e,t){return z(new Error,{type:e,[mo]:!0},t)}function Xe(e,t){return e instanceof Error&&mo in e&&(t==null||!!(e.type&t))}const Ku=["params","query","hash"];function ku(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of Ku)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Gu(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sr&&ys(r)):[s&&ys(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function Wu(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=Ve(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const qu=Symbol(""),Dr=Symbol(""),kn=Symbol(""),ks=Symbol(""),As=Symbol("");function Kt(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function dt(e,t,n,s,r,i=o=>o()){const o=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,c)=>{const a=g=>{g===!1?c(Vt(oe.NAVIGATION_ABORTED,{from:n,to:t})):g instanceof Error?c(g):Uu(g)?c(Vt(oe.NAVIGATION_GUARD_REDIRECT,{from:t,to:g})):(o&&s.enterCallbacks[r]===o&&typeof g=="function"&&o.push(g),l())},f=i(()=>e.call(s&&s.instances[r],t,n,a));let d=Promise.resolve(f);e.length<3&&(d=d.then(a)),d.catch(g=>c(g))})}function is(e,t,n,s,r=i=>i()){const i=[];for(const o of e)for(const l in o.components){let c=o.components[l];if(!(t!=="beforeRouteEnter"&&!o.instances[l]))if(lo(c)){const a=(c.__vccOpts||c)[t];a&&i.push(dt(a,n,s,o,l,r))}else{let a=c();i.push(()=>a.then(f=>{if(!f)throw new Error(`Couldn't resolve component "${l}" at "${o.path}"`);const d=pu(f)?f.default:f;o.mods[l]=f,o.components[l]=d;const g=(d.__vccOpts||d)[t];return g&&dt(g,n,s,o,l,r)()}))}}return i}function $u(e,t){const n=[],s=[],r=[],i=Math.max(t.matched.length,e.matched.length);for(let o=0;ojt(a,l))?s.push(l):n.push(l));const c=e.matched[o];c&&(t.matched.find(a=>jt(a,c))||r.push(c))}return[n,s,r]}/*! + * vue-router v4.6.4 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let Ju=()=>location.protocol+"//"+location.host;function _o(e,t){const{pathname:n,search:s,hash:r}=t,i=e.indexOf("#");if(i>-1){let o=r.includes(e.slice(i))?e.slice(i).length:1,l=r.slice(o);return l[0]!=="/"&&(l="/"+l),Pr(l,"")}return Pr(n,e)+s+r}function zu(e,t,n,s){let r=[],i=[],o=null;const l=({state:g})=>{const m=_o(e,location),C=n.value,S=t.value;let j=0;if(g){if(n.value=m,t.value=g,o&&o===C){o=null;return}j=S?g.position-S.position:0}else s(m);r.forEach(F=>{F(n.value,C,{delta:j,type:bs.pop,direction:j?j>0?rs.forward:rs.back:rs.unknown})})};function c(){o=n.value}function a(g){r.push(g);const m=()=>{const C=r.indexOf(g);C>-1&&r.splice(C,1)};return i.push(m),m}function f(){if(document.visibilityState==="hidden"){const{history:g}=window;if(!g.state)return;g.replaceState(z({},g.state,{scroll:Kn()}),"")}}function d(){for(const g of i)g();i=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",f),document.removeEventListener("visibilitychange",f)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",f),document.addEventListener("visibilitychange",f),{pauseListeners:c,listen:a,destroy:d}}function Mr(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?Kn():null}}function Yu(e){const{history:t,location:n}=window,s={value:_o(e,n)},r={value:t.state};r.value||i(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(c,a,f){const d=e.indexOf("#"),g=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+c:Ju()+e+c;try{t[f?"replaceState":"pushState"](a,"",g),r.value=a}catch(m){console.error(m),n[f?"replace":"assign"](g)}}function o(c,a){i(c,z({},t.state,Mr(r.value.back,c,r.value.forward,!0),a,{position:r.value.position}),!0),s.value=c}function l(c,a){const f=z({},r.value,t.state,{forward:c,scroll:Kn()});i(f.current,f,!0),i(c,z({},Mr(s.value,c,null),{position:f.position+1},a),!1),s.value=c}return{location:s,state:r,push:l,replace:o}}function Qu(e){e=Mu(e);const t=Yu(e),n=zu(e,t.state,t.location,t.replace);function s(i,o=!0){o||n.pauseListeners(),history.go(i)}const r=z({location:"",base:e,go:s,createHref:Fu.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let Et=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var ue=(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})(ue||{});const Xu={type:Et.Static,value:""},Zu=/[a-zA-Z0-9_]/;function ef(e){if(!e)return[[]];if(e==="/")return[[Xu]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${a}": ${m}`)}let n=ue.Static,s=n;const r=[];let i;function o(){i&&r.push(i),i=[]}let l=0,c,a="",f="";function d(){a&&(n===ue.Static?i.push({type:Et.Static,value:a}):n===ue.Param||n===ue.ParamRegExp||n===ue.ParamRegExpEnd?(i.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${a}) must be alone in its segment. eg: '/:ids+.`),i.push({type:Et.Param,value:a,regexp:f,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),a="")}function g(){a+=c}for(;lt.length?t.length===1&&t[0]===ye.Static+ye.Segment?1:-1:0}function vo(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const of={strict:!1,end:!0,sensitive:!1};function lf(e,t,n){const s=sf(ef(e.path),n),r=z(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function cf(e,t){const n=[],s=new Map;t=Cr(of,t);function r(d){return s.get(d)}function i(d,g,m){const C=!m,S=Vr(d);S.aliasOf=m&&m.record;const j=Cr(t,d),F=[S];if("alias"in d){const T=typeof d.alias=="string"?[d.alias]:d.alias;for(const K of T)F.push(Vr(z({},S,{components:m?m.record.components:S.components,path:K,aliasOf:m?m.record:S})))}let P,N;for(const T of F){const{path:K}=T;if(g&&K[0]!=="/"){const ae=g.record.path,X=ae[ae.length-1]==="/"?"":"/";T.path=g.record.path+(K&&X+K)}if(P=lf(T,g,j),m?m.alias.push(P):(N=N||P,N!==P&&N.alias.push(P),C&&d.name&&!Hr(P)&&o(d.name)),yo(P)&&c(P),S.children){const ae=S.children;for(let X=0;X{o(N)}:Zt}function o(d){if(go(d)){const g=s.get(d);g&&(s.delete(d),n.splice(n.indexOf(g),1),g.children.forEach(o),g.alias.forEach(o))}else{const g=n.indexOf(d);g>-1&&(n.splice(g,1),d.record.name&&s.delete(d.record.name),d.children.forEach(o),d.alias.forEach(o))}}function l(){return n}function c(d){const g=af(d,n);n.splice(g,0,d),d.record.name&&!Hr(d)&&s.set(d.record.name,d)}function a(d,g){let m,C={},S,j;if("name"in d&&d.name){if(m=s.get(d.name),!m)throw Vt(oe.MATCHER_NOT_FOUND,{location:d});j=m.record.name,C=z(jr(g.params,m.keys.filter(N=>!N.optional).concat(m.parent?m.parent.keys.filter(N=>N.optional):[]).map(N=>N.name)),d.params&&jr(d.params,m.keys.map(N=>N.name))),S=m.stringify(C)}else if(d.path!=null)S=d.path,m=n.find(N=>N.re.test(S)),m&&(C=m.parse(S),j=m.record.name);else{if(m=g.name?s.get(g.name):n.find(N=>N.re.test(g.path)),!m)throw Vt(oe.MATCHER_NOT_FOUND,{location:d,currentLocation:g});j=m.record.name,C=z({},g.params,d.params),S=m.stringify(C)}const F=[];let P=m;for(;P;)F.unshift(P.record),P=P.parent;return{name:j,path:S,params:C,matched:F,meta:ff(F)}}e.forEach(d=>i(d));function f(){n.length=0,s.clear()}return{addRoute:i,resolve:a,removeRoute:o,clearRoutes:f,getRoutes:l,getRecordMatcher:r}}function jr(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Vr(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:uf(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 uf(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 Hr(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function ff(e){return e.reduce((t,n)=>z(t,n.meta),{})}function af(e,t){let n=0,s=t.length;for(;n!==s;){const i=n+s>>1;vo(e,t[i])<0?s=i:n=i+1}const r=hf(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function hf(e){let t=e;for(;t=t.parent;)if(yo(t)&&vo(e,t)===0)return t}function yo({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Br(e){const t=Me(kn),n=Me(ks),s=me(()=>{const c=gt(e.to);return t.resolve(c)}),r=me(()=>{const{matched:c}=s.value,{length:a}=c,f=c[a-1],d=n.matched;if(!f||!d.length)return-1;const g=d.findIndex(jt.bind(null,f));if(g>-1)return g;const m=Ur(c[a-2]);return a>1&&Ur(f)===m&&d[d.length-1].path!==m?d.findIndex(jt.bind(null,c[a-2])):g}),i=me(()=>r.value>-1&&_f(n.params,s.value.params)),o=me(()=>r.value>-1&&r.value===n.matched.length-1&&po(n.params,s.value.params));function l(c={}){if(mf(c)){const a=t[gt(e.replace)?"replace":"push"](gt(e.to)).catch(Zt);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>a),a}return Promise.resolve()}return{route:s,href:me(()=>s.value.href),isActive:i,isExactActive:o,navigate:l}}function df(e){return e.length===1?e[0]:e}const pf=wi({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:Br,setup(e,{slots:t}){const n=fn(Br(e)),{options:s}=Me(kn),r=me(()=>({[Kr(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Kr(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&df(t.default(n));return e.custom?i:to("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},i)}}}),gf=pf;function mf(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 _f(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!Ve(r)||r.length!==s.length||s.some((i,o)=>i.valueOf()!==r[o].valueOf()))return!1}return!0}function Ur(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Kr=(e,t,n)=>e??t??n,vf=wi({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=Me(As),r=me(()=>e.route||s.value),i=Me(Dr,0),o=me(()=>{let a=gt(i);const{matched:f}=r.value;let d;for(;(d=f[a])&&!d.components;)a++;return a}),l=me(()=>r.value.matched[o.value]);mn(Dr,me(()=>o.value+1)),mn(qu,l),mn(As,r);const c=nn();return Jt(()=>[c.value,l.value,e.name],([a,f,d],[g,m,C])=>{f&&(f.instances[d]=a,m&&m!==f&&a&&a===g&&(f.leaveGuards.size||(f.leaveGuards=m.leaveGuards),f.updateGuards.size||(f.updateGuards=m.updateGuards))),a&&f&&(!m||!jt(f,m)||!g)&&(f.enterCallbacks[d]||[]).forEach(S=>S(a))},{flush:"post"}),()=>{const a=r.value,f=e.name,d=l.value,g=d&&d.components[f];if(!g)return kr(n.default,{Component:g,route:a});const m=d.props[f],C=m?m===!0?a.params:typeof m=="function"?m(a):m:null,j=to(g,z({},C,t,{onVnodeUnmounted:F=>{F.component.isUnmounted&&(d.instances[f]=null)},ref:c}));return kr(n.default,{Component:j,route:a})||j}}});function kr(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const yf=vf;function bf(e){const t=cf(e.routes,e),n=e.parseQuery||Gu,s=e.stringifyQuery||Nr,r=e.history,i=Kt(),o=Kt(),l=Kt(),c=tl(ft);let a=ft;It&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=ns.bind(null,y=>""+y),d=ns.bind(null,Ou),g=ns.bind(null,cn);function m(y,I){let w,D;return go(y)?(w=t.getRecordMatcher(y),D=I):D=y,t.addRoute(D,w)}function C(y){const I=t.getRecordMatcher(y);I&&t.removeRoute(I)}function S(){return t.getRoutes().map(y=>y.record)}function j(y){return!!t.getRecordMatcher(y)}function F(y,I){if(I=z({},I||c.value),typeof y=="string"){const p=ss(n,y,I.path),_=t.resolve({path:p.path},I),b=r.createHref(p.fullPath);return z(p,_,{params:g(_.params),hash:cn(p.hash),redirectedFrom:void 0,href:b})}let w;if(y.path!=null)w=z({},y,{path:ss(n,y.path,I.path).path});else{const p=z({},y.params);for(const _ in p)p[_]==null&&delete p[_];w=z({},y,{params:d(p)}),I.params=d(I.params)}const D=t.resolve(w,I),W=y.hash||"";D.params=f(g(D.params));const u=Iu(s,z({},y,{hash:Su(W),path:D.path})),h=r.createHref(u);return z({fullPath:u,hash:W,query:s===Nr?Wu(y.query):y.query||{}},D,{redirectedFrom:void 0,href:h})}function P(y){return typeof y=="string"?ss(n,y,c.value.path):z({},y)}function N(y,I){if(a!==y)return Vt(oe.NAVIGATION_CANCELLED,{from:I,to:y})}function T(y){return X(y)}function K(y){return T(z(P(y),{replace:!0}))}function ae(y,I){const w=y.matched[y.matched.length-1];if(w&&w.redirect){const{redirect:D}=w;let W=typeof D=="function"?D(y,I):D;return typeof W=="string"&&(W=W.includes("?")||W.includes("#")?W=P(W):{path:W},W.params={}),z({query:y.query,hash:y.hash,params:W.path!=null?{}:y.params},W)}}function X(y,I){const w=a=F(y),D=c.value,W=y.state,u=y.force,h=y.replace===!0,p=ae(w,D);if(p)return X(z(P(p),{state:typeof p=="object"?z({},W,p.state):W,force:u,replace:h}),I||w);const _=w;_.redirectedFrom=I;let b;return!u&&Tu(s,D,w)&&(b=Vt(oe.NAVIGATION_DUPLICATED,{to:_,from:D}),He(D,D,!0,!1)),(b?Promise.resolve(b):re(_,D)).catch(v=>Xe(v)?Xe(v,oe.NAVIGATION_GUARD_REDIRECT)?v:ut(v):J(v,_,D)).then(v=>{if(v){if(Xe(v,oe.NAVIGATION_GUARD_REDIRECT))return X(z({replace:h},P(v.to),{state:typeof v.to=="object"?z({},W,v.to.state):W,force:u}),I||_)}else v=Oe(_,D,!0,h,W);return _e(_,D,v),v})}function k(y,I){const w=N(y,I);return w?Promise.reject(w):Promise.resolve()}function G(y){const I=wt.values().next().value;return I&&typeof I.runWithContext=="function"?I.runWithContext(y):y()}function re(y,I){let w;const[D,W,u]=$u(y,I);w=is(D.reverse(),"beforeRouteLeave",y,I);for(const p of D)p.leaveGuards.forEach(_=>{w.push(dt(_,y,I))});const h=k.bind(null,y,I);return w.push(h),Ne(w).then(()=>{w=[];for(const p of i.list())w.push(dt(p,y,I));return w.push(h),Ne(w)}).then(()=>{w=is(W,"beforeRouteUpdate",y,I);for(const p of W)p.updateGuards.forEach(_=>{w.push(dt(_,y,I))});return w.push(h),Ne(w)}).then(()=>{w=[];for(const p of u)if(p.beforeEnter)if(Ve(p.beforeEnter))for(const _ of p.beforeEnter)w.push(dt(_,y,I));else w.push(dt(p.beforeEnter,y,I));return w.push(h),Ne(w)}).then(()=>(y.matched.forEach(p=>p.enterCallbacks={}),w=is(u,"beforeRouteEnter",y,I,G),w.push(h),Ne(w))).then(()=>{w=[];for(const p of o.list())w.push(dt(p,y,I));return w.push(h),Ne(w)}).catch(p=>Xe(p,oe.NAVIGATION_CANCELLED)?p:Promise.reject(p))}function _e(y,I,w){l.list().forEach(D=>G(()=>D(y,I,w)))}function Oe(y,I,w,D,W){const u=N(y,I);if(u)return u;const h=I===ft,p=It?history.state:{};w&&(D||h?r.replace(y.fullPath,z({scroll:h&&p&&p.scroll},W)):r.push(y.fullPath,W)),c.value=y,He(y,I,w,h),ut()}let Re;function mt(){Re||(Re=r.listen((y,I,w)=>{if(!_t.listening)return;const D=F(y),W=ae(D,_t.currentRoute.value);if(W){X(z(W,{replace:!0,force:!0}),D).catch(Zt);return}a=D;const u=c.value;It&&Hu(Tr(u.fullPath,w.delta),Kn()),re(D,u).catch(h=>Xe(h,oe.NAVIGATION_ABORTED|oe.NAVIGATION_CANCELLED)?h:Xe(h,oe.NAVIGATION_GUARD_REDIRECT)?(X(z(P(h.to),{force:!0}),D).then(p=>{Xe(p,oe.NAVIGATION_ABORTED|oe.NAVIGATION_DUPLICATED)&&!w.delta&&w.type===bs.pop&&r.go(-1,!1)}).catch(Zt),Promise.reject()):(w.delta&&r.go(-w.delta,!1),J(h,D,u))).then(h=>{h=h||Oe(D,u,!1),h&&(w.delta&&!Xe(h,oe.NAVIGATION_CANCELLED)?r.go(-w.delta,!1):w.type===bs.pop&&Xe(h,oe.NAVIGATION_ABORTED|oe.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),_e(D,u,h)}).catch(Zt)}))}let ct=Kt(),se=Kt(),U;function J(y,I,w){ut(y);const D=se.list();return D.length?D.forEach(W=>W(y,I,w)):console.error(y),Promise.reject(y)}function Ye(){return U&&c.value!==ft?Promise.resolve():new Promise((y,I)=>{ct.add([y,I])})}function ut(y){return U||(U=!y,mt(),ct.list().forEach(([I,w])=>y?w(y):I()),ct.reset()),y}function He(y,I,w,D){const{scrollBehavior:W}=e;if(!It||!W)return Promise.resolve();const u=!w&&Bu(Tr(y.fullPath,0))||(D||!w)&&history.state&&history.state.scroll||null;return Ms().then(()=>W(y,I,u)).then(h=>h&&Vu(h)).catch(h=>J(h,y,I))}const Se=y=>r.go(y);let xt;const wt=new Set,_t={currentRoute:c,listening:!0,addRoute:m,removeRoute:C,clearRoutes:t.clearRoutes,hasRoute:j,getRoutes:S,resolve:F,options:e,push:T,replace:K,go:Se,back:()=>Se(-1),forward:()=>Se(1),beforeEach:i.add,beforeResolve:o.add,afterEach:l.add,onError:se.add,isReady:Ye,install(y){y.component("RouterLink",gf),y.component("RouterView",yf),y.config.globalProperties.$router=_t,Object.defineProperty(y.config.globalProperties,"$route",{enumerable:!0,get:()=>gt(c)}),It&&!xt&&c.value===ft&&(xt=!0,T(r.location).catch(D=>{}));const I={};for(const D in ft)Object.defineProperty(I,D,{get:()=>c.value[D],enumerable:!0});y.provide(kn,_t),y.provide(ks,mi(I)),y.provide(As,c);const w=y.unmount;wt.add(y),y.unmount=function(){wt.delete(y),wt.size<1&&(a=ft,Re&&Re(),Re=null,c.value=ft,xt=!1,U=!1),w()}}};function Ne(y){return y.reduce((I,w)=>I.then(()=>G(w)),Promise.resolve())}return _t}function Vf(){return Me(kn)}function Hf(e){return Me(ks)}function bo(){return"admin"}const Ef="https://api.montime.ir";class Af extends Error{constructor(t,n){super(n),this.status=t,this.name="ApiError"}}function Rf(){return localStorage.getItem("montime_access_token")}async function Gs(e,t={}){const n=t.token??Rf()??void 0,s={"Content-Type":"application/json",...t.headers};n&&(s.Authorization=`Bearer ${n}`);const{token:r,...i}=t,o=await fetch(`${Ef}${e}`,{...i,headers:s});if(!o.ok){const l=await o.json().catch(()=>null),c=Array.isArray(l==null?void 0:l.message)?l.message.join(", "):(l==null?void 0:l.message)??o.statusText;throw new Af(o.status,c)}if(o.status!==204)return o.json()}function Bf(e){return Gs("/auth/request-otp",{method:"POST",body:JSON.stringify({mobile:e})})}function Uf(e,t){return Gs("/auth/verify-otp",{method:"POST",body:JSON.stringify({mobile:e,code:t})})}function Sf(e){return Gs("/auth/me",{token:e})}const os="montime_access_token",xf=lu("auth",()=>{const e=nn(localStorage.getItem(os)),t=nn(null),n=me(()=>!!e.value),s=me(()=>{var a;return((a=t.value)==null?void 0:a.role)==="admin"}),r=me(()=>{var a;return((a=t.value)==null?void 0:a.role)==="business_owner"}),i=me(()=>{var a;return((a=t.value)==null?void 0:a.role)==="customer"});function o(a,f){e.value=a,t.value=f,localStorage.setItem(os,a)}function l(){e.value=null,t.value=null,localStorage.removeItem(os)}async function c(){if(e.value)try{t.value=await Sf(e.value)}catch{l()}}return{token:e,user:t,isLoggedIn:n,isAdmin:s,isBusinessOwner:r,isCustomer:i,setSession:o,logout:l,loadUser:c}}),wf=bo(),Of=[{path:"/",redirect:"/login"},{path:"/login",name:"login",component:()=>Le(()=>import("./LoginView-cnE1DVdl.js"),__vite__mapDeps([0,1,2])),meta:{guest:!0,shell:"auth"}},{path:"/verify",name:"verify",component:()=>Le(()=>import("./VerifyOtpView-BchF2b9M.js"),__vite__mapDeps([3,1,2])),meta:{guest:!0,shell:"auth"}},{path:"/app",name:"app-home",component:()=>Le(()=>import("./AppHomeView-DRRZFXrJ.js"),__vite__mapDeps([4,5,2])),meta:{requiresAuth:!0,shell:"web"}},{path:"/app/bookings",name:"app-bookings",component:()=>Le(()=>import("./AppBookingsView-c-Kjg5W4.js"),__vite__mapDeps([6,5,2])),meta:{requiresAuth:!0,shell:"web"}},{path:"/app/profile",name:"app-profile",component:()=>Le(()=>import("./AppProfileView-BR-lRiFJ.js"),__vite__mapDeps([7,5,2])),meta:{requiresAuth:!0,shell:"web"}},{path:"/app/owner",name:"app-owner",component:()=>Le(()=>import("./AppOwnerView-B127qc4H.js"),__vite__mapDeps([8,5,2])),meta:{requiresAuth:!0,requiresBusinessOwner:!0,shell:"web"}},{path:"/home",redirect:"/app"}],Cf=[{path:"/",redirect:"/admin/login"},{path:"/admin/login",name:"admin-login",component:()=>Le(()=>import("./LoginView-cnE1DVdl.js"),__vite__mapDeps([0,1,2])),meta:{guest:!0,shell:"auth",adminAuth:!0}},{path:"/admin/verify",name:"admin-verify",component:()=>Le(()=>import("./VerifyOtpView-BchF2b9M.js"),__vite__mapDeps([3,1,2])),meta:{guest:!0,shell:"auth",adminAuth:!0}},{path:"/admin",name:"admin-home",component:()=>Le(()=>import("./AdminHomeView-_UXcBUiF.js"),__vite__mapDeps([9,10,2])),meta:{requiresAuth:!0,requiresAdmin:!0,shell:"admin"}},{path:"/admin/businesses",name:"admin-businesses",component:()=>Le(()=>import("./AdminBusinessesView-BaBO_hK6.js"),__vite__mapDeps([11,10,2])),meta:{requiresAuth:!0,requiresAdmin:!0,shell:"admin"}},{path:"/admin/users",name:"admin-users",component:()=>Le(()=>import("./AdminUsersView-BvzKFP7Z.js"),__vite__mapDeps([12,10,2])),meta:{requiresAuth:!0,requiresAdmin:!0,shell:"admin"}}],Eo=bf({history:Qu(),routes:wf==="admin"?Cf:Of});Eo.beforeEach(async e=>{const t=xf(),n=bo();if(t.token&&!t.user&&await t.loadUser(),e.meta.requiresAuth&&!t.isLoggedIn)return n==="admin"?{name:"admin-login"}:{name:"login"};if(e.meta.requiresAdmin&&!t.isAdmin)return n==="admin"?{name:"admin-login"}:{name:"login"};if(e.meta.requiresBusinessOwner&&!t.isBusinessOwner&&!t.isAdmin)return{name:"app-home"};if(e.meta.guest&&t.isLoggedIn)return e.meta.adminAuth?t.isAdmin?{name:"admin-home"}:void 0:{name:"app-home"};if(n==="admin"&&t.isLoggedIn&&!t.isAdmin&&!e.meta.guest)return t.logout(),{name:"admin-login"}});const Ws=Xc(au);Ws.use(tu());Ws.use(Eo);Ws.mount("#app");export{Af as A,Fl as B,tl as C,Mo as D,Tf as E,De as F,Pf as G,gt as H,xf as I,Hf as J,Vf as K,Uf as L,Jt as M,Nf as N,gl as O,jf as P,cu as _,Qi as a,wn as b,me as c,Ff as d,Lf as e,pc as f,we as g,If as h,wi as i,bo as j,Xi as k,ti as l,ml as m,Me as n,gc as o,Ms as p,ws as q,Ol as r,Lo as s,Ii as t,Sn as u,fs as v,nn as w,Df as x,Mf as y,Bf as z}; diff --git a/dist-admin/assets/index-bUNY5WyE.css b/dist-admin/assets/index-bUNY5WyE.css new file mode 100644 index 0000000..07fe759 --- /dev/null +++ b/dist-admin/assets/index-bUNY5WyE.css @@ -0,0 +1 @@ +*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Vazirmatn,ui-sans-serif,system-ui,sans-serif;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}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background-color:var(--color-surface-2);font-family:Vazirmatn,ui-sans-serif,system-ui,sans-serif;color:var(--color-text)}#app{min-height:100dvh}.sticky{position:sticky}.bottom-0{bottom:0}.top-0{top:0}.z-10{z-index:10}.mx-auto{margin-left:auto;margin-right:auto}.mb-4{margin-bottom:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.h-10{height:2.5rem}.min-h-dvh{min-height:100dvh}.w-10{width:2.5rem}.w-full{width:100%}.max-w-app{max-width:768px}.flex-1{flex:1 1 0%}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * 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))}.rounded-2xl{border-radius:1rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-500\/30{border-color:#f59e0b4d}.border-border{border-color:var(--color-border)}.border-brand-500\/40{border-color:#22c55e66}.border-red-500\/30{border-color:#ef44444d}.bg-amber-500\/15{background-color:#f59e0b26}.bg-brand-500\/10{background-color:#22c55e1a}.bg-brand-500\/15{background-color:#22c55e26}.bg-brand-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-500\/15{background-color:#ef444426}.bg-surface{background-color:var(--color-surface)}.bg-surface-2{background-color:var(--color-surface-2)}.bg-transparent{background-color:transparent}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-8{padding-bottom:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.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}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-brand-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted{color:var(--color-muted)}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-text{color:var(--color-text)}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.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)}.shadow-black\/5{--tw-shadow-color: rgb(0 0 0 / .05);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.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}:root{--color-surface: #ffffff;--color-surface-2: #f8fafc;--color-surface-3: #f1f5f9;--color-border: #e2e8f0;--color-text: #0f172a;--color-muted: #64748b}.dark{--color-surface: #0f1419;--color-surface-2: #1a2332;--color-surface-3: #243044;--color-border: #334155;--color-text: #f1f5f9;--color-muted: #94a3b8}.placeholder\:text-muted::-moz-placeholder{color:var(--color-muted)}.placeholder\:text-muted::placeholder{color:var(--color-muted)}.hover\:bg-brand-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-red-500\/25:hover{background-color:#ef444440}.hover\:bg-surface-3:hover{background-color:var(--color-surface-3)}.hover\:text-text:hover{color:var(--color-text)}.focus\:border-brand-500:focus{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.focus\:ring-2: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)}.focus\:ring-brand-500\/30:focus{--tw-ring-color: rgb(34 197 94 / .3)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-brand-500:is(.dark *){--tw-text-opacity: 1;color:rgb(34 197 94 / 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\:shadow-black\/30:is(.dark *){--tw-shadow-color: rgb(0 0 0 / .3);--tw-shadow: var(--tw-shadow-colored)}@media(min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}} diff --git a/dist-admin/index.html b/dist-admin/index.html new file mode 100644 index 0000000..0054a6a --- /dev/null +++ b/dist-admin/index.html @@ -0,0 +1,19 @@ + + + + + + مون‌تایم + + + + + + + +
+ + diff --git a/package.json b/package.json index b26adf7..207cabb 100644 --- a/package.json +++ b/package.json @@ -5,12 +5,9 @@ "type": "module", "scripts": { "dev": "vite", - "dev:admin": "vite --port 5174 --mode admin", "build": "vite build", - "build:admin": "vite build --mode admin", - "typecheck": "vue-tsc --noEmit -p tsconfig.app.json", "preview": "vite preview", - "preview:admin": "vite preview --port 5174 --mode admin" + "typecheck": "vue-tsc --noEmit -p tsconfig.app.json" }, "dependencies": { "@vueuse/core": "^12.8.2", diff --git a/src/composables/useAppMode.ts b/src/composables/useAppMode.ts deleted file mode 100644 index 3f42cfd..0000000 --- a/src/composables/useAppMode.ts +++ /dev/null @@ -1,20 +0,0 @@ -export type AppMode = 'web' | 'admin'; - -/** `web` = montime.ir (customers + business owners). `admin` = adm.montime.ir only. */ -export function getAppMode(): AppMode { - const fromEnv = import.meta.env.VITE_APP_MODE as AppMode | undefined; - if (fromEnv === 'web' || fromEnv === 'admin') { - return fromEnv; - } - if (typeof window !== 'undefined') { - const host = window.location.hostname; - if (host === 'adm.montime.ir' || host.startsWith('adm.')) { - return 'admin'; - } - } - return 'web'; -} - -export function useAppMode() { - return { mode: getAppMode(), isAdmin: getAppMode() === 'admin', isWeb: getAppMode() === 'web' }; -} diff --git a/src/layouts/AdminLayout.vue b/src/layouts/AdminLayout.vue deleted file mode 100644 index 1db2758..0000000 --- a/src/layouts/AdminLayout.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - diff --git a/src/router/index.ts b/src/router/index.ts index 876d0e6..bcd40a4 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,103 +1,59 @@ import { createRouter, createWebHistory } from 'vue-router'; -import { getAppMode } from '@/composables/useAppMode'; import { useAuthStore } from '@/stores/auth'; -const mode = getAppMode(); - -const webRoutes = [ - { path: '/', redirect: '/login' }, - { - path: '/login', - name: 'login', - component: () => import('@/views/auth/LoginView.vue'), - meta: { guest: true, shell: 'auth' }, - }, - { - path: '/verify', - name: 'verify', - component: () => import('@/views/auth/VerifyOtpView.vue'), - meta: { guest: true, shell: 'auth' }, - }, - { - path: '/app', - name: 'app-home', - component: () => import('@/views/app/AppHomeView.vue'), - meta: { requiresAuth: true, shell: 'web' }, - }, - { - path: '/app/bookings', - name: 'app-bookings', - component: () => import('@/views/app/AppBookingsView.vue'), - meta: { requiresAuth: true, shell: 'web' }, - }, - { - path: '/app/profile', - name: 'app-profile', - component: () => import('@/views/app/AppProfileView.vue'), - meta: { requiresAuth: true, shell: 'web' }, - }, - { - path: '/app/owner', - name: 'app-owner', - component: () => import('@/views/app/AppOwnerView.vue'), - meta: { requiresAuth: true, requiresBusinessOwner: true, shell: 'web' }, - }, - { path: '/home', redirect: '/app' }, -]; - -const adminRoutes = [ - { path: '/', redirect: '/admin/login' }, - { - path: '/admin/login', - name: 'admin-login', - component: () => import('@/views/auth/LoginView.vue'), - meta: { guest: true, shell: 'auth', adminAuth: true }, - }, - { - path: '/admin/verify', - name: 'admin-verify', - component: () => import('@/views/auth/VerifyOtpView.vue'), - meta: { guest: true, shell: 'auth', adminAuth: true }, - }, - { - path: '/admin', - name: 'admin-home', - component: () => import('@/views/admin/AdminHomeView.vue'), - meta: { requiresAuth: true, requiresAdmin: true, shell: 'admin' }, - }, - { - path: '/admin/businesses', - name: 'admin-businesses', - component: () => import('@/views/admin/AdminBusinessesView.vue'), - meta: { requiresAuth: true, requiresAdmin: true, shell: 'admin' }, - }, - { - path: '/admin/users', - name: 'admin-users', - component: () => import('@/views/admin/AdminUsersView.vue'), - meta: { requiresAuth: true, requiresAdmin: true, shell: 'admin' }, - }, -]; - const router = createRouter({ history: createWebHistory(), - routes: mode === 'admin' ? adminRoutes : webRoutes, + routes: [ + { path: '/', redirect: '/login' }, + { + path: '/login', + name: 'login', + component: () => import('@/views/auth/LoginView.vue'), + meta: { guest: true }, + }, + { + path: '/verify', + name: 'verify', + component: () => import('@/views/auth/VerifyOtpView.vue'), + meta: { guest: true }, + }, + { + path: '/app', + name: 'app-home', + component: () => import('@/views/app/AppHomeView.vue'), + meta: { requiresAuth: true }, + }, + { + path: '/app/bookings', + name: 'app-bookings', + component: () => import('@/views/app/AppBookingsView.vue'), + meta: { requiresAuth: true }, + }, + { + path: '/app/profile', + name: 'app-profile', + component: () => import('@/views/app/AppProfileView.vue'), + meta: { requiresAuth: true }, + }, + { + path: '/app/owner', + name: 'app-owner', + component: () => import('@/views/app/AppOwnerView.vue'), + meta: { requiresAuth: true, requiresBusinessOwner: true }, + }, + { path: '/home', redirect: '/app' }, + ], }); router.beforeEach(async (to) => { const auth = useAuthStore(); - const appMode = getAppMode(); if (auth.token && !auth.user) { await auth.loadUser(); } if (to.meta.requiresAuth && !auth.isLoggedIn) { - return appMode === 'admin' ? { name: 'admin-login' } : { name: 'login' }; - } - - if (to.meta.requiresAdmin && !auth.isAdmin) { - return appMode === 'admin' ? { name: 'admin-login' } : { name: 'login' }; + return { name: 'login' }; } if (to.meta.requiresBusinessOwner && !auth.isBusinessOwner && !auth.isAdmin) { @@ -105,16 +61,8 @@ router.beforeEach(async (to) => { } if (to.meta.guest && auth.isLoggedIn) { - if (to.meta.adminAuth) { - return auth.isAdmin ? { name: 'admin-home' } : undefined; - } return { name: 'app-home' }; } - - if (appMode === 'admin' && auth.isLoggedIn && !auth.isAdmin && !to.meta.guest) { - auth.logout(); - return { name: 'admin-login' }; - } }); export default router; diff --git a/src/views/admin/AdminBusinessesView.vue b/src/views/admin/AdminBusinessesView.vue deleted file mode 100644 index e722987..0000000 --- a/src/views/admin/AdminBusinessesView.vue +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/src/views/admin/AdminHomeView.vue b/src/views/admin/AdminHomeView.vue deleted file mode 100644 index 384946a..0000000 --- a/src/views/admin/AdminHomeView.vue +++ /dev/null @@ -1,20 +0,0 @@ - - - diff --git a/src/views/admin/AdminUsersView.vue b/src/views/admin/AdminUsersView.vue deleted file mode 100644 index 6857cc5..0000000 --- a/src/views/admin/AdminUsersView.vue +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/src/views/auth/LoginView.vue b/src/views/auth/LoginView.vue index 75285d9..8bf3c01 100644 --- a/src/views/auth/LoginView.vue +++ b/src/views/auth/LoginView.vue @@ -1,5 +1,5 @@