refactor(ui): replace modal dialogs with toast/sheet components
Remove DialogVant/NotifyVant and add Toast and Sheet components with useToast, useReveal, and usePageTransition composables. Rework Navigation, RegisterView, and styles across both apps; rebuild dist assets. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
148b99c4a6
commit
c05352d6fd
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
import{d as f,o as v,p as g,c as s,l as e,s as u,g as d,h as p,f as t,F as y,r as P,I as k,b as C,e as b,v as h,K as x,j as B,_ as V}from"./index-BCqN_kGW.js";import{P as w}from"./PageBar-BoJGgEK1.js";import{a as I}from"./Spinner.vue_vue_type_style_index_0_lang-o0RxqQua.js";import{S as N}from"./SectionHead-CI7poNMS.js";import{P as F}from"./ProductCard-D8fC0R-n.js";import"./debounce-CI3IuFRL.js";import"./_commonjsHelpers-Cpj98o6Y.js";import"./SingleProduct-Dr_zxrro.js";import"./cartStore-Dv1yNZnX.js";import"./index-BcbjMvjS.js";import"./classCallCheck-C-pP_Nnj.js";const S={class:"coll"},j={key:0,class:"coll__grid"},q={key:1,class:"coll__empty"},z=f({__name:"CollectionView",setup(E){const l=x(),o=d(!1),n=d([]),m=p(()=>l.query.page||"مجموعه"),c=p(()=>n.value.filter(r=>r.collections.some(a=>a.collectionId===l.params.id)));return v(async()=>{o.value=!0;try{n.value=await g.listProducts()}finally{o.value=!1}}),(r,a)=>{const _=h("container");return t(),s("div",S,[e(w,{title:m.value,"back-to":"search"},null,8,["title"]),e(I,{spinning:o.value,tip:"درحال دریافت اطلاعات"},{default:u(()=>[e(_,{class:"coll__body"},{default:u(()=>[e(N,{title:"محصولات این مجموعه",subtitle:"برای دیدن جزئیات، روی محصول ضربه بزنید"}),c.value.length?(t(),s("div",j,[(t(!0),s(y,null,P(c.value,i=>(t(),B(F,{key:i.id,value:i},null,8,["value"]))),128))])):o.value?b("",!0):(t(),s("section",q,[e(k,{icon:"vuesax-linear:box",size:"26"}),a[0]||(a[0]=C("p",null,"در این مجموعه محصولی ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"])])}}}),O=V(z,[["__scopeId","data-v-727653bd"]]);export{O as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{d as f,o as v,p as g,c as s,l as e,s as u,g as p,h as m,f as t,F as y,r as P,I as k,b as C,e as b,v as h,J as x,j as B,_ as V}from"./index-DdOAzko0.js";import{P as w}from"./PageBar-UORuGSI_.js";import{a as I}from"./Spinner.vue_vue_type_style_index_0_lang-COi5dxox.js";import{S as N}from"./SectionHead-jx9Skmxs.js";import{P as F}from"./ProductCard-DnuRx1wH.js";import"./_commonjsHelpers-Cpj98o6Y.js";import"./SingleProduct-tS2rbNll.js";import"./NotifyVant.vue_vue_type_script_setup_true_lang-CdSmcOPX.js";import"./index-CZBavxxO.js";import"./DialogVant.vue_vue_type_style_index_0_lang-t10n0PaY.js";import"./cartStore-CWXC0lNJ.js";import"./dialogEmpty1-E3h_JfwQ.js";import"./index-D80419dl.js";import"./classCallCheck-Be3RKBBV.js";const S={class:"coll"},j={key:0,class:"coll__grid"},q={key:1,class:"coll__empty"},z=f({__name:"CollectionView",setup(E){const l=x(),o=p(!1),n=p([]),d=m(()=>l.query.page||"مجموعه"),r=m(()=>n.value.filter(i=>i.collections.some(a=>a.collectionId===l.params.id)));return v(async()=>{o.value=!0;try{n.value=await g.listProducts()}finally{o.value=!1}}),(i,a)=>{const _=h("container");return t(),s("div",S,[e(w,{title:d.value,"back-to":"search"},null,8,["title"]),e(I,{spinning:o.value,tip:"درحال دریافت اطلاعات"},{default:u(()=>[e(_,{class:"coll__body"},{default:u(()=>[e(N,{title:"محصولات این مجموعه",subtitle:"برای دیدن جزئیات، روی محصول ضربه بزنید"}),r.value.length?(t(),s("div",j,[(t(!0),s(y,null,P(r.value,c=>(t(),B(F,{key:c.id,value:c},null,8,["value"]))),128))])):o.value?b("",!0):(t(),s("section",q,[e(k,{icon:"vuesax-linear:box",size:"26"}),a[0]||(a[0]=C("p",null,"در این مجموعه محصولی ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"])])}}}),W=V(z,[["__scopeId","data-v-727653bd"]]);export{W as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
.siu__input[data-v-f34bda4b]{display:none}.siu__box[data-v-f34bda4b]{position:relative;width:100%;padding:18px 2px;display:flex;flex-direction:row-reverse;align-items:center;justify-content:flex-end;gap:12px;border:none;border-bottom:1px solid #ECEDEF;background:transparent;font-family:inherit;text-align:right;cursor:pointer;overflow:hidden}.siu__box[data-v-f34bda4b]:disabled{cursor:progress}.siu__box[data-v-f34bda4b]:active{opacity:.75}.is-done .siu__box[data-v-f34bda4b]{border-bottom-color:#16a34a}.is-error .siu__box[data-v-f34bda4b]{border-bottom-color:#dc2626}.siu__preview[data-v-f34bda4b]{width:46px;height:46px;flex:0 0 auto;-o-object-fit:cover;object-fit:cover;border-radius:12px;order:-1}.siu__icon[data-v-f34bda4b]{display:flex;flex:0 0 auto;align-items:center;justify-content:center;width:46px;height:46px;border-radius:12px;background:#fafafa;color:#5b616e;order:-1}.siu__text[data-v-f34bda4b]{flex:1;font-size:13.5px;font-weight:600;color:#14161a}.siu__badge[data-v-f34bda4b]{flex:0 0 auto;display:flex;color:#16a34a}.siu__error[data-v-f34bda4b]{margin:7px 2px 0;font-size:12px;color:#dc2626}.cpf__body[data-v-5eabe55d]{padding-top:84px;padding-bottom:110px}.cpf__lead[data-v-5eabe55d]{margin:4px 0 6px;font-size:13px;color:#5b616e}.cpf__form[data-v-5eabe55d]{display:flex;flex-direction:column}.cpf__error[data-v-5eabe55d]{margin:12px 2px 0;font-size:12.5px;color:#dc2626}.cpf__submit[data-v-5eabe55d]{position:fixed;left:16px;right:16px;bottom:20px;z-index:20;max-width:736px;margin:0 auto;padding:15px;border:none;border-radius:999px;background:#7a1b33;color:#fff;font-family:inherit;font-size:15px;font-weight:700;cursor:pointer}.cpf__submit[data-v-5eabe55d]:disabled{opacity:.6;cursor:progress}.cpf__dialogText[data-v-5eabe55d]{padding:20px;line-height:1.9;text-align:justify;font-size:14px}.cpf__dialogBtn[data-v-5eabe55d]{text-align:center;cursor:pointer}
|
||||
.siu__input[data-v-f34bda4b]{display:none}.siu__box[data-v-f34bda4b]{position:relative;width:100%;padding:18px 2px;display:flex;flex-direction:row-reverse;align-items:center;justify-content:flex-end;gap:12px;border:none;border-bottom:1px solid #ECEDEF;background:transparent;font-family:inherit;text-align:right;cursor:pointer;overflow:hidden}.siu__box[data-v-f34bda4b]:disabled{cursor:progress}.siu__box[data-v-f34bda4b]:active{opacity:.75}.is-done .siu__box[data-v-f34bda4b]{border-bottom-color:#16a34a}.is-error .siu__box[data-v-f34bda4b]{border-bottom-color:#dc2626}.siu__preview[data-v-f34bda4b]{width:46px;height:46px;flex:0 0 auto;-o-object-fit:cover;object-fit:cover;border-radius:12px;order:-1}.siu__icon[data-v-f34bda4b]{display:flex;flex:0 0 auto;align-items:center;justify-content:center;width:46px;height:46px;border-radius:12px;background:#fafafa;color:#5b616e;order:-1}.siu__text[data-v-f34bda4b]{flex:1;font-size:13.5px;font-weight:600;color:#14161a}.siu__badge[data-v-f34bda4b]{flex:0 0 auto;display:flex;color:#16a34a}.siu__error[data-v-f34bda4b]{margin:7px 2px 0;font-size:12px;color:#dc2626}.cpf__body[data-v-51a315f1]{padding-top:84px;padding-bottom:110px}.cpf__lead[data-v-51a315f1]{margin:4px 0 6px;font-size:13px;color:#5b616e}.cpf__form[data-v-51a315f1]{display:flex;flex-direction:column}.cpf__error[data-v-51a315f1]{margin:12px 2px 0;font-size:12.5px;color:#dc2626}.cpf__submit[data-v-51a315f1]{position:fixed;left:16px;right:16px;bottom:20px;z-index:20;max-width:736px;margin:0 auto;padding:15px;border:none;border-radius:999px;background:#7a1b33;color:#fff;font-family:inherit;font-size:15px;font-weight:700;cursor:pointer}.cpf__submit[data-v-51a315f1]:disabled{opacity:.6;cursor:progress}
|
||||
@@ -0,0 +1 @@
|
||||
import{d as B,f as r,c,i as $,b as d,l as t,I as w,t as h,e as x,g as o,p as I,_ as P,s as C,G as S,Z as D,B as U,v as V,x as z,M as R}from"./index-BCqN_kGW.js";import{P as M}from"./PageBar-BoJGgEK1.js";import{a as N}from"./Spinner.vue_vue_type_style_index_0_lang-o0RxqQua.js";import"./debounce-CI3IuFRL.js";import"./_commonjsHelpers-Cpj98o6Y.js";const T=["disabled"],j=["src"],E={key:1,class:"siu__icon"},L={class:"siu__text"},A={key:2,class:"siu__badge"},G={key:0,class:"siu__error"},O=8*1024*1024,W=B({__name:"SingleImageUploader",props:{uploadText:{},purpose:{}},emits:["done"],setup(g,{emit:b}){const a=g,_=b,l=o(null),i=o(!1),n=o(null),u=o(null),m=o(null);async function s(v){var f;const e=v.target,p=(f=e.files)==null?void 0:f[0];if(e.value="",!!p){if(n.value=null,p.size>O){n.value="حجم فایل بیش از حد مجاز است (۸ مگابایت)";return}i.value=!0;try{const k=await I.uploadDocument(p,a.purpose);u.value=k.id,m.value=p.type.startsWith("image/")?URL.createObjectURL(p):null,_("done",k.id)}catch{n.value="بارگذاری انجام نشد. دوباره تلاش کنید.",u.value=null,m.value=null}finally{i.value=!1}}}return(v,e)=>(r(),c("div",{class:$(["siu",{"is-done":!!u.value,"is-error":!!n.value}])},[d("input",{ref_key:"input",ref:l,type:"file",accept:"image/jpeg,image/png,image/webp,application/pdf",class:"siu__input",onChange:s},null,544),d("button",{type:"button",class:"siu__box",disabled:i.value,onClick:e[0]||(e[0]=p=>{var f;return(f=l.value)==null?void 0:f.click()})},[m.value?(r(),c("img",{key:0,src:m.value,class:"siu__preview",alt:""},null,8,j)):(r(),c("span",E,[t(w,{icon:i.value?"vuesax-linear:refresh":"vuesax-linear:gallery-add",size:"26"},null,8,["icon"])])),d("span",L,h(i.value?"در حال بارگذاری…":u.value?"تغییر تصویر":g.uploadText),1),u.value&&!i.value?(r(),c("span",A,[t(w,{icon:"vuesax-linear:tick-circle",size:"16"})])):x("",!0)],8,T),n.value?(r(),c("p",G,h(n.value),1)):x("",!0)],2))}}),y=P(W,[["__scopeId","data-v-f34bda4b"]]),X={class:"cpf"},Y={key:0,class:"cpf__error"},Z=["disabled"],q=B({__name:"CompleteProfileView",setup(g){const b=z(),a=U({business_license_image_id:null,shop_image_id:null,ncode_image_id:null}),_=o(!1),l=o(!1),i=o(null);async function n(){if(i.value=null,!a.business_license_image_id||!a.shop_image_id||!a.ncode_image_id){R.warning("لطفا تمامی عکس های خواسته شده را آپلود کنید");return}_.value=!0;try{await I.completeProfile({business_license_image_id:a.business_license_image_id,shop_image_id:a.shop_image_id,ncode_image_id:a.ncode_image_id}),l.value=!0}catch{i.value="ثبت اطلاعات انجام نشد. دوباره تلاش کنید."}finally{_.value=!1}}function u(){l.value=!1,b.push({name:"home"})}return(m,s)=>{const v=V("container");return r(),c("div",X,[t(M,{title:"تکمیل پروفایل","back-to":"userPage::hasSubRoute"}),t(N,{spinning:_.value,tip:"در حال ثبت اطلاعات"},{default:C(()=>[t(v,{class:"cpf__body"},{default:C(()=>[s[4]||(s[4]=d("p",{class:"cpf__lead"}," برای تکمیل پروفایل، سه مدرک زیر را بارگذاری کنید. ",-1)),d("form",{class:"cpf__form",onSubmit:D(n,["prevent"])},[t(y,{"upload-text":"بارگذاری عکس جواز کسب",purpose:"business-license",onDone:s[0]||(s[0]=e=>a.business_license_image_id=e)}),t(y,{"upload-text":"بارگذاری عکس سردر مغازه",purpose:"shop-image",onDone:s[1]||(s[1]=e=>a.shop_image_id=e)}),t(y,{"upload-text":"بارگذاری عکس کارت ملی",purpose:"national-card",onDone:s[2]||(s[2]=e=>a.ncode_image_id=e)}),i.value?(r(),c("p",Y,h(i.value),1)):x("",!0),d("button",{type:"submit",class:"cpf__submit",disabled:_.value}," بارگذاری اطلاعات ",8,Z)],32)]),_:1})]),_:1},8,["spinning"]),t(S,{show:l.value,"onUpdate:show":s[3]||(s[3]=e=>l.value=e),art:"success",title:"تکمیل اطلاعات شما با موفقیت انجام شد.",description:"مدارک شما با موفقیت بارگذاری شد.","confirm-text":"متوجه شدم","close-on-click-overlay":!1,onConfirm:u},null,8,["show"])])}}}),ee=P(q,[["__scopeId","data-v-51a315f1"]]);export{ee as default};
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
import{d as z,o as S,c,l as a,s as d,u as w,g as r,p as N,f as i,b as s,F as P,r as B,I as u,t as o,e as m,v as D,i as F,_ as I}from"./index-DdOAzko0.js";import{P as E}from"./PageBar-UORuGSI_.js";import{a as R}from"./Spinner.vue_vue_type_style_index_0_lang-COi5dxox.js";import{S as $}from"./SearchInput-Br8MMFP9.js";import{D as U}from"./index-D80419dl.js";import{P as L}from"./index-khBjLChH.js";import"./_commonjsHelpers-Cpj98o6Y.js";import"./classCallCheck-Be3RKBBV.js";const M={class:"cch"},O={class:"cch__barExtra"},T={key:0,class:"cch__list"},j=["onClick"],q={class:"cch__head"},A={class:"cch__name"},G={class:"cch__facts"},H={class:"cch__fact"},J={dir:"ltr"},K={class:"cch__fact"},Q={dir:"ltr"},W={key:0,class:"cch__fact"},X={key:1,class:"cch__empty"},Y={key:2,class:"cch__empty"},Z={key:0,class:"cch__detail"},ss={class:"cch__detailTitle"},es={class:"cch__rows"},ts={class:"cch__row"},os={dir:"ltr"},as={class:"cch__row"},ls={dir:"ltr"},ns={class:"cch__row"},cs={class:"cch__row"},is={class:"cch__row"},rs={dir:"ltr"},_s={class:"cch__row"},ds={dir:"ltr"},us={class:"cch__row"},vs=z({__name:"CustomerChoiceView",setup(hs){const _=r([]),v=r(!1),y=r(!1),h=r(!1),b=r(null),p=r(!1),l=r(null);function g(n){const e=Number(n??0);return Number.isFinite(e)?e.toFixed(3):"0.000"}async function f(){v.value=!0,h.value=!1;try{_.value=await N.getExpertCustomers(b.value)}catch{h.value=!0,_.value=[]}finally{v.value=!1}}async function C(n){b.value=n!=null&&n.trim()?n.trim():null,await f()}async function k(){await f(),y.value=!1}function x(n){l.value=n,p.value=!0}return S(f),(n,e)=>{const V=D("container");return i(),c("div",M,[a(E,{title:"لیست مشتریان","back-to":"userPage::hasSubRoute"},{below:d(()=>[s("div",O,[a($,{onSearch:C,"place-holder":"جستجو"})])]),_:1}),a(R,{spinning:v.value&&!_.value.length,tip:"درحال دریافت اطلاعات"},{default:d(()=>[a(w(L),{modelValue:y.value,"onUpdate:modelValue":e[0]||(e[0]=t=>y.value=t),onRefresh:k},{default:d(()=>[a(V,{class:"cch__body"},{default:d(()=>[_.value.length?(i(),c("div",T,[(i(!0),c(P,null,B(_.value,t=>(i(),c("article",{key:t.id,class:"cch__card",onClick:ps=>x(t)},[s("div",q,[s("h3",A,o(t.name),1),s("span",{class:F(["cch__state",t.active===1?"is-on":"is-off"])},o(t.active===1?"فعال":"غیرفعال"),3)]),s("div",G,[s("div",H,[a(u,{icon:"vuesax-linear:mobile",size:"15"}),s("span",J,o(t.mobile||"—"),1)]),s("div",K,[a(u,{icon:"vuesax-linear:call",size:"15"}),s("span",Q,o(t.phone||"—"),1)]),t.store_name?(i(),c("div",W,[a(u,{icon:"vuesax-linear:shop",size:"15"}),s("span",null,o(t.store_name),1)])):m("",!0)])],8,j))),128))])):!v.value&&!h.value?(i(),c("section",X,[a(u,{icon:"vuesax-linear:profile-2user",size:"26"}),s("p",null,o(b.value?"مشتری با این مشخصات پیدا نشد.":"هنوز مشتریای به شما معرفی نشده است."),1)])):m("",!0),h.value?(i(),c("section",Y,[a(u,{icon:"vuesax-linear:danger",size:"26"}),e[3]||(e[3]=s("p",null,"دریافت اطلاعات با خطا روبهرو شد.",-1)),s("button",{type:"button",class:"cch__retry",onClick:f},"تلاش دوباره")])):m("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["spinning"]),a(w(U),{open:p.value,"onUpdate:open":e[2]||(e[2]=t=>p.value=t),placement:"bottom",height:"auto",closable:!1,"body-style":{padding:"0"}},{default:d(()=>[l.value?(i(),c("div",Z,[s("h2",ss,o(l.value.name),1),s("dl",es,[s("div",ts,[e[4]||(e[4]=s("dt",null,"موبایل",-1)),s("dd",os,o(l.value.mobile||"—"),1)]),s("div",as,[e[5]||(e[5]=s("dt",null,"تلفن",-1)),s("dd",ls,o(l.value.phone||"—"),1)]),s("div",ns,[e[6]||(e[6]=s("dt",null,"نام مغازه",-1)),s("dd",null,o(l.value.store_name||"—"),1)]),s("div",cs,[e[7]||(e[7]=s("dt",null,"نام پاساژ",-1)),s("dd",null,o(l.value.pasazh_name||"—"),1)]),s("div",is,[e[8]||(e[8]=s("dt",null,"سقف اعتبار",-1)),s("dd",rs,o(g(l.value.gram_level))+" گرم",1)]),s("div",_s,[e[9]||(e[9]=s("dt",null,"بدهی گرمی",-1)),s("dd",ds,o(g(l.value.remain))+" گرم",1)]),s("div",us,[e[10]||(e[10]=s("dt",null,"وضعیت",-1)),s("dd",null,o(l.value.active===1?"فعال":"غیرفعال"),1)])]),s("button",{type:"button",class:"cch__close",onClick:e[1]||(e[1]=t=>p.value=!1)},"بستن")])):m("",!0)]),_:1},8,["open"])])}}}),xs=I(vs,[["__scopeId","data-v-3d664b77"]]);export{xs as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{d as z,o as S,c,l as a,s as d,u as w,g as r,p as N,f as i,b as s,F as P,r as B,I as u,t as o,e as f,v as D,i as F,_ as I}from"./index-BCqN_kGW.js";import{P as E}from"./PageBar-BoJGgEK1.js";import{a as R}from"./Spinner.vue_vue_type_style_index_0_lang-o0RxqQua.js";import{S as $}from"./SearchInput-CdNj46iq.js";import{D as U}from"./index-BcbjMvjS.js";import{P as L}from"./index-G4cUpCve.js";import"./debounce-CI3IuFRL.js";import"./_commonjsHelpers-Cpj98o6Y.js";import"./classCallCheck-C-pP_Nnj.js";const M={class:"cch"},O={class:"cch__barExtra"},T={key:0,class:"cch__list"},j=["onClick"],q={class:"cch__head"},A={class:"cch__name"},G={class:"cch__facts"},H={class:"cch__fact"},J={dir:"ltr"},K={class:"cch__fact"},Q={dir:"ltr"},W={key:0,class:"cch__fact"},X={key:1,class:"cch__empty"},Y={key:2,class:"cch__empty"},Z={key:0,class:"cch__detail"},ss={class:"cch__detailTitle"},es={class:"cch__rows"},ts={class:"cch__row"},os={dir:"ltr"},as={class:"cch__row"},ls={dir:"ltr"},ns={class:"cch__row"},cs={class:"cch__row"},is={class:"cch__row"},rs={dir:"ltr"},_s={class:"cch__row"},ds={dir:"ltr"},us={class:"cch__row"},vs=z({__name:"CustomerChoiceView",setup(hs){const _=r([]),v=r(!1),y=r(!1),h=r(!1),b=r(null),p=r(!1),l=r(null);function g(n){const e=Number(n??0);return Number.isFinite(e)?e.toFixed(3):"0.000"}async function m(){v.value=!0,h.value=!1;try{_.value=await N.getExpertCustomers(b.value)}catch{h.value=!0,_.value=[]}finally{v.value=!1}}async function C(n){b.value=n!=null&&n.trim()?n.trim():null,await m()}async function k(){await m(),y.value=!1}function x(n){l.value=n,p.value=!0}return S(m),(n,e)=>{const V=D("container");return i(),c("div",M,[a(E,{title:"لیست مشتریان","back-to":"userPage::hasSubRoute"},{below:d(()=>[s("div",O,[a($,{onSearch:C,"place-holder":"جستجو"})])]),_:1}),a(R,{spinning:v.value&&!_.value.length,tip:"درحال دریافت اطلاعات"},{default:d(()=>[a(w(L),{modelValue:y.value,"onUpdate:modelValue":e[0]||(e[0]=t=>y.value=t),onRefresh:k},{default:d(()=>[a(V,{class:"cch__body"},{default:d(()=>[_.value.length?(i(),c("div",T,[(i(!0),c(P,null,B(_.value,t=>(i(),c("article",{key:t.id,class:"cch__card",onClick:ps=>x(t)},[s("div",q,[s("h3",A,o(t.name),1),s("span",{class:F(["cch__state",t.active===1?"is-on":"is-off"])},o(t.active===1?"فعال":"غیرفعال"),3)]),s("div",G,[s("div",H,[a(u,{icon:"vuesax-linear:mobile",size:"15"}),s("span",J,o(t.mobile||"—"),1)]),s("div",K,[a(u,{icon:"vuesax-linear:call",size:"15"}),s("span",Q,o(t.phone||"—"),1)]),t.store_name?(i(),c("div",W,[a(u,{icon:"vuesax-linear:shop",size:"15"}),s("span",null,o(t.store_name),1)])):f("",!0)])],8,j))),128))])):!v.value&&!h.value?(i(),c("section",X,[a(u,{icon:"vuesax-linear:profile-2user",size:"26"}),s("p",null,o(b.value?"مشتری با این مشخصات پیدا نشد.":"هنوز مشتریای به شما معرفی نشده است."),1)])):f("",!0),h.value?(i(),c("section",Y,[a(u,{icon:"vuesax-linear:danger",size:"26"}),e[3]||(e[3]=s("p",null,"دریافت اطلاعات با خطا روبهرو شد.",-1)),s("button",{type:"button",class:"cch__retry",onClick:m},"تلاش دوباره")])):f("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["spinning"]),a(w(U),{open:p.value,"onUpdate:open":e[2]||(e[2]=t=>p.value=t),placement:"bottom",height:"auto",closable:!1,"body-style":{padding:"0"}},{default:d(()=>[l.value?(i(),c("div",Z,[s("h2",ss,o(l.value.name),1),s("dl",es,[s("div",ts,[e[4]||(e[4]=s("dt",null,"موبایل",-1)),s("dd",os,o(l.value.mobile||"—"),1)]),s("div",as,[e[5]||(e[5]=s("dt",null,"تلفن",-1)),s("dd",ls,o(l.value.phone||"—"),1)]),s("div",ns,[e[6]||(e[6]=s("dt",null,"نام مغازه",-1)),s("dd",null,o(l.value.store_name||"—"),1)]),s("div",cs,[e[7]||(e[7]=s("dt",null,"نام پاساژ",-1)),s("dd",null,o(l.value.pasazh_name||"—"),1)]),s("div",is,[e[8]||(e[8]=s("dt",null,"سقف اعتبار",-1)),s("dd",rs,o(g(l.value.gram_level))+" گرم",1)]),s("div",_s,[e[9]||(e[9]=s("dt",null,"بدهی گرمی",-1)),s("dd",ds,o(g(l.value.remain))+" گرم",1)]),s("div",us,[e[10]||(e[10]=s("dt",null,"وضعیت",-1)),s("dd",null,o(l.value.active===1?"فعال":"غیرفعال"),1)])]),s("button",{type:"button",class:"cch__close",onClick:e[1]||(e[1]=t=>p.value=!1)},"بستن")])):f("",!0)]),_:1},8,["open"])])}}}),Vs=I(vs,[["__scopeId","data-v-3d664b77"]]);export{Vs as default};
|
||||
@@ -1 +0,0 @@
|
||||
.dash[data-v-0183721d]{background:#fff;min-height:100vh}.dash__bar[data-v-0183721d]{position:fixed;top:0;left:0;right:0;z-index:20;background:#ffffffd1;-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);border-bottom:1px solid rgba(28,45,86,.05);box-shadow:0 8px 20px -18px #1c2d568c}.dash__barInner[data-v-0183721d]{max-width:768px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.dash__brand[data-v-0183721d]{font-size:14.5px;font-weight:800;color:#14161a}.dash__exit[data-v-0183721d]{flex:0 0 auto;width:34px;height:34px;border:0;cursor:pointer;border-radius:11px;display:grid;place-items:center;color:#7a1b33;background:#fbf2f4;transition:transform .18s ease}.dash__exit[data-v-0183721d]:active{transform:scale(.92)}.dash__body[data-v-0183721d]{padding-top:58px;padding-bottom:90px}.dash__reveal[data-v-0183721d]{opacity:0;transform:translate3d(0,14px,0) scale(.98);will-change:transform,opacity}.is-revealed .dash__reveal[data-v-0183721d]{opacity:1;transform:translateZ(0) scale(1);transition:opacity .62s cubic-bezier(.32,.72,0,1) var(--reveal-delay, 0ms),transform .62s cubic-bezier(.32,.72,0,1) var(--reveal-delay, 0ms)}@media (prefers-reduced-motion: reduce){.dash__reveal[data-v-0183721d]{opacity:1;transform:none}.is-revealed .dash__reveal[data-v-0183721d]{transition:none}}.dash__hero[data-v-0183721d]{margin-top:16px;margin-bottom:28px;padding:20px 18px 16px;border-radius:26px;background:linear-gradient(155deg,#14161a,#14161a 55%,#5e1427 130%);color:#fff;box-shadow:0 22px 40px -26px #14161a52}.dash__heroTop[data-v-0183721d]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.dash__heroIdentity[data-v-0183721d]{display:flex;flex-direction:column;gap:3px;min-width:0}.dash__heroName[data-v-0183721d]{font-size:13.5px;font-weight:800}.dash__heroMobile[data-v-0183721d]{font-size:11px;color:#ffffff8c;direction:ltr;text-align:right}.dash__heroSeal[data-v-0183721d]{flex:0 0 auto;padding:5px 12px;border-radius:999px;font-size:10.5px;font-weight:700}.dash__heroSeal.is-debtor[data-v-0183721d]{color:#fff;background:#a33c55}.dash__heroSeal.is-creditor[data-v-0183721d]{color:#14161a;background:#ffffffe6}.dash__heroFigure[data-v-0183721d]{margin-top:20px;display:flex;align-items:baseline;gap:8px}.dash__heroNum[data-v-0183721d]{font-size:34px;font-weight:800;letter-spacing:-.5px}.dash__heroUnit[data-v-0183721d]{font-size:12px;font-weight:600;color:#ffffff9e}.dash__heroDebt[data-v-0183721d]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;padding-top:13px;border-top:1px solid rgba(255,255,255,.14);font-size:11.5px;color:#ffffff9e}.dash__heroDebt b[data-v-0183721d]{font-size:13px;font-weight:700;color:#fff}.dash__heroDebt i[data-v-0183721d]{font-style:normal;font-size:10.5px;font-weight:600;color:#ffffff9e;padding-inline-start:3px}.dash__invite[data-v-0183721d]{margin-top:16px;padding:26px 20px;border-radius:26px;background:#14161a;color:#fff;display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px}.dash__inviteIcon[data-v-0183721d]{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:#ffffff1a;margin-bottom:2px}.dash__invite h3[data-v-0183721d]{margin:0;font-size:14px;font-weight:800}.dash__invite p[data-v-0183721d]{margin:0;font-size:11.5px;color:#fff9;max-width:240px}.dash__inviteCta[data-v-0183721d]{margin-top:6px;padding:10px 22px;border:0;cursor:pointer;border-radius:999px;font-family:inherit;font-size:12px;font-weight:700;color:#14161a;background:#fff;transition:transform .18s ease}.dash__inviteCta[data-v-0183721d]:active{transform:scale(.96)}.dash__rows[data-v-0183721d]{margin-top:0;display:flex;flex-direction:column;gap:9px}.dash__row[data-v-0183721d]{display:flex;align-items:center;gap:12px;padding:13px 14px;border:1px solid #ECEDEF;border-radius:17px;cursor:pointer;background:#fff;font-family:inherit;text-align:right;transition:transform .18s ease,border-color .18s ease}.dash__row[data-v-0183721d]:active{transform:scale(.985);border-color:#7a1b3333}.dash__rowIcon[data-v-0183721d]{flex:0 0 auto;width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:#7a1b33;background:#fbf2f4}.dash__rowText[data-v-0183721d]{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.dash__rowText b[data-v-0183721d]{font-size:12.5px;font-weight:700;color:#14161a}.dash__rowText small[data-v-0183721d]{font-size:10.5px;color:#8a909c}.dash__rate[data-v-0183721d]{margin-top:14px}
|
||||
@@ -0,0 +1 @@
|
||||
.dash[data-v-0a56b0c5]{background:#fff;min-height:100vh}.dash__bar[data-v-0a56b0c5]{position:fixed;top:0;left:0;right:0;z-index:20;background:#ffffffd1;-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);border-bottom:1px solid rgba(28,45,86,.05);box-shadow:0 8px 20px -18px #1c2d568c}.dash__barInner[data-v-0a56b0c5]{max-width:768px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.dash__brand[data-v-0a56b0c5]{font-size:14.5px;font-weight:800;color:#14161a}.dash__exit[data-v-0a56b0c5]{flex:0 0 auto;width:34px;height:34px;border:0;cursor:pointer;border-radius:11px;display:grid;place-items:center;color:#7a1b33;background:#fbf2f4;transition:transform .18s ease}.dash__exit[data-v-0a56b0c5]:active{transform:scale(.92)}.dash__body[data-v-0a56b0c5]{padding-top:58px;padding-bottom:90px}.dash__reveal[data-v-0a56b0c5]{opacity:0;transform:translate3d(0,14px,0) scale(.98);will-change:transform,opacity}.is-revealed .dash__reveal[data-v-0a56b0c5]{opacity:1;transform:translateZ(0) scale(1);transition:opacity .62s cubic-bezier(.32,.72,0,1) var(--reveal-delay, 0ms),transform .62s cubic-bezier(.32,.72,0,1) var(--reveal-delay, 0ms)}@media (prefers-reduced-motion: reduce){.dash__reveal[data-v-0a56b0c5]{opacity:1;transform:none}.is-revealed .dash__reveal[data-v-0a56b0c5]{transition:none}}.dash__hero[data-v-0a56b0c5]{margin-top:16px;margin-bottom:28px;padding:20px 18px 16px;border-radius:26px;background:linear-gradient(155deg,#14161a,#14161a 55%,#5e1427 130%);color:#fff;box-shadow:0 22px 40px -26px #14161a52}.dash__heroTop[data-v-0a56b0c5]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.dash__heroIdentity[data-v-0a56b0c5]{display:flex;flex-direction:column;gap:3px;min-width:0}.dash__heroName[data-v-0a56b0c5]{font-size:13.5px;font-weight:800}.dash__heroMobile[data-v-0a56b0c5]{font-size:11px;color:#ffffff8c;direction:ltr;text-align:right}.dash__heroSeal[data-v-0a56b0c5]{flex:0 0 auto;padding:5px 12px;border-radius:999px;font-size:10.5px;font-weight:700}.dash__heroSeal.is-debtor[data-v-0a56b0c5]{color:#fff;background:#a33c55}.dash__heroSeal.is-creditor[data-v-0a56b0c5]{color:#14161a;background:#ffffffe6}.dash__heroFigure[data-v-0a56b0c5]{margin-top:20px;display:flex;align-items:baseline;gap:8px}.dash__heroNum[data-v-0a56b0c5]{font-size:34px;font-weight:800;letter-spacing:-.5px}.dash__heroUnit[data-v-0a56b0c5]{font-size:12px;font-weight:600;color:#ffffff9e}.dash__heroDebt[data-v-0a56b0c5]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;padding-top:13px;border-top:1px solid rgba(255,255,255,.14);font-size:11.5px;color:#ffffff9e}.dash__heroDebt b[data-v-0a56b0c5]{font-size:13px;font-weight:700;color:#fff}.dash__heroDebt i[data-v-0a56b0c5]{font-style:normal;font-size:10.5px;font-weight:600;color:#ffffff9e;padding-inline-start:3px}.dash__invite[data-v-0a56b0c5]{margin-top:16px;padding:26px 20px;border-radius:26px;background:#14161a;color:#fff;display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px}.dash__inviteIcon[data-v-0a56b0c5]{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:#ffffff1a;margin-bottom:2px}.dash__invite h3[data-v-0a56b0c5]{margin:0;font-size:14px;font-weight:800}.dash__invite p[data-v-0a56b0c5]{margin:0;font-size:11.5px;color:#fff9;max-width:240px}.dash__inviteCta[data-v-0a56b0c5]{margin-top:6px;padding:10px 22px;border:0;cursor:pointer;border-radius:999px;font-family:inherit;font-size:12px;font-weight:700;color:#14161a;background:#fff;transition:transform .18s ease}.dash__inviteCta[data-v-0a56b0c5]:active{transform:scale(.96)}.dash__rows[data-v-0a56b0c5]{margin-top:0;display:flex;flex-direction:column;gap:9px}.dash__row[data-v-0a56b0c5]{display:flex;align-items:center;gap:12px;padding:13px 14px;border:1px solid #ECEDEF;border-radius:17px;cursor:pointer;background:#fff;font-family:inherit;text-align:right;transition:transform .18s ease,border-color .18s ease}.dash__row[data-v-0a56b0c5]:active{transform:scale(.985);border-color:#7a1b3333}.dash__rowIcon[data-v-0a56b0c5]{flex:0 0 auto;width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:#7a1b33;background:#fbf2f4}.dash__rowText[data-v-0a56b0c5]{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.dash__rowText b[data-v-0a56b0c5]{font-size:12.5px;font-weight:700;color:#14161a}.dash__rowText small[data-v-0a56b0c5]{font-size:10.5px;color:#8a909c}.dash__rate[data-v-0a56b0c5]{margin-top:14px}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.van-dialog__confirm,.van-dialog__cancel{display:none!important}.mDialog.van-dialog{width:min(320px,calc(100vw - 48px));border-radius:26px;background:#fff;box-shadow:0 30px 60px -24px #14161a73;overflow:hidden}.mDialog__body{padding:26px 22px 20px;display:flex;flex-direction:column;align-items:center;text-align:center}.mDialog__art{width:84px;height:84px;border-radius:50%;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#fbf2f4;margin-bottom:18px}.mDialog__art img,.mDialog__art svg,.mDialog__art canvas{width:56px;height:56px;-o-object-fit:contain;object-fit:contain;opacity:1!important}.mDialog__title{font-size:14.5px;font-weight:700;line-height:1.9;color:#14161a}.mDialog__actions{width:100%;display:flex;flex-direction:column;gap:9px;margin-top:22px;font-size:13px;font-weight:700}.mDialog__actions>*{padding:12px;border-radius:14px;cursor:pointer;transition:transform .18s ease,opacity .18s ease}.mDialog__actions>*:active{transform:scale(.97)}.mDialog__actions>*:first-child{color:#fff!important;background:#14161a}.mDialog__actions>*:last-child{color:#8a909c!important;background:none}
|
||||
-1
@@ -1 +0,0 @@
|
||||
import{d as l,j as n,s as c,u as _,ao as d,f as r,b as t,A as a,D as o,t as i}from"./index-DdOAzko0.js";const m={class:"mDialog__body"},g={class:"mDialog__art"},D={class:"mDialog__title"},u={class:"mDialog__actions"},h=l({__name:"DialogVant",props:{timeOut:{},text1:{},text2:{},text3:{}},setup(s){return(e,x)=>(r(),n(_(d),{class:"mDialog"},{default:c(()=>[t("div",m,[t("div",g,[a(e.$slots,"img",{},()=>[o(i(s.text2),1)])]),t("div",D,[a(e.$slots,"title",{},()=>[o(i(s.text1),1)])]),t("div",u,[a(e.$slots,"button",{},()=>[o(i(s.text3),1)])])])]),_:3}))}});export{h as _};
|
||||
@@ -0,0 +1 @@
|
||||
import{d as f,o as b,p as g,c as o,l as e,s as c,g as p,f as t,F as m,b as i,r as y,I as h,u as k,e as P,x as C,h as x,v as F,j as B,_ as V}from"./index-BCqN_kGW.js";import{P as w}from"./PageBar-BoJGgEK1.js";import{a as S}from"./Spinner.vue_vue_type_style_index_0_lang-o0RxqQua.js";import{S as I}from"./SectionHead-CI7poNMS.js";import{P as N}from"./ProductCard-D8fC0R-n.js";import{a as $}from"./SingleProduct-Dr_zxrro.js";import"./debounce-CI3IuFRL.js";import"./_commonjsHelpers-Cpj98o6Y.js";import"./cartStore-Dv1yNZnX.js";import"./index-BcbjMvjS.js";import"./classCallCheck-C-pP_Nnj.js";const R={class:"favs"},j={class:"favs__grid"},z={key:1,class:"favs__empty"},E=f({__name:"FavoritesView",setup(H){const d=C(),v=$(),a=p(!1),l=p([]),r=x(()=>l.value.filter(u=>v.isFavorite(u.id)));return b(async()=>{a.value=!0;try{l.value=await g.listProducts()}finally{a.value=!1}}),(u,s)=>{const _=F("container");return t(),o("div",R,[e(w,{title:"علاقهمندی","back-to":"userPage::hasSubRoute"}),e(S,{spinning:a.value,tip:"در حال دریافت اطلاعات"},{default:c(()=>[e(_,{class:"favs__body"},{default:c(()=>[r.value.length?(t(),o(m,{key:0},[e(I,{title:"ذخیرهشدهها",subtitle:`${r.value.length} محصول`},null,8,["subtitle"]),i("div",j,[(t(!0),o(m,null,y(r.value,n=>(t(),B(N,{key:n.id,value:n},null,8,["value"]))),128))])],64)):a.value?P("",!0):(t(),o("section",z,[e(h,{icon:"vuesax-linear:heart",size:"26"}),s[1]||(s[1]=i("p",null,"هنوز محصولی را به علاقهمندیها اضافه نکردهاید.",-1)),i("button",{type:"button",class:"favs__emptyCta",onClick:s[0]||(s[0]=n=>k(d).push({name:"home"}))}," دیدن محصولات ")]))]),_:1})]),_:1},8,["spinning"])])}}}),U=V(E,[["__scopeId","data-v-2bb5436a"]]);export{U as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{d as f,o as b,p as g,c as o,l as e,s as c,g as p,f as t,F as m,b as i,r as y,I as h,u as k,e as P,x as C,h as x,v as F,j as B,_ as V}from"./index-DdOAzko0.js";import{P as w}from"./PageBar-UORuGSI_.js";import{a as S}from"./Spinner.vue_vue_type_style_index_0_lang-COi5dxox.js";import{S as I}from"./SectionHead-jx9Skmxs.js";import{P as N}from"./ProductCard-DnuRx1wH.js";import{a as $}from"./SingleProduct-tS2rbNll.js";import"./_commonjsHelpers-Cpj98o6Y.js";import"./cartStore-CWXC0lNJ.js";import"./index-D80419dl.js";import"./classCallCheck-Be3RKBBV.js";import"./NotifyVant.vue_vue_type_script_setup_true_lang-CdSmcOPX.js";import"./index-CZBavxxO.js";import"./DialogVant.vue_vue_type_style_index_0_lang-t10n0PaY.js";import"./dialogEmpty1-E3h_JfwQ.js";const R={class:"favs"},j={class:"favs__grid"},z={key:1,class:"favs__empty"},E=f({__name:"FavoritesView",setup(H){const d=C(),v=$(),a=p(!1),l=p([]),r=x(()=>l.value.filter(u=>v.isFavorite(u.id)));return b(async()=>{a.value=!0;try{l.value=await g.listProducts()}finally{a.value=!1}}),(u,s)=>{const _=F("container");return t(),o("div",R,[e(w,{title:"علاقهمندی","back-to":"userPage::hasSubRoute"}),e(S,{spinning:a.value,tip:"در حال دریافت اطلاعات"},{default:c(()=>[e(_,{class:"favs__body"},{default:c(()=>[r.value.length?(t(),o(m,{key:0},[e(I,{title:"ذخیرهشدهها",subtitle:`${r.value.length} محصول`},null,8,["subtitle"]),i("div",j,[(t(!0),o(m,null,y(r.value,n=>(t(),B(N,{key:n.id,value:n},null,8,["value"]))),128))])],64)):a.value?P("",!0):(t(),o("section",z,[e(h,{icon:"vuesax-linear:heart",size:"26"}),s[1]||(s[1]=i("p",null,"هنوز محصولی را به علاقهمندیها اضافه نکردهاید.",-1)),i("button",{type:"button",class:"favs__emptyCta",onClick:s[0]||(s[0]=n=>k(d).push({name:"home"}))}," دیدن محصولات ")]))]),_:1})]),_:1},8,["spinning"])])}}}),Y=V(E,[["__scopeId","data-v-2bb5436a"]]);export{Y as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.otp-single-input{display:flex;align-items:center}.auth[data-v-4db8f481]{background:#fff;min-height:100vh}.auth__body[data-v-4db8f481]{padding-top:86px;padding-bottom:90px}.auth__intro[data-v-4db8f481]{display:flex;flex-direction:column;align-items:center;text-align:center;padding-bottom:24px}.auth__mark[data-v-4db8f481]{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;color:#7a1b33;background:#fbf2f4}.auth__title[data-v-4db8f481]{margin:14px 0 0;font-size:16px;font-weight:800;color:#14161a}.auth__sub[data-v-4db8f481]{margin:6px 0 0;font-size:12.5px;color:#8a909c}.auth__card[data-v-4db8f481]{padding:18px 16px;border:1px solid #ECEDEF;border-radius:20px;background:#fafafa}.auth__otp[data-v-4db8f481]{display:flex;justify-content:center;gap:10px;direction:ltr;padding-bottom:6px}.auth__timer[data-v-4db8f481]{margin:12px 0 16px;text-align:center;font-size:11.5px;color:#5b616e}.auth__form[data-v-4db8f481] .ant-form-item-label>label{font-size:12px;color:#5b616e}.auth__cta[data-v-4db8f481]{width:100%;padding:13px 18px;border:0;cursor:pointer;border-radius:14px;font-family:inherit;font-size:13px;font-weight:700;color:#fff;background:#14161a;transition:transform .15s ease,opacity .15s ease}.auth__cta[data-v-4db8f481]:active{transform:scale(.99)}.auth__cta[data-v-4db8f481]:disabled{opacity:.45;cursor:default}.auth__switch[data-v-4db8f481]{margin:20px 0 0;text-align:center;font-size:12px;color:#5b616e}.auth__switch button[data-v-4db8f481]{border:0;background:none;cursor:pointer;padding:0 3px;font-family:inherit;font-size:12px;font-weight:700;color:#7a1b33}.otp-input{width:48px;height:52px;padding:5px;margin:0;font-size:19px;font-weight:700;color:#14161a;background:#fff;border:1px solid #ECEDEF;border-radius:13px;text-align:center;transition:border-color .18s ease}.otp-input:focus{outline:none;border-color:#14161a}.otp-input.error{border-color:#e31a1a!important}.otp-input::-webkit-inner-spin-button,.otp-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.auth[data-v-23baea3e]{background:#fff;min-height:100vh}.auth__body[data-v-23baea3e]{padding-top:86px;padding-bottom:90px}.auth__intro[data-v-23baea3e]{display:flex;flex-direction:column;align-items:center;text-align:center;padding-bottom:24px}.auth__mark[data-v-23baea3e]{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;color:#7a1b33;background:#fbf2f4}.auth__title[data-v-23baea3e]{margin:14px 0 0;font-size:16px;font-weight:800;color:#14161a}.auth__sub[data-v-23baea3e]{margin:6px 0 0;font-size:12.5px;color:#8a909c}.auth__card[data-v-23baea3e]{padding:18px 16px 20px;border:1px solid #ECEDEF;border-radius:20px;background:#fafafa}.auth__form[data-v-23baea3e] .ant-form-item-label>label{font-size:12px;color:#5b616e}.auth__cta[data-v-23baea3e]{width:100%;margin-top:4px;padding:13px 18px;border:0;cursor:pointer;border-radius:14px;font-family:inherit;font-size:13px;font-weight:700;color:#fff;background:#14161a;transition:transform .15s ease}.auth__cta[data-v-23baea3e]:active{transform:scale(.99)}.auth__switch[data-v-23baea3e]{margin:20px 0 0;text-align:center;font-size:12px;color:#5b616e}.auth__switch button[data-v-23baea3e]{border:0;background:none;cursor:pointer;padding:0 3px;font-family:inherit;font-size:12px;font-weight:700;color:#7a1b33}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
import{d,f as o,c as r,l as a,u as c,y as P,z as k,n as S,A as b,j as v,e as y,g as u,p as B,B as E,C,s as p,F as L,r as A,I,b as N,h as V,v as $,_ as F}from"./index-DdOAzko0.js";import{P as z}from"./PageBar-UORuGSI_.js";import{E as j,a as h}from"./Spinner.vue_vue_type_style_index_0_lang-COi5dxox.js";import{S as D}from"./SectionHead-jx9Skmxs.js";import{P as H}from"./ProductCard-DnuRx1wH.js";import"./_commonjsHelpers-Cpj98o6Y.js";import"./SingleProduct-tS2rbNll.js";import"./NotifyVant.vue_vue_type_script_setup_true_lang-CdSmcOPX.js";import"./index-CZBavxxO.js";import"./DialogVant.vue_vue_type_style_index_0_lang-t10n0PaY.js";import"./cartStore-CWXC0lNJ.js";import"./dialogEmpty1-E3h_JfwQ.js";import"./index-D80419dl.js";import"./classCallCheck-Be3RKBBV.js";const T={class:"flex justify-center items-center empty"},G=d({__name:"EmptyState",props:{description:{},image:{}},setup(e){return(t,s)=>(o(),r("div",T,[a(c(j),{description:"موردی یافت نشد",image:e.image,class:"h-[200px] w-[200px] opacity-70"},null,8,["image"])]))}}),M="/assets/favoritEmpty-kbtPAdi5.svg",Z=d({__name:"ScrollFetchSearch",props:{loading:{type:Boolean},flag:{type:Boolean},padding:{}},emits:["fetch"],setup(e,{emit:t}){const s=t,n=P(),i=u(null);return k(i,()=>{s("fetch")},{distance:50}),(l,m)=>(o(),r("main",{class:"flex flex-col flex-1 overflow-auto no-scrollbar w-[100vw] max-w-screen-md m-auto",style:S({paddingTop:e.padding||c(n).headerHeight+"px"}),ref_key:"scrollArea",ref:i},[b(l.$slots,"default"),a(h,{cls:"my-[10px]",spinning:e.loading,indicator:!0,tip:"درحال دریافت اطلاعات"},null,8,["spinning"]),e.flag?(o(),v(G,{key:0,image:c(M)},null,8,["image"])):y("",!0)],4))}});function q(){const e=E({totalPages:0,productList:[],flag:!1});return{productsData:e,getProducts:async(s,n=!1)=>{if(!n){s.value=!0;try{e.productList=await B.listProducts(),e.flag=e.productList.length<1}catch(i){console.log(i)}finally{s.value=!1}}}}}const J={class:"newest"},K={key:0,class:"newest__grid"},O={key:1,class:"newest__empty"},g=20,Q=d({__name:"NewestView",setup(e){const{productsData:t,getProducts:s}=q(),n=u(!1),i=u(!1),l=u(g),m=V(()=>t.productList.slice(0,l.value));C(async()=>{await s(n,!1)});const w=async()=>{if(l.value<t.productList.length){l.value+=g;return}await s(i,!0)};return(R,f)=>{const x=$("container");return o(),r("div",J,[a(z,{title:"جدیدترین محصولات","back-to":"home"}),a(h,{spinning:n.value,tip:"درحال دریافت اطلاعات"},{default:p(()=>[a(Z,{class:"newest__scroll",loading:i.value,flag:c(t).flag,padding:"0px",onFetch:w},{default:p(()=>[a(x,{class:"newest__body"},{default:p(()=>[a(D,{title:"تازهها",subtitle:"آخرین افزودههای مجموعه"}),c(t).productList.length?(o(),r("div",K,[(o(!0),r(L,null,A(m.value,_=>(o(),v(H,{key:_.id,value:_},null,8,["value"]))),128))])):n.value?y("",!0):(o(),r("section",O,[a(I,{icon:"vuesax-linear:box",size:"26"}),f[0]||(f[0]=N("p",null,"هنوز محصولی در مجموعه ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["loading","flag"])]),_:1},8,["spinning"])])}}}),ue=F(Q,[["__scopeId","data-v-27e66123"]]);export{ue as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{d,f as o,c as i,l as a,u as c,y as P,z as k,n as S,A as b,j as v,e as y,g as u,p as B,B as E,C,s as p,F as L,r as A,I,b as N,h as V,v as $,_ as F}from"./index-BCqN_kGW.js";import{P as z}from"./PageBar-BoJGgEK1.js";import{a as h}from"./Spinner.vue_vue_type_style_index_0_lang-o0RxqQua.js";import{S as j}from"./SectionHead-CI7poNMS.js";import{P as D}from"./ProductCard-D8fC0R-n.js";import{E as H}from"./debounce-CI3IuFRL.js";import"./SingleProduct-Dr_zxrro.js";import"./cartStore-Dv1yNZnX.js";import"./index-BcbjMvjS.js";import"./classCallCheck-C-pP_Nnj.js";import"./_commonjsHelpers-Cpj98o6Y.js";const T={class:"flex justify-center items-center empty"},G=d({__name:"EmptyState",props:{description:{},image:{}},setup(e){return(t,s)=>(o(),i("div",T,[a(c(H),{description:"موردی یافت نشد",image:e.image,class:"h-[200px] w-[200px] opacity-70"},null,8,["image"])]))}}),M="/assets/favoritEmpty-kbtPAdi5.svg",Z=d({__name:"ScrollFetchSearch",props:{loading:{type:Boolean},flag:{type:Boolean},padding:{}},emits:["fetch"],setup(e,{emit:t}){const s=t,n=P(),r=u(null);return k(r,()=>{s("fetch")},{distance:50}),(l,m)=>(o(),i("main",{class:"flex flex-col flex-1 overflow-auto no-scrollbar w-[100vw] max-w-screen-md m-auto",style:S({paddingTop:e.padding||c(n).headerHeight+"px"}),ref_key:"scrollArea",ref:r},[b(l.$slots,"default"),a(h,{cls:"my-[10px]",spinning:e.loading,indicator:!0,tip:"درحال دریافت اطلاعات"},null,8,["spinning"]),e.flag?(o(),v(G,{key:0,image:c(M)},null,8,["image"])):y("",!0)],4))}});function q(){const e=E({totalPages:0,productList:[],flag:!1});return{productsData:e,getProducts:async(s,n=!1)=>{if(!n){s.value=!0;try{e.productList=await B.listProducts(),e.flag=e.productList.length<1}catch(r){console.log(r)}finally{s.value=!1}}}}}const J={class:"newest"},K={key:0,class:"newest__grid"},O={key:1,class:"newest__empty"},g=20,Q=d({__name:"NewestView",setup(e){const{productsData:t,getProducts:s}=q(),n=u(!1),r=u(!1),l=u(g),m=V(()=>t.productList.slice(0,l.value));C(async()=>{await s(n,!1)});const w=async()=>{if(l.value<t.productList.length){l.value+=g;return}await s(r,!0)};return(R,f)=>{const x=$("container");return o(),i("div",J,[a(z,{title:"جدیدترین محصولات","back-to":"home"}),a(h,{spinning:n.value,tip:"درحال دریافت اطلاعات"},{default:p(()=>[a(Z,{class:"newest__scroll",loading:r.value,flag:c(t).flag,padding:"0px",onFetch:w},{default:p(()=>[a(x,{class:"newest__body"},{default:p(()=>[a(j,{title:"تازهها",subtitle:"آخرین افزودههای مجموعه"}),c(t).productList.length?(o(),i("div",K,[(o(!0),i(L,null,A(m.value,_=>(o(),v(D,{key:_.id,value:_},null,8,["value"]))),128))])):n.value?y("",!0):(o(),i("section",O,[a(I,{icon:"vuesax-linear:box",size:"26"}),f[0]||(f[0]=N("p",null,"هنوز محصولی در مجموعه ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["loading","flag"])]),_:1},8,["spinning"])])}}}),ie=F(Q,[["__scopeId","data-v-27e66123"]]);export{ie as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{d as a,c as n,l as o,s as i,v as c,f as _,b as e,I as r,_ as f}from"./index-DdOAzko0.js";import{P as l}from"./PageBar-UORuGSI_.js";const p={class:"notif"},d={class:"notif__empty"},m=a({__name:"NotificationsView",setup(u){return(v,t)=>{const s=c("container");return _(),n("div",p,[o(l,{title:"اعلانها","back-to":"home"}),o(s,{class:"notif__body"},{default:i(()=>[e("section",d,[o(r,{icon:"vuesax-linear:notification",size:"26"}),t[0]||(t[0]=e("p",null,"اعلانی برای نمایش وجود ندارد.",-1))])]),_:1})])}}}),N=f(m,[["__scopeId","data-v-44d0c9a5"]]);export{N as default};
|
||||
import{d as a,c as n,l as o,s as i,v as c,f as _,b as e,I as r,_ as f}from"./index-BCqN_kGW.js";import{P as l}from"./PageBar-BoJGgEK1.js";const p={class:"notif"},d={class:"notif__empty"},m=a({__name:"NotificationsView",setup(u){return(v,t)=>{const s=c("container");return _(),n("div",p,[o(l,{title:"اعلانها","back-to":"home"}),o(s,{class:"notif__body"},{default:i(()=>[e("section",d,[o(r,{icon:"vuesax-linear:notification",size:"26"}),t[0]||(t[0]=e("p",null,"اعلانی برای نمایش وجود ندارد.",-1))])]),_:1})])}}}),N=f(m,[["__scopeId","data-v-44d0c9a5"]]);export{N as default};
|
||||
-1
@@ -1 +0,0 @@
|
||||
import{d as m,G as r,f,c as h,l,u as w,n as x,s as p,b as o,I as y,A as V,D as N,t as v,e as _,g as B}from"./index-DdOAzko0.js";import{N as k}from"./index-CZBavxxO.js";const C={key:0,class:"flex"},O={class:"w-full text-white my-2"},S={class:"w-full flex content-end"},D=m({__name:"NotifyVant",props:{modelValue:{type:Boolean},timeOut:{},text:{},color:{}},emits:["update:modelValue"],setup(e,{emit:n}){const s=B(!0),t=e,i=n;r(()=>t.modelValue,()=>{t.timeOut!==-1&&c()});const c=()=>{setTimeout(()=>{i("update:modelValue",!1)},t.timeOut)};return(u,a)=>e.modelValue?(f(),h("div",C,[l(w(k),{show:s.value,"onUpdate:show":a[0]||(a[0]=d=>s.value=d),style:x(e.color)},{default:p(()=>[o("div",O,[o("div",S,[l(y,{icon:"vuesax-linear:info-circle",class:"ml-[20px] text-white",size:"25"}),o("div",null,[V(u.$slots,"default",{},()=>[N(v(e.text),1)])])])])]),_:3},8,["show","style"])])):_("",!0)}});export{D as _};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
.bar[data-v-d2d3dfeb]{position:fixed;top:0;left:0;right:0;z-index:20;background:#ffffffe0;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid #ECEDEF}.bar__inner[data-v-d2d3dfeb]{max-width:768px;margin:0 auto;padding:11px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.bar__title[data-v-d2d3dfeb]{margin:0;font-size:14.5px;font-weight:800;color:#14161a;letter-spacing:-.1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar__btn[data-v-d2d3dfeb]{position:relative;flex:0 0 auto;width:38px;height:38px;border:0;cursor:pointer;border-radius:12px;display:grid;place-items:center;color:#14161a;background:#f4f5f6;transition:background .18s ease}.bar__btn[data-v-d2d3dfeb]:active{transform:scale(.94)}.bar__trailing[data-v-d2d3dfeb]{flex:0 0 auto;display:flex;align-items:center;gap:8px}.bar__spacer[data-v-d2d3dfeb]{display:block;width:38px;height:38px}
|
||||
.bar[data-v-25b4f31a]{position:fixed;top:0;left:0;right:0;z-index:20;background:#ffffffe0;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid #ECEDEF}.bar__inner[data-v-25b4f31a]{max-width:768px;margin:0 auto;padding:11px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.bar__title[data-v-25b4f31a]{margin:0;font-size:14.5px;font-weight:800;color:#14161a;letter-spacing:-.1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar__btn[data-v-25b4f31a]{position:relative;flex:0 0 auto;width:38px;height:38px;border:0;cursor:pointer;border-radius:12px;display:grid;place-items:center;color:#14161a;background:#f4f5f6;transition:background .18s ease}.bar__btn[data-v-25b4f31a]:active{transform:scale(.94)}.bar__trailing[data-v-25b4f31a]{flex:0 0 auto;display:flex;align-items:center;gap:8px}.bar__spacer[data-v-25b4f31a]{display:block;width:38px;height:38px}
|
||||
@@ -0,0 +1 @@
|
||||
import{d as _,c as t,b as e,l as b,I as d,t as u,A as i,f as o,x as k,_ as p}from"./index-BCqN_kGW.js";const f={class:"bar"},h={class:"bar__inner"},m={key:1,class:"bar__spacer","aria-hidden":"true"},B={class:"bar__title"},g={class:"bar__trailing"},v=_({__name:"PageBar",props:{title:{},back:{type:Boolean,default:!0},backTo:{},backAction:{}},setup(s){const a=s,n=k();function l(){a.backAction?a.backAction():a.backTo?n.push({name:a.backTo}):n.back()}return(r,c)=>(o(),t("header",f,[e("div",h,[s.back?(o(),t("button",{key:0,type:"button",class:"bar__btn","aria-label":"بازگشت",onClick:l},[b(d,{icon:"vuesax-linear:arrow-right-1",size:"20"})])):(o(),t("span",m)),e("h1",B,u(s.title),1),e("div",g,[i(r.$slots,"trailing",{},()=>[c[0]||(c[0]=e("span",{class:"bar__spacer","aria-hidden":"true"},null,-1))],!0)])]),i(r.$slots,"below",{},void 0,!0)]))}}),A=p(v,[["__scopeId","data-v-25b4f31a"]]);export{A as P};
|
||||
@@ -1 +0,0 @@
|
||||
import{d as _,c as s,b as a,l as d,I as b,t as u,A as i,f as t,x as p,_ as k}from"./index-DdOAzko0.js";const h={class:"bar"},f={class:"bar__inner"},m={key:1,class:"bar__spacer","aria-hidden":"true"},B={class:"bar__title"},g={class:"bar__trailing"},v=_({__name:"PageBar",props:{title:{},back:{type:Boolean,default:!0},backTo:{}},setup(e){const o=e,r=p();function l(){o.backTo?r.push({name:o.backTo}):r.back()}return(n,c)=>(t(),s("header",h,[a("div",f,[e.back?(t(),s("button",{key:0,type:"button",class:"bar__btn","aria-label":"بازگشت",onClick:l},[d(b,{icon:"vuesax-linear:arrow-right-1",size:"20"})])):(t(),s("span",m)),a("h1",B,u(e.title),1),a("div",g,[i(n.$slots,"trailing",{},()=>[c[0]||(c[0]=a("span",{class:"bar__spacer","aria-hidden":"true"},null,-1))],!0)])]),i(n.$slots,"below",{},void 0,!0)]))}}),x=k(v,[["__scopeId","data-v-d2d3dfeb"]]);export{x as P};
|
||||
@@ -0,0 +1 @@
|
||||
import{d as D,k as F,f as t,c as a,F as P,b as o,u as e,w as S,l as p,I as h,Z as z,i as N,e as c,t as _,D as V,s as I,j as E,g as O,_ as U}from"./index-BCqN_kGW.js";import{a as $,S as j}from"./SingleProduct-Dr_zxrro.js";import{u as q}from"./cartStore-Dv1yNZnX.js";import{D as L}from"./index-BcbjMvjS.js";const M={class:"pc__art"},T=["alt"],Z={key:1,class:"pc__artEmpty","aria-hidden":"true"},A=["aria-label"],G={key:2,class:"pc__flag"},H={key:3,class:"pc__flag pc__flag--soft"},J={class:"pc__title"},K={class:"pc__weight"},Q={key:0,class:"pc__meta"},R={key:0,class:"pc__wageOld"},W={class:"pc__wage"},X=D({__name:"ProductCard",props:{value:{},wageBefore:{}},setup(d){const w=d,r=$(),{image:v,id:i,title:f,min_gram:y,wage:m,is_exist:k,qty:b,isPreOrder:x}=q(w.value),l=O(!1);function C(){l.value=!0}function g(n){return n%1===0?String(n):n.toFixed(2)}return(n,s)=>{const B=F("lazy");return t(),a(P,null,[o("article",{class:"pc",onClick:C},[o("div",M,[e(v)?S((t(),a("img",{key:0,alt:e(f)},null,8,T)),[[B,e(v)]]):(t(),a("div",Z,[p(h,{icon:"vuesax-linear:diamonds",size:"26"})])),o("button",{type:"button",class:N(["pc__fav",{"is-on":e(r).isFavorite(e(i))}]),"aria-label":e(r).isFavorite(e(i))?"حذف از علاقهمندی":"افزودن به علاقهمندی",onClick:s[0]||(s[0]=z(u=>e(r).toggle(e(i)),["stop"]))},[p(h,{icon:e(r).isFavorite(e(i))?"vuesax-linear:heart-fill":"vuesax-linear:heart",size:"16"},null,8,["icon"])],10,A),e(k)?e(x)&&e(b)===0?(t(),a("span",H,"پیشسفارش")):c("",!0):(t(),a("span",G,"ناموجود"))]),o("h3",J,_(e(f)),1),o("p",K,[V(_(e(y))+" ",1),s[3]||(s[3]=o("span",{class:"pc__weightUnit"},"گرم",-1))]),e(m)!=null?(t(),a("div",Q,[d.wageBefore!=null?(t(),a("span",R,"اجرت "+_(g(d.wageBefore))+"٪",1)):c("",!0),o("span",W,_(g(e(m)))+"٪ اجرت",1)])):c("",!0)]),p(e(L),{visible:l.value,"onUpdate:visible":s[2]||(s[2]=u=>l.value=u),placement:"bottom",closable:!1,class:"rtl",height:"100vh",bodyStyle:{padding:0,position:"relative"}},{default:I(()=>[l.value?(t(),E(j,{id:e(i),key:e(i),onCloseDrawer:s[1]||(s[1]=u=>l.value=!1)},null,8,["id"])):c("",!0)]),_:1},8,["visible"])],64)}}}),ae=U(X,[["__scopeId","data-v-ed785ed2"]]);export{ae as P};
|
||||
@@ -1 +0,0 @@
|
||||
import{d as D,k as F,f as t,c as a,F as P,b as o,u as e,w as S,l as p,I as h,a4 as z,i as N,e as c,t as _,D as V,s as I,j as E,g as O,_ as U}from"./index-DdOAzko0.js";import{a as $,S as j}from"./SingleProduct-tS2rbNll.js";import{u as q}from"./cartStore-CWXC0lNJ.js";import{D as L}from"./index-D80419dl.js";const M={class:"pc__art"},T=["alt"],A={key:1,class:"pc__artEmpty","aria-hidden":"true"},G=["aria-label"],H={key:2,class:"pc__flag"},J={key:3,class:"pc__flag pc__flag--soft"},K={class:"pc__title"},Q={class:"pc__weight"},R={key:0,class:"pc__meta"},W={key:0,class:"pc__wageOld"},X={class:"pc__wage"},Y=D({__name:"ProductCard",props:{value:{},wageBefore:{}},setup(d){const w=d,r=$(),{image:v,id:i,title:f,min_gram:y,wage:m,is_exist:k,qty:b,isPreOrder:x}=q(w.value),l=O(!1);function C(){l.value=!0}function g(n){return n%1===0?String(n):n.toFixed(2)}return(n,s)=>{const B=F("lazy");return t(),a(P,null,[o("article",{class:"pc",onClick:C},[o("div",M,[e(v)?S((t(),a("img",{key:0,alt:e(f)},null,8,T)),[[B,e(v)]]):(t(),a("div",A,[p(h,{icon:"vuesax-linear:diamonds",size:"26"})])),o("button",{type:"button",class:N(["pc__fav",{"is-on":e(r).isFavorite(e(i))}]),"aria-label":e(r).isFavorite(e(i))?"حذف از علاقهمندی":"افزودن به علاقهمندی",onClick:s[0]||(s[0]=z(u=>e(r).toggle(e(i)),["stop"]))},[p(h,{icon:e(r).isFavorite(e(i))?"vuesax-linear:heart-fill":"vuesax-linear:heart",size:"16"},null,8,["icon"])],10,G),e(k)?e(x)&&e(b)===0?(t(),a("span",J,"پیشسفارش")):c("",!0):(t(),a("span",H,"ناموجود"))]),o("h3",K,_(e(f)),1),o("p",Q,[V(_(e(y))+" ",1),s[3]||(s[3]=o("span",{class:"pc__weightUnit"},"گرم",-1))]),e(m)!=null?(t(),a("div",R,[d.wageBefore!=null?(t(),a("span",W,"اجرت "+_(g(d.wageBefore))+"٪",1)):c("",!0),o("span",X,_(g(e(m)))+"٪ اجرت",1)])):c("",!0)]),p(e(L),{visible:l.value,"onUpdate:visible":s[2]||(s[2]=u=>l.value=u),placement:"bottom",closable:!1,class:"rtl",height:"100vh",bodyStyle:{padding:0,position:"relative"}},{default:I(()=>[l.value?(t(),E(j,{id:e(i),key:e(i),onCloseDrawer:s[1]||(s[1]=u=>l.value=!1)},null,8,["id"])):c("",!0)]),_:1},8,["visible"])],64)}}}),ae=U(Y,[["__scopeId","data-v-ed785ed2"]]);export{ae as P};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{d as b,E as y,o as T,p as k,c as l,l as i,s as V,g as p,v as P,f as n,b as e,I as d,t as a,e as r,i as g,u as B,h as f,x as C,_ as D}from"./index-DdOAzko0.js";import{P as N}from"./PageBar-UORuGSI_.js";import{S as h}from"./SectionHead-jx9Skmxs.js";const x={class:"prof"},R={class:"prof__identity"},F={class:"prof__avatar","aria-hidden":"true"},M={class:"prof__name"},w={key:0,class:"prof__mobile"},O={key:0,class:"prof__block"},U={class:"prof__specs"},z={class:"prof__spec"},L={class:"prof__spec"},A={class:"prof__spec"},W={class:"prof__spec"},H={key:1,class:"prof__empty"},$=b({__name:"ProfileView",setup(j){const _={UNVERIFIED:"احراز نشده",STEP_ONE_SUBMITTED:"مرحله اول ثبت شده",STEP_TWO_SUBMITTED:"مرحله دوم ثبت شده",VERIFIED:"تایید شده"},v=y(),s=p(null),u=p(!1),m=f(()=>{var t;return((t=s.value)==null?void 0:t.verificationStep)==="VERIFIED"}),E=f(()=>{var o;const t=(o=s.value)==null?void 0:o.verificationStep;return!!t&&t!=="VERIFIED"&&t!=="STEP_TWO_SUBMITTED"}),S=C();return T(async()=>{if(v.isLoggedIn){u.value=!0;try{s.value=await k.getMe()}finally{u.value=!1}}}),(t,o)=>{const I=P("container");return n(),l("div",x,[i(N,{title:"اطلاعات کاربری","back-to":"userPage::hasSubRoute"}),i(I,{class:"prof__body"},{default:V(()=>{var c;return[e("section",R,[e("div",F,[i(d,{icon:"vuesax-linear:user",size:"30"})]),e("h2",M,a(((c=s.value)==null?void 0:c.fullName)??"—"),1),s.value?(n(),l("p",w,a(s.value.mobile),1)):r("",!0),s.value?(n(),l("span",{key:1,class:g(["prof__seal",m.value?"is-ok":"is-pending"])},a(_[s.value.verificationStep]??s.value.verificationStep),3)):r("",!0)]),s.value?(n(),l("section",O,[i(h,{title:"مشخصات",subtitle:"اطلاعات ثبتشده حساب شما"}),e("dl",U,[e("div",z,[o[1]||(o[1]=e("dt",null,"نام و نام خانوادگی",-1)),e("dd",null,a(s.value.fullName),1)]),e("div",L,[o[2]||(o[2]=e("dt",null,"تلفن همراه",-1)),e("dd",null,a(s.value.mobile),1)]),e("div",A,[o[3]||(o[3]=e("dt",null,"کد ملی",-1)),e("dd",null,a(s.value.nationalCode),1)]),e("div",W,[o[4]||(o[4]=e("dt",null,"وضعیت احراز هویت",-1)),e("dd",null,a(_[s.value.verificationStep]??s.value.verificationStep),1)])])])):u.value?r("",!0):(n(),l("section",H,[i(d,{icon:"vuesax-linear:user",size:"26"}),o[5]||(o[5]=e("p",null,"اطلاعات حساب در دسترس نیست.",-1))])),E.value?(n(),l("button",{key:2,type:"button",class:"prof__complete",onClick:o[0]||(o[0]=q=>B(S).push({name:"completeProfile"}))}," تکمیل پروفایل ")):r("",!0)]}),_:1})])}}}),Q=D($,[["__scopeId","data-v-a69bcb0d"]]);export{Q as default};
|
||||
import{d as b,E as y,o as T,p as k,c as l,l as i,s as V,g as p,v as P,f as n,b as e,I as d,t as a,e as r,i as g,u as B,h as f,x as C,_ as D}from"./index-BCqN_kGW.js";import{P as N}from"./PageBar-BoJGgEK1.js";import{S as h}from"./SectionHead-CI7poNMS.js";const x={class:"prof"},R={class:"prof__identity"},F={class:"prof__avatar","aria-hidden":"true"},M={class:"prof__name"},w={key:0,class:"prof__mobile"},O={key:0,class:"prof__block"},U={class:"prof__specs"},z={class:"prof__spec"},L={class:"prof__spec"},A={class:"prof__spec"},W={class:"prof__spec"},H={key:1,class:"prof__empty"},$=b({__name:"ProfileView",setup(j){const _={UNVERIFIED:"احراز نشده",STEP_ONE_SUBMITTED:"مرحله اول ثبت شده",STEP_TWO_SUBMITTED:"مرحله دوم ثبت شده",VERIFIED:"تایید شده"},v=y(),s=p(null),u=p(!1),m=f(()=>{var t;return((t=s.value)==null?void 0:t.verificationStep)==="VERIFIED"}),E=f(()=>{var o;const t=(o=s.value)==null?void 0:o.verificationStep;return!!t&&t!=="VERIFIED"&&t!=="STEP_TWO_SUBMITTED"}),S=C();return T(async()=>{if(v.isLoggedIn){u.value=!0;try{s.value=await k.getMe()}finally{u.value=!1}}}),(t,o)=>{const I=P("container");return n(),l("div",x,[i(N,{title:"اطلاعات کاربری","back-to":"userPage::hasSubRoute"}),i(I,{class:"prof__body"},{default:V(()=>{var c;return[e("section",R,[e("div",F,[i(d,{icon:"vuesax-linear:user",size:"30"})]),e("h2",M,a(((c=s.value)==null?void 0:c.fullName)??"—"),1),s.value?(n(),l("p",w,a(s.value.mobile),1)):r("",!0),s.value?(n(),l("span",{key:1,class:g(["prof__seal",m.value?"is-ok":"is-pending"])},a(_[s.value.verificationStep]??s.value.verificationStep),3)):r("",!0)]),s.value?(n(),l("section",O,[i(h,{title:"مشخصات",subtitle:"اطلاعات ثبتشده حساب شما"}),e("dl",U,[e("div",z,[o[1]||(o[1]=e("dt",null,"نام و نام خانوادگی",-1)),e("dd",null,a(s.value.fullName),1)]),e("div",L,[o[2]||(o[2]=e("dt",null,"تلفن همراه",-1)),e("dd",null,a(s.value.mobile),1)]),e("div",A,[o[3]||(o[3]=e("dt",null,"کد ملی",-1)),e("dd",null,a(s.value.nationalCode),1)]),e("div",W,[o[4]||(o[4]=e("dt",null,"وضعیت احراز هویت",-1)),e("dd",null,a(_[s.value.verificationStep]??s.value.verificationStep),1)])])])):u.value?r("",!0):(n(),l("section",H,[i(d,{icon:"vuesax-linear:user",size:"26"}),o[5]||(o[5]=e("p",null,"اطلاعات حساب در دسترس نیست.",-1))])),E.value?(n(),l("button",{key:2,type:"button",class:"prof__complete",onClick:o[0]||(o[0]=q=>B(S).push({name:"completeProfile"}))}," تکمیل پروفایل ")):r("",!0)]}),_:1})])}}}),Q=D($,[["__scopeId","data-v-a69bcb0d"]]);export{Q as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{p as n,j as d}from"./filters-CLL9nGZ2.js";import{d as l,c as s,i as u,b as a,D as m,t as i,u as c,e as _,h as v,f as r,_ as q}from"./index-DdOAzko0.js";const f={key:0,class:"rate-strip__value"},y={class:"rate-strip__num"},k={key:1,class:"rate-strip__value rate-strip__value--muted"},x={key:2,class:"rate-strip__time"},B=l({__name:"RateStrip",props:{quote:{},compact:{type:Boolean}},setup(t){const o=t,p=v(()=>o.quote?o.quote.pricePerGramRial.split(".")[0]:"");return(R,e)=>(r(),s("div",{class:u(["rate-strip",{"is-empty":!t.quote,"rate-strip--compact":t.compact}])},[e[1]||(e[1]=a("div",{class:"rate-strip__label"},[a("span",{class:"rate-strip__dot","aria-hidden":"true"}),m(" نرخ طلای ۱۸ عیار ")],-1)),t.quote?(r(),s("div",f,[a("span",y,i(c(n)(p.value)),1),e[0]||(e[0]=a("span",{class:"rate-strip__unit"},"ریال / گرم",-1))])):(r(),s("div",k,"در انتظار اعلام نرخ")),t.quote?(r(),s("div",x,i(c(d)(t.quote.quotedAt)),1)):_("",!0)],2))}}),C=q(B,[["__scopeId","data-v-0b16738e"]]);export{C as R};
|
||||
import{p as n,j as d}from"./filters-CLL9nGZ2.js";import{d as l,c as s,i as u,b as a,D as m,t as i,u as c,e as _,h as v,f as r,_ as q}from"./index-BCqN_kGW.js";const f={key:0,class:"rate-strip__value"},y={class:"rate-strip__num"},k={key:1,class:"rate-strip__value rate-strip__value--muted"},x={key:2,class:"rate-strip__time"},B=l({__name:"RateStrip",props:{quote:{},compact:{type:Boolean}},setup(t){const o=t,p=v(()=>o.quote?o.quote.pricePerGramRial.split(".")[0]:"");return(R,e)=>(r(),s("div",{class:u(["rate-strip",{"is-empty":!t.quote,"rate-strip--compact":t.compact}])},[e[1]||(e[1]=a("div",{class:"rate-strip__label"},[a("span",{class:"rate-strip__dot","aria-hidden":"true"}),m(" نرخ طلای ۱۸ عیار ")],-1)),t.quote?(r(),s("div",f,[a("span",y,i(c(n)(p.value)),1),e[0]||(e[0]=a("span",{class:"rate-strip__unit"},"ریال / گرم",-1))])):(r(),s("div",k,"در انتظار اعلام نرخ")),t.quote?(r(),s("div",x,i(c(d)(t.quote.quotedAt)),1)):_("",!0)],2))}}),C=q(B,[["__scopeId","data-v-0b16738e"]]);export{C as R};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{d as v,a9 as h,G as m,f as t,c as l,l as n,I as r,w as f,aa as b,b as x,ab as k,e as I,B as w,g as y,_ as B}from"./index-DdOAzko0.js";const C={class:"si"},S=["placeholder"],V=v({__name:"SearchInput",props:{placeHolder:{}},emits:["search"],setup(i,{emit:d}){const c=d,a=w({clear:!1}),e=y(void 0),s=()=>{c("search",e.value)},u=()=>{e.value=void 0,a.clear=!1,c("search",void 0)},p=h(e,700);return m(p,()=>{e?a.clear=!0:a.clear=!1,s()}),(N,o)=>(t(),l("div",C,[n(r,{icon:"vuesax-linear:search-normal-1",class:"si__icon",size:"18",onClick:s}),f(x("input",{"onUpdate:modelValue":o[0]||(o[0]=_=>e.value=_),class:"si__input",placeholder:i.placeHolder,onKeyup:k(s,["enter"])},null,40,S),[[b,e.value]]),a.clear?(t(),l("button",{key:0,type:"button",class:"si__clear","aria-label":"پاک کردن",onClick:u},[n(r,{icon:"vuesax-linear:add",size:"16"})])):I("",!0)]))}}),D=B(V,[["__scopeId","data-v-8ebd3183"]]);export{D as S};
|
||||
import{d as v,a3 as h,H as m,f as t,c as l,l as n,I as r,w as f,a4 as b,b as x,a5 as k,e as I,B as w,g as y,_ as B}from"./index-BCqN_kGW.js";const C={class:"si"},S=["placeholder"],V=v({__name:"SearchInput",props:{placeHolder:{}},emits:["search"],setup(i,{emit:d}){const c=d,a=w({clear:!1}),e=y(void 0),s=()=>{c("search",e.value)},u=()=>{e.value=void 0,a.clear=!1,c("search",void 0)},p=h(e,700);return m(p,()=>{e?a.clear=!0:a.clear=!1,s()}),(H,o)=>(t(),l("div",C,[n(r,{icon:"vuesax-linear:search-normal-1",class:"si__icon",size:"18",onClick:s}),f(x("input",{"onUpdate:modelValue":o[0]||(o[0]=_=>e.value=_),class:"si__input",placeholder:i.placeHolder,onKeyup:k(s,["enter"])},null,40,S),[[b,e.value]]),a.clear?(t(),l("button",{key:0,type:"button",class:"si__clear","aria-label":"پاک کردن",onClick:u},[n(r,{icon:"vuesax-linear:add",size:"16"})])):I("",!0)]))}}),z=B(V,[["__scopeId","data-v-8ebd3183"]]);export{z as S};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{d as r,f as t,c as s,b as o,t as a,e as n,D as _,l as d,I as u,_ as b}from"./index-DdOAzko0.js";const m={class:"sec"},f={class:"sec__text"},x={class:"sec__title"},h={key:0,class:"sec__sub"},k=r({__name:"SectionHead",props:{title:{},subtitle:{},actionLabel:{}},emits:["action"],setup(e,{emit:i}){const l=i;return(p,c)=>(t(),s("header",m,[o("div",f,[o("h2",x,a(e.title),1),e.subtitle?(t(),s("p",h,a(e.subtitle),1)):n("",!0)]),e.actionLabel?(t(),s("button",{key:0,type:"button",class:"sec__action",onClick:c[0]||(c[0]=v=>l("action"))},[_(a(e.actionLabel)+" ",1),d(u,{icon:"vuesax-linear:arrow-left-2",size:"15"})])):n("",!0)]))}}),N=b(k,[["__scopeId","data-v-e5c65b7c"]]);export{N as S};
|
||||
import{d as r,f as t,c as s,b as o,t as a,e as n,D as _,l as d,I as u,_ as b}from"./index-BCqN_kGW.js";const m={class:"sec"},f={class:"sec__text"},x={class:"sec__title"},h={key:0,class:"sec__sub"},k=r({__name:"SectionHead",props:{title:{},subtitle:{},actionLabel:{}},emits:["action"],setup(e,{emit:i}){const l=i;return(p,c)=>(t(),s("header",m,[o("div",f,[o("h2",x,a(e.title),1),e.subtitle?(t(),s("p",h,a(e.subtitle),1)):n("",!0)]),e.actionLabel?(t(),s("button",{key:0,type:"button",class:"sec__action",onClick:c[0]||(c[0]=v=>l("action"))},[_(a(e.actionLabel)+" ",1),d(u,{icon:"vuesax-linear:arrow-left-2",size:"15"})])):n("",!0)]))}}),N=b(k,[["__scopeId","data-v-e5c65b7c"]]);export{N as S};
|
||||
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-71
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
import{N as M,h as r,a as x,R as T,V as q,J,k as O,P as b,a1 as Q}from"./debounce-CI3IuFRL.js";import{d as U,l as a,am as N,V as z,q as R,Q as W,j as F,u as G,i as C,s as k,f as v,b as d,A as H,c as B}from"./index-BCqN_kGW.js";const K="/img/montzar-logo.png";var L=["class","style"],X=function(){return{prefixCls:String,spinning:{type:Boolean,default:void 0},size:String,wrapperClassName:String,tip:b.any,delay:Number,indicator:b.any}},p=null;function Y(i,n){return!!i&&!!n&&!isNaN(Number(n))}function Z(i){var n=i.indicator;p=typeof n=="function"?n:function(){return a(n,null,null)}}const o=U({compatConfig:{MODE:3},name:"ASpin",inheritAttrs:!1,props:O(X(),{size:"default",spinning:!0,wrapperClassName:""}),setup:function(){return{originalUpdateSpinning:null,configProvider:W("configProvider",Q)}},data:function(){var n=this.spinning,e=this.delay,t=Y(n,e);return{sSpinning:n&&!t}},created:function(){this.originalUpdateSpinning=this.updateSpinning,this.debouncifyUpdateSpinning(this.$props)},mounted:function(){this.updateSpinning()},updated:function(){var n=this;R(function(){n.debouncifyUpdateSpinning(),n.updateSpinning()})},beforeUnmount:function(){this.cancelExistingSpin()},methods:{debouncifyUpdateSpinning:function(n){var e=n||this.$props,t=e.delay;t&&(this.cancelExistingSpin(),this.updateSpinning=J(this.originalUpdateSpinning,t))},updateSpinning:function(){var n=this.spinning,e=this.sSpinning;e!==n&&(this.sSpinning=n)},cancelExistingSpin:function(){var n=this.updateSpinning;n&&n.cancel&&n.cancel()},renderIndicator:function(n){var e="".concat(n,"-dot"),t=q(this,"indicator");return t===null?null:(Array.isArray(t)&&(t=t.length===1?t[0]:t),N(t)?z(t,{class:e}):p&&N(p())?z(p(),{class:e}):a("span",{class:"".concat(e," ").concat(n,"-dot-spin")},[a("i",{class:"".concat(n,"-dot-item")},null),a("i",{class:"".concat(n,"-dot-item")},null),a("i",{class:"".concat(n,"-dot-item")},null),a("i",{class:"".concat(n,"-dot-item")},null)]))}},render:function(){var n,e,t,c=this.$props,m=c.size,_=c.prefixCls,S=c.tip,u=S===void 0?(n=(e=this.$slots).tip)===null||n===void 0?void 0:n.call(e):S,w=c.wrapperClassName,f=this.$attrs,y=f.class,E=f.style,I=M(f,L),$=this.configProvider,D=$.getPrefixCls,V=$.direction,s=D("spin",_),g=this.sSpinning,A=(t={},r(t,s,!0),r(t,"".concat(s,"-sm"),m==="small"),r(t,"".concat(s,"-lg"),m==="large"),r(t,"".concat(s,"-spinning"),g),r(t,"".concat(s,"-show-text"),!!u),r(t,"".concat(s,"-rtl"),V==="rtl"),r(t,y,!!y),t),P=a("div",x(x({},I),{},{style:E,class:A}),[this.renderIndicator(s),u?a("div",{class:"".concat(s,"-text")},[u]):null]),h=T(this);if(h&&h.length){var l,j=(l={},r(l,"".concat(s,"-container"),!0),r(l,"".concat(s,"-blur"),g),l);return a("div",{class:["".concat(s,"-nested-loading"),w]},[g&&a("div",{key:"loading"},[P]),a("div",{class:j,key:"container"},[h])])}return P}});o.setDefaultIndicator=Z;o.install=function(i){return i.component(o.name,o),i};const nn={key:0,src:K,alt:"Montzar",class:"spinner-brand",width:"48",height:"48"},tn={key:1,class:"loading"},an=U({__name:"Spinner",props:{tip:{},size:{default:"large"},cls:{},delay:{},spinning:{type:Boolean},indicator:{type:Boolean},fixed:{type:Boolean,default:!0}},setup(i){return(n,e)=>(v(),F(G(o),{spinning:i.spinning,tip:i.tip,size:i.size,delay:i.delay,class:C(i.fixed?"!max-h-screen !fixed":"")},{indicator:k(()=>[i.indicator?(v(),B("div",tn,[...e[0]||(e[0]=[d("div",{class:"effect-1 effects"},null,-1),d("div",{class:"effect-2 effects"},null,-1),d("div",{class:"effect-3 effects"},null,-1)])])):(v(),B("img",nn))]),default:k(()=>[d("div",{class:C(i.cls)},[H(n.$slots,"default")],2)]),_:3},8,["spinning","tip","size","delay","class"]))}});export{K as _,an as a};
|
||||
@@ -0,0 +1 @@
|
||||
import{d as A,E as C,o as b,p as D,c as i,l as r,s as f,j as w,u as E,e as m,g as u,f as l,F as y,b as s,r as L,I as g,t as o,i as p,v as N,_ as M}from"./index-BCqN_kGW.js";import{P}from"./PageBar-BoJGgEK1.js";import{a as O}from"./Spinner.vue_vue_type_style_index_0_lang-o0RxqQua.js";import{S as B}from"./SectionHead-CI7poNMS.js";import{j as R,p as U}from"./filters-CLL9nGZ2.js";import{D as I}from"./index-BcbjMvjS.js";import"./debounce-CI3IuFRL.js";import"./_commonjsHelpers-Cpj98o6Y.js";import"./classCallCheck-C-pP_Nnj.js";const V={class:"tx"},$={class:"tx__list"},Y=["onClick"],j={class:"tx__main"},z={class:"tx__head"},F={class:"tx__kind"},G={key:0,class:"tx__note"},H={class:"tx__foot"},J={class:"tx__date"},K={key:1,class:"tx__empty"},Q={class:"sheet"},W={class:"sheet__specs"},q={class:"sheet__spec"},X={class:"sheet__spec"},Z={class:"sheet__spec"},ss={class:"sheet__spec"},es={class:"sheet__spec"},ts=A({__name:"TransactionsView",setup(os){const x={ORDER_STOCK:"سفارش",ORDER_PRE_ORDER:"سفارش ساخت",REPAYMENT_MELTED_GOLD:"طلای آبشده",REPAYMENT_TRANSFER:"حواله",REPAYMENT_CHEQUE:"چک",REPAYMENT_CASH:"پولی",WALLET_BONUS:"پاداش",ADJUSTMENT:"اصلاحیه"},T=C(),_=u(!1),d=u([]),v=u(!1),n=u(null),c=a=>a.direction==="CREDIT",h=a=>a.currency==="GOLD_GRAM"?`${a.amount} گرم`:`${U(a.amount)} ریال`,S=a=>{n.value=a,v.value=!0};return b(async()=>{if(T.isLoggedIn){_.value=!0;try{d.value=await D.getMyLedgerEntries()}finally{_.value=!1}}}),(a,e)=>{const k=N("container");return l(),i("div",V,[r(P,{title:"اسناد","back-to":"userPage::hasSubRoute"}),r(O,{spinning:_.value,tip:"درحال دریافت اطلاعات"},{default:f(()=>[r(k,{class:"tx__body"},{default:f(()=>[d.value.length?(l(),i(y,{key:0},[r(B,{title:"گردش حساب",subtitle:`${d.value.length} سند`},null,8,["subtitle"]),s("div",$,[(l(!0),i(y,null,L(d.value,t=>(l(),i("article",{key:t.id,class:"tx__row",onClick:ns=>S(t)},[s("span",{class:p(["tx__mark",c(t)?"is-in":"is-out"]),"aria-hidden":"true"},[r(g,{icon:c(t)?"vuesax-linear:arrow-down":"vuesax-linear:arrow-up",size:"16"},null,8,["icon"])],2),s("div",j,[s("div",z,[s("h3",F,o(x[t.sourceType]??t.sourceType),1),s("span",{class:p(["tx__amount",c(t)?"is-in":"is-out"])},o(h(t)),3)]),t.note?(l(),i("p",G,o(t.note),1)):m("",!0),s("div",H,[s("span",J,o(E(R)(t.createdAt)),1),s("span",{class:p(["tx__state",{"is-pending":!t.confirmed}])},o(t.confirmed?"تایید شده":"در انتظار تایید"),3)])])],8,Y))),128))])],64)):_.value?m("",!0):(l(),i("section",K,[r(g,{icon:"vuesax-linear:receipt-text",size:"26"}),e[1]||(e[1]=s("p",null,"سندی برای حساب شما ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"]),n.value?(l(),w(E(I),{key:0,visible:v.value,"onUpdate:visible":e[0]||(e[0]=t=>v.value=t),placement:"bottom",closable:!1,height:"420px",class:"rtl",bodyStyle:{padding:0}},{default:f(()=>[s("div",Q,[e[7]||(e[7]=s("h3",{class:"sheet__title"},"جزئیات سند",-1)),s("dl",W,[s("div",q,[e[2]||(e[2]=s("dt",null,"نوع سند",-1)),s("dd",null,o(x[n.value.sourceType]??n.value.sourceType),1)]),s("div",X,[e[3]||(e[3]=s("dt",null,"مبلغ",-1)),s("dd",{class:p(c(n.value)?"is-in":"is-out")},o(h(n.value)),3)]),s("div",Z,[e[4]||(e[4]=s("dt",null,"وضعیت",-1)),s("dd",null,o(n.value.confirmed?"تایید شده":"در انتظار تایید"),1)]),s("div",ss,[e[5]||(e[5]=s("dt",null,"تاریخ",-1)),s("dd",null,o(E(R)(n.value.createdAt)),1)]),s("div",es,[e[6]||(e[6]=s("dt",null,"توضیحات",-1)),s("dd",null,o(n.value.note||"—"),1)])])])]),_:1},8,["visible"])):m("",!0)])}}}),vs=M(ts,[["__scopeId","data-v-ea71d707"]]);export{vs as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{d as A,E as C,o as b,p as D,c as i,l as r,s as f,j as w,u as E,e as m,g as u,f as l,F as y,b as s,r as L,I as g,t as o,i as p,v as N,_ as M}from"./index-DdOAzko0.js";import{P}from"./PageBar-UORuGSI_.js";import{a as O}from"./Spinner.vue_vue_type_style_index_0_lang-COi5dxox.js";import{S as B}from"./SectionHead-jx9Skmxs.js";import{j as R,p as U}from"./filters-CLL9nGZ2.js";import{D as I}from"./index-D80419dl.js";import"./_commonjsHelpers-Cpj98o6Y.js";import"./classCallCheck-Be3RKBBV.js";const V={class:"tx"},$={class:"tx__list"},Y=["onClick"],j={class:"tx__main"},z={class:"tx__head"},F={class:"tx__kind"},G={key:0,class:"tx__note"},H={class:"tx__foot"},J={class:"tx__date"},K={key:1,class:"tx__empty"},Q={class:"sheet"},W={class:"sheet__specs"},q={class:"sheet__spec"},X={class:"sheet__spec"},Z={class:"sheet__spec"},ss={class:"sheet__spec"},es={class:"sheet__spec"},ts=A({__name:"TransactionsView",setup(os){const x={ORDER_STOCK:"سفارش",ORDER_PRE_ORDER:"سفارش ساخت",REPAYMENT_MELTED_GOLD:"طلای آبشده",REPAYMENT_TRANSFER:"حواله",REPAYMENT_CHEQUE:"چک",REPAYMENT_CASH:"پولی",WALLET_BONUS:"پاداش",ADJUSTMENT:"اصلاحیه"},T=C(),_=u(!1),d=u([]),v=u(!1),n=u(null),c=a=>a.direction==="CREDIT",h=a=>a.currency==="GOLD_GRAM"?`${a.amount} گرم`:`${U(a.amount)} ریال`,S=a=>{n.value=a,v.value=!0};return b(async()=>{if(T.isLoggedIn){_.value=!0;try{d.value=await D.getMyLedgerEntries()}finally{_.value=!1}}}),(a,e)=>{const k=N("container");return l(),i("div",V,[r(P,{title:"اسناد","back-to":"userPage::hasSubRoute"}),r(O,{spinning:_.value,tip:"درحال دریافت اطلاعات"},{default:f(()=>[r(k,{class:"tx__body"},{default:f(()=>[d.value.length?(l(),i(y,{key:0},[r(B,{title:"گردش حساب",subtitle:`${d.value.length} سند`},null,8,["subtitle"]),s("div",$,[(l(!0),i(y,null,L(d.value,t=>(l(),i("article",{key:t.id,class:"tx__row",onClick:ns=>S(t)},[s("span",{class:p(["tx__mark",c(t)?"is-in":"is-out"]),"aria-hidden":"true"},[r(g,{icon:c(t)?"vuesax-linear:arrow-down":"vuesax-linear:arrow-up",size:"16"},null,8,["icon"])],2),s("div",j,[s("div",z,[s("h3",F,o(x[t.sourceType]??t.sourceType),1),s("span",{class:p(["tx__amount",c(t)?"is-in":"is-out"])},o(h(t)),3)]),t.note?(l(),i("p",G,o(t.note),1)):m("",!0),s("div",H,[s("span",J,o(E(R)(t.createdAt)),1),s("span",{class:p(["tx__state",{"is-pending":!t.confirmed}])},o(t.confirmed?"تایید شده":"در انتظار تایید"),3)])])],8,Y))),128))])],64)):_.value?m("",!0):(l(),i("section",K,[r(g,{icon:"vuesax-linear:receipt-text",size:"26"}),e[1]||(e[1]=s("p",null,"سندی برای حساب شما ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"]),n.value?(l(),w(E(I),{key:0,visible:v.value,"onUpdate:visible":e[0]||(e[0]=t=>v.value=t),placement:"bottom",closable:!1,height:"420px",class:"rtl",bodyStyle:{padding:0}},{default:f(()=>[s("div",Q,[e[7]||(e[7]=s("h3",{class:"sheet__title"},"جزئیات سند",-1)),s("dl",W,[s("div",q,[e[2]||(e[2]=s("dt",null,"نوع سند",-1)),s("dd",null,o(x[n.value.sourceType]??n.value.sourceType),1)]),s("div",X,[e[3]||(e[3]=s("dt",null,"مبلغ",-1)),s("dd",{class:p(c(n.value)?"is-in":"is-out")},o(h(n.value)),3)]),s("div",Z,[e[4]||(e[4]=s("dt",null,"وضعیت",-1)),s("dd",null,o(n.value.confirmed?"تایید شده":"در انتظار تایید"),1)]),s("div",ss,[e[5]||(e[5]=s("dt",null,"تاریخ",-1)),s("dd",null,o(E(R)(n.value.createdAt)),1)]),s("div",es,[e[6]||(e[6]=s("dt",null,"توضیحات",-1)),s("dd",null,o(n.value.note||"—"),1)])])])]),_:1},8,["visible"])):m("",!0)])}}}),ps=M(ts,[["__scopeId","data-v-ea71d707"]]);export{ps as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{g as d,u as O,h as a,m as _,p as C}from"./index-DdOAzko0.js";function F(t){return(t.qty??0)>0||!!t.isPreOrder}function S(t){if(!t||t.length===0)return null;const e=t.filter(F);return(e.length?e:t).reduce((i,r)=>parseFloat(r.defaultWagePercent)<parseFloat(i.defaultWagePercent)?r:i)}function w(t,e){const s=d(t),i=a(()=>{var o,m;return(m=(o=s.value.images)==null?void 0:o[0])==null?void 0:m.url}),r=a(()=>s.value.id),n=a(()=>s.value.title),l=a(()=>s.value.variants),c=d(e??S(O(l))),v=a(()=>c.value?parseFloat(c.value.rashWeightGrams):0),y=a(()=>c.value?parseFloat(c.value.defaultWagePercent):null),g=d(null),h=a(()=>{var o;return((o=c.value)==null?void 0:o.qty)??0}),f=a(()=>{var o;return((o=c.value)==null?void 0:o.isPreOrder)??!1}),x=a(()=>h.value>0||f.value),q=a(()=>s.value.productCode??null),P=d(!1);return{product:s,image:i,id:r,title:n,productCode:q,variants:l,selectedVariant:c,min_gram:v,wage:y,hasDiscountWage:g,qty:h,isPreOrder:f,is_exist:x,has_warranty:P}}const p="appCart";function W(){try{const t=localStorage.getItem(p);return t?JSON.parse(t):[]}catch{return[]}}function u(t){localStorage.setItem(p,JSON.stringify(t))}const I=_("cart",{state:()=>({items:W()}),actions:{async init(){try{const t=await C.listProducts(),e=[];for(const s of this.items){const i=t.find(n=>n.id===s.pid),r=i==null?void 0:i.variants.find(n=>n.id===s.vid);i&&r&&e.push({...s,product:i})}this.items=e,u(this.items)}catch(t){console.log(t)}},addToCart(t){var i,r;const e=(r=(i=t.product)==null?void 0:i.variants)==null?void 0:r.find(n=>n.id===t.vid);if(!e||!((e.qty??0)>0||e.isPreOrder))return!1;const s=this.find_index(t);return s===-1?this.items.push({...t,qty:this.capQty(t.qty,e)}):(this.items[s].product=t.product,this.items[s].qty=this.capQty(t.qty,e)),u(this.items),!0},capQty(t,e){const s=Math.max(1,Math.floor(t)||1);if(e.isPreOrder)return s;const i=e.qty??0;return i>0?Math.min(s,i):s},maxQty(t){const e=this.find_index(t);if(e===-1)return null;const s=this.variant(this.items[e]);return!s||s.isPreOrder?null:(s.qty??0)>0?s.qty:null},remove(t){const e=this.find_index(t);e>-1&&this.items.splice(e,1),u(this.items)},updateFeild(t,e,s,i){if(!this.isInCart(s))return!1;const r=e??this.find_index(s);if(i==="qty"){const n=this.variant(this.items[r]);t=n?this.capQty(Number(t),n):Math.max(1,Number(t)||1)}return this.items[r][i]=t,u(this.items),!0},find_index(t){return this.items.findIndex(e=>e.pid===t.pid&&e.vid===t.vid)},isInCart(t){return this.find_index(t)>-1},variant(t){return t.product.variants.find(e=>e.id===t.vid)},total(){return this.items.reduce((t,e)=>{const s=this.variant(e);return t+(s?parseFloat(s.rashWeightGrams)*e.qty:0)},0).toFixed(2)},clear(){this.items=[],u(this.items)}}});export{I as a,F as i,w as u};
|
||||
import{g as d,u as O,h as a,m as _,p as C}from"./index-BCqN_kGW.js";function F(t){return(t.qty??0)>0||!!t.isPreOrder}function S(t){if(!t||t.length===0)return null;const e=t.filter(F);return(e.length?e:t).reduce((i,r)=>parseFloat(r.defaultWagePercent)<parseFloat(i.defaultWagePercent)?r:i)}function w(t,e){const s=d(t),i=a(()=>{var o,m;return(m=(o=s.value.images)==null?void 0:o[0])==null?void 0:m.url}),r=a(()=>s.value.id),n=a(()=>s.value.title),l=a(()=>s.value.variants),c=d(e??S(O(l))),v=a(()=>c.value?parseFloat(c.value.rashWeightGrams):0),y=a(()=>c.value?parseFloat(c.value.defaultWagePercent):null),g=d(null),h=a(()=>{var o;return((o=c.value)==null?void 0:o.qty)??0}),f=a(()=>{var o;return((o=c.value)==null?void 0:o.isPreOrder)??!1}),x=a(()=>h.value>0||f.value),q=a(()=>s.value.productCode??null),P=d(!1);return{product:s,image:i,id:r,title:n,productCode:q,variants:l,selectedVariant:c,min_gram:v,wage:y,hasDiscountWage:g,qty:h,isPreOrder:f,is_exist:x,has_warranty:P}}const p="appCart";function W(){try{const t=localStorage.getItem(p);return t?JSON.parse(t):[]}catch{return[]}}function u(t){localStorage.setItem(p,JSON.stringify(t))}const I=_("cart",{state:()=>({items:W()}),actions:{async init(){try{const t=await C.listProducts(),e=[];for(const s of this.items){const i=t.find(n=>n.id===s.pid),r=i==null?void 0:i.variants.find(n=>n.id===s.vid);i&&r&&e.push({...s,product:i})}this.items=e,u(this.items)}catch(t){console.log(t)}},addToCart(t){var i,r;const e=(r=(i=t.product)==null?void 0:i.variants)==null?void 0:r.find(n=>n.id===t.vid);if(!e||!((e.qty??0)>0||e.isPreOrder))return!1;const s=this.find_index(t);return s===-1?this.items.push({...t,qty:this.capQty(t.qty,e)}):(this.items[s].product=t.product,this.items[s].qty=this.capQty(t.qty,e)),u(this.items),!0},capQty(t,e){const s=Math.max(1,Math.floor(t)||1);if(e.isPreOrder)return s;const i=e.qty??0;return i>0?Math.min(s,i):s},maxQty(t){const e=this.find_index(t);if(e===-1)return null;const s=this.variant(this.items[e]);return!s||s.isPreOrder?null:(s.qty??0)>0?s.qty:null},remove(t){const e=this.find_index(t);e>-1&&this.items.splice(e,1),u(this.items)},updateFeild(t,e,s,i){if(!this.isInCart(s))return!1;const r=e??this.find_index(s);if(i==="qty"){const n=this.variant(this.items[r]);t=n?this.capQty(Number(t),n):Math.max(1,Number(t)||1)}return this.items[r][i]=t,u(this.items),!0},find_index(t){return this.items.findIndex(e=>e.pid===t.pid&&e.vid===t.vid)},isInCart(t){return this.find_index(t)>-1},variant(t){return t.product.variants.find(e=>e.id===t.vid)},total(){return this.items.reduce((t,e)=>{const s=this.variant(e);return t+(s?parseFloat(s.rashWeightGrams)*e.qty:0)},0).toFixed(2)},clear(){this.items=[],u(this.items)}}});export{I as a,F as i,w as u};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as l}from"./debounce-CI3IuFRL.js";var f=function(n){return setTimeout(n,16)},u=function(n){return clearTimeout(n)};typeof window<"u"&&"requestAnimationFrame"in window&&(f=function(n){return window.requestAnimationFrame(n)},u=function(n){return window.cancelAnimationFrame(n)});var i=0,o=new Map;function c(e){o.delete(e)}function w(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;i+=1;var r=i;function a(t){if(t===0)c(r),e();else{var s=f(function(){a(t-1)});o.set(r,s)}}return a(n),r}w.cancel=function(e){var n=o.get(e);return c(n),u(n)};function m(e,n){for(var r=l({},e),a=0;a<n.length;a+=1){var t=n[a];delete r[t]}return r}function p(e,n,r){return Object.defineProperty(e,"prototype",{writable:!1}),e}function v(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}export{p as _,v as a,m as o,w};
|
||||
File diff suppressed because one or more lines are too long
@@ -1,447 +0,0 @@
|
||||
<svg width="160" height="155" viewBox="0 0 160 155" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11.5023 48.0548C12.7629 47.645 13.4527 46.2909 13.043 45.0302C12.6333 43.7696 11.2791 43.0798 10.0185 43.4895C8.7578 43.8993 8.06801 45.2534 8.47775 46.5141C8.8875 47.7747 10.2416 48.4645 11.5023 48.0548Z" fill="#EAEEF9"/>
|
||||
<path d="M16.7421 40.2234C17.5993 39.9448 18.0684 39.024 17.7898 38.1667C17.5111 37.3095 16.5903 36.8404 15.7331 37.119C14.8758 37.3977 14.4068 38.3185 14.6854 39.1757C14.964 40.033 15.8848 40.502 16.7421 40.2234Z" fill="#EAEEF9"/>
|
||||
<path d="M91.1753 40.824C91.8016 40.2516 91.8453 39.28 91.273 38.6537C90.7007 38.0274 89.729 37.9837 89.1027 38.556C88.4765 39.1283 88.4327 40.1 89.005 40.7263C89.5774 41.3526 90.549 41.3963 91.1753 40.824Z" fill="#EAEEF9"/>
|
||||
<path d="M15.1582 119.354C15.7845 118.782 15.8282 117.81 15.2559 117.184C14.6836 116.558 13.7119 116.514 13.0856 117.086C12.4594 117.659 12.4156 118.63 12.988 119.257C13.5603 119.883 14.5319 119.927 15.1582 119.354Z" fill="#EAEEF9"/>
|
||||
<path d="M96.0246 62.4692V98.6647C96.0246 99.2407 96.0246 99.7208 95.9286 100.297C95.4485 104.425 93.0483 108.074 89.3999 110.186L58.1009 128.236C55.1246 129.964 51.5722 130.444 48.3079 129.58C47.0598 129.292 45.9077 128.812 44.8516 128.236L13.4565 110.09C11.0563 108.746 9.23208 106.729 8.07997 104.329C7.21589 102.601 6.73584 100.585 6.73584 98.5687V62.4692C6.73584 60.549 7.11988 58.7248 7.88795 56.9966C9.04006 54.5004 10.8642 52.3882 13.3605 50.948L44.7556 32.8983C47.8279 31.1701 51.2842 30.69 54.6445 31.5541C55.7966 31.8422 56.9487 32.3222 58.1009 32.8983L89.3999 50.948C92.1842 52.5802 94.2004 55.0764 95.2565 58.0527C95.8325 59.3969 96.0246 60.933 96.0246 62.4692Z" fill="#EAEEF9"/>
|
||||
<path d="M51.4761 49.3155L59.0608 33.666" stroke="url(#paint0_linear_460_3876)" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<g filter="url(#filter0_d_460_3876)">
|
||||
<path d="M80.4706 43.9385V118.058C80.4706 120.17 78.7424 121.898 76.6302 121.898H26.3213C24.2091 121.898 22.481 120.17 22.481 118.058V43.9385C22.481 41.8263 24.2091 40.0981 26.3213 40.0981H76.6302C78.7424 40.0981 80.4706 41.8263 80.4706 43.9385Z" fill="white"/>
|
||||
</g>
|
||||
<path d="M26.0334 74.4697H24.2092V76.2939H26.0334V74.4697Z" fill="#EAEEF9"/>
|
||||
<path d="M26.0334 70.8208H24.2092V72.645H26.0334V70.8208Z" fill="#EAEEF9"/>
|
||||
<path d="M26.0334 67.1719H24.2092V68.9961H26.0334V67.1719Z" fill="#EAEEF9"/>
|
||||
<path d="M26.0334 63.6211H24.2092V65.4453H26.0334V63.6211Z" fill="url(#paint1_linear_460_3876)"/>
|
||||
<path d="M26.0334 56.3242H24.2092V58.1484H26.0334V56.3242Z" fill="#F3F5FA"/>
|
||||
<path d="M29.7775 78.022H27.9534V79.8461H29.7775V78.022Z" fill="#EAEEF9"/>
|
||||
<path d="M29.7775 74.4697H27.9534V76.2939H29.7775V74.4697Z" fill="#EAEEF9"/>
|
||||
<path d="M29.7775 63.6211H27.9534V65.4453H29.7775V63.6211Z" fill="#EAEEF9"/>
|
||||
<path d="M29.7775 49.123H27.9534V50.9472H29.7775V49.123Z" fill="url(#paint2_linear_460_3876)"/>
|
||||
<path d="M33.5222 78.022H31.698V79.8461H33.5222V78.022Z" fill="#EAEEF9"/>
|
||||
<path d="M33.5222 70.8208H31.698V72.645H33.5222V70.8208Z" fill="#EAEEF9"/>
|
||||
<path d="M33.5222 67.1719H31.698V68.9961H33.5222V67.1719Z" fill="#EAEEF9"/>
|
||||
<path d="M33.5222 63.6211H31.698V65.4453H33.5222V63.6211Z" fill="url(#paint3_linear_460_3876)"/>
|
||||
<path d="M33.5222 59.9722H31.698V61.7963H33.5222V59.9722Z" fill="#F3F5FA"/>
|
||||
<path d="M33.5222 56.3242H31.698V58.1484H33.5222V56.3242Z" fill="#EAEEF9"/>
|
||||
<path d="M33.5222 49.123H31.698V50.9472H33.5222V49.123Z" fill="#EAEEF9"/>
|
||||
<path d="M33.5222 45.4746H31.698V47.2988H33.5222V45.4746Z" fill="#F3F5FA"/>
|
||||
<path d="M37.2663 74.4697H35.4421V76.2939H37.2663V74.4697Z" fill="#EAEEF9"/>
|
||||
<path d="M37.2663 70.8208H35.4421V72.645H37.2663V70.8208Z" fill="#EAEEF9"/>
|
||||
<path d="M37.2663 59.9722H35.4421V61.7963H37.2663V59.9722Z" fill="#F3F5FA"/>
|
||||
<path d="M37.2663 52.7715H35.4421V54.5957H37.2663V52.7715Z" fill="#EAEEF9"/>
|
||||
<path d="M41.0112 78.022H39.187V79.8461H41.0112V78.022Z" fill="#EAEEF9"/>
|
||||
<path d="M41.0112 74.4697H39.187V76.2939H41.0112V74.4697Z" fill="#EAEEF9"/>
|
||||
<path d="M41.0112 63.6211H39.187V65.4453H41.0112V63.6211Z" fill="#EAEEF9"/>
|
||||
<path d="M41.0112 59.9722H39.187V61.7963H41.0112V59.9722Z" fill="url(#paint4_linear_460_3876)"/>
|
||||
<path d="M41.0112 56.3242H39.187V58.1484H41.0112V56.3242Z" fill="#F3F5FA"/>
|
||||
<path d="M44.7553 78.022H42.9312V79.8461H44.7553V78.022Z" fill="#EAEEF9"/>
|
||||
<path d="M44.7553 74.4697H42.9312V76.2939H44.7553V74.4697Z" fill="#EAEEF9"/>
|
||||
<path d="M44.7553 70.8208H42.9312V72.645H44.7553V70.8208Z" fill="#EAEEF9"/>
|
||||
<path d="M44.7553 67.1719H42.9312V68.9961H44.7553V67.1719Z" fill="#EAEEF9"/>
|
||||
<path d="M44.7553 63.6211H42.9312V65.4453H44.7553V63.6211Z" fill="#EAEEF9"/>
|
||||
<path d="M44.7553 59.9722H42.9312V61.7963H44.7553V59.9722Z" fill="#EAEEF9"/>
|
||||
<path d="M44.7553 49.123H42.9312V50.9472H44.7553V49.123Z" fill="#EAEEF9"/>
|
||||
<path d="M48.4997 78.022H46.6755V79.8461H48.4997V78.022Z" fill="#EAEEF9"/>
|
||||
<path d="M48.4997 74.4697H46.6755V76.2939H48.4997V74.4697Z" fill="#EAEEF9"/>
|
||||
<path d="M48.4997 70.8208H46.6755V72.645H48.4997V70.8208Z" fill="#EAEEF9"/>
|
||||
<path d="M48.4997 63.6211H46.6755V65.4453H48.4997V63.6211Z" fill="#EAEEF9"/>
|
||||
<path d="M48.4997 59.9722H46.6755V61.7963H48.4997V59.9722Z" fill="#F3F5FA"/>
|
||||
<path d="M52.2439 78.022H50.4197V79.8461H52.2439V78.022Z" fill="url(#paint5_linear_460_3876)"/>
|
||||
<path d="M52.2439 74.4697H50.4197V76.2939H52.2439V74.4697Z" fill="#EAEEF9"/>
|
||||
<path d="M52.2439 70.8208H50.4197V72.645H52.2439V70.8208Z" fill="#EAEEF9"/>
|
||||
<path d="M52.2439 67.1719H50.4197V68.9961H52.2439V67.1719Z" fill="#F3F5FA"/>
|
||||
<path d="M52.2439 63.6211H50.4197V65.4453H52.2439V63.6211Z" fill="#EAEEF9"/>
|
||||
<path d="M52.2439 56.3242H50.4197V58.1484H52.2439V56.3242Z" fill="#EAEEF9"/>
|
||||
<path d="M56.0839 78.022H54.2598V79.8461H56.0839V78.022Z" fill="#EAEEF9"/>
|
||||
<path d="M56.0839 74.4697H54.2598V76.2939H56.0839V74.4697Z" fill="#EAEEF9"/>
|
||||
<path d="M56.0839 70.8208H54.2598V72.645H56.0839V70.8208Z" fill="url(#paint6_linear_460_3876)"/>
|
||||
<path d="M56.0839 67.1719H54.2598V68.9961H56.0839V67.1719Z" fill="#EAEEF9"/>
|
||||
<path d="M56.0839 63.6211H54.2598V65.4453H56.0839V63.6211Z" fill="#EAEEF9"/>
|
||||
<path d="M56.0839 59.9722H54.2598V61.7963H56.0839V59.9722Z" fill="#EAEEF9"/>
|
||||
<path d="M59.8286 78.022H58.0044V79.8461H59.8286V78.022Z" fill="#EAEEF9"/>
|
||||
<path d="M59.8286 74.4697H58.0044V76.2939H59.8286V74.4697Z" fill="#EAEEF9"/>
|
||||
<path d="M59.8286 70.8208H58.0044V72.645H59.8286V70.8208Z" fill="#EAEEF9"/>
|
||||
<path d="M59.8286 63.6211H58.0044V65.4453H59.8286V63.6211Z" fill="#F3F5FA"/>
|
||||
<path d="M59.8286 56.3242H58.0044V58.1484H59.8286V56.3242Z" fill="#EAEEF9"/>
|
||||
<path d="M59.8286 45.4746H58.0044V47.2988H59.8286V45.4746Z" fill="#F3F5FA"/>
|
||||
<path d="M63.573 74.4697H61.7488V76.2939H63.573V74.4697Z" fill="#EAEEF9"/>
|
||||
<path d="M63.573 70.8208H61.7488V72.645H63.573V70.8208Z" fill="#F3F5FA"/>
|
||||
<path d="M63.573 67.1719H61.7488V68.9961H63.573V67.1719Z" fill="#EAEEF9"/>
|
||||
<path d="M63.573 52.7715H61.7488V54.5957H63.573V52.7715Z" fill="#EAEEF9"/>
|
||||
<path d="M67.3176 78.022H65.4934V79.8461H67.3176V78.022Z" fill="#EAEEF9"/>
|
||||
<path d="M67.3176 70.8208H65.4934V72.645H67.3176V70.8208Z" fill="#EAEEF9"/>
|
||||
<path d="M67.3176 67.1719H65.4934V68.9961H67.3176V67.1719Z" fill="url(#paint7_linear_460_3876)"/>
|
||||
<path d="M67.3176 63.6211H65.4934V65.4453H67.3176V63.6211Z" fill="#EAEEF9"/>
|
||||
<path d="M67.3176 59.9722H65.4934V61.7963H67.3176V59.9722Z" fill="#F3F5FA"/>
|
||||
<path d="M67.3176 56.3242H65.4934V58.1484H67.3176V56.3242Z" fill="url(#paint8_linear_460_3876)"/>
|
||||
<path d="M71.0617 78.022H69.2375V79.8461H71.0617V78.022Z" fill="#EAEEF9"/>
|
||||
<path d="M71.0617 67.1719H69.2375V68.9961H71.0617V67.1719Z" fill="#F3F5FA"/>
|
||||
<path d="M71.0617 59.9722H69.2375V61.7963H71.0617V59.9722Z" fill="#EAEEF9"/>
|
||||
<path d="M74.8061 78.022H72.9819V79.8461H74.8061V78.022Z" fill="#EAEEF9"/>
|
||||
<path d="M74.8061 74.4697H72.9819V76.2939H74.8061V74.4697Z" fill="#EAEEF9"/>
|
||||
<path d="M74.8061 70.8208H72.9819V72.645H74.8061V70.8208Z" fill="#EAEEF9"/>
|
||||
<path d="M74.8061 67.1719H72.9819V68.9961H74.8061V67.1719Z" fill="#EAEEF9"/>
|
||||
<path d="M74.8061 63.6211H72.9819V65.4453H74.8061V63.6211Z" fill="#F3F5FA"/>
|
||||
<path d="M74.8061 52.7715H72.9819V54.5957H74.8061V52.7715Z" fill="#EAEEF9"/>
|
||||
<path d="M78.5502 78.022H76.7261V79.8461H78.5502V78.022Z" fill="#EAEEF9"/>
|
||||
<path d="M78.5502 70.8208H76.7261V72.645H78.5502V70.8208Z" fill="#EAEEF9"/>
|
||||
<path d="M78.5502 67.1719H76.7261V68.9961H78.5502V67.1719Z" fill="#F3F5FA"/>
|
||||
<path d="M76.7923 90.769L78.6165 90.769L78.6165 88.9449L76.7923 88.9449L76.7923 90.769Z" fill="#EAEEF9"/>
|
||||
<path d="M76.7923 87.0923L78.6165 87.0923L78.6165 85.2681L76.7923 85.2681L76.7923 87.0923Z" fill="#EAEEF9"/>
|
||||
<path d="M76.7923 83.5127L78.6165 83.5127L78.6165 81.6885L76.7923 81.6885L76.7923 83.5127Z" fill="#EAEEF9"/>
|
||||
<path d="M73.0247 94.3491L74.8489 94.3491L74.8489 92.5249L73.0247 92.5249L73.0247 94.3491Z" fill="#EAEEF9"/>
|
||||
<path d="M73.0247 90.769L74.8489 90.769L74.8489 88.9449L73.0247 88.9449L73.0247 90.769Z" fill="#EAEEF9"/>
|
||||
<path d="M73.0247 83.5127L74.8489 83.5127L74.8489 81.6885L73.0247 81.6885L73.0247 83.5127Z" fill="#EAEEF9"/>
|
||||
<path d="M69.2571 94.3491L71.0813 94.3491L71.0813 92.5249L69.2571 92.5249L69.2571 94.3491Z" fill="#EAEEF9"/>
|
||||
<path d="M69.2571 90.769L71.0813 90.769L71.0813 88.9449L69.2571 88.9449L69.2571 90.769Z" fill="#EAEEF9"/>
|
||||
<path d="M69.2571 87.0923L71.0813 87.0923L71.0813 85.2681L69.2571 85.2681L69.2571 87.0923Z" fill="#EAEEF9"/>
|
||||
<path d="M69.2571 83.5127L71.0813 83.5127L71.0813 81.6885L69.2571 81.6885L69.2571 83.5127Z" fill="#EAEEF9"/>
|
||||
<path d="M65.49 94.3491L67.3142 94.3491L67.3142 92.5249L65.49 92.5249L65.49 94.3491Z" fill="#EAEEF9"/>
|
||||
<path d="M65.49 90.769L67.3142 90.769L67.3142 88.9449L65.49 88.9449L65.49 90.769Z" fill="#EAEEF9"/>
|
||||
<path d="M65.49 87.0923L67.3142 87.0923L67.3142 85.2681L65.49 85.2681L65.49 87.0923Z" fill="#EAEEF9"/>
|
||||
<path d="M65.49 83.5127L67.3142 83.5127L67.3142 81.6885L65.49 81.6885L65.49 83.5127Z" fill="#EAEEF9"/>
|
||||
<path d="M61.7225 94.3491L63.5466 94.3491L63.5466 92.5249L61.7225 92.5249L61.7225 94.3491Z" fill="#EAEEF9"/>
|
||||
<path d="M61.7225 90.769L63.5466 90.769L63.5466 88.9449L61.7225 88.9449L61.7225 90.769Z" fill="#EAEEF9"/>
|
||||
<path d="M61.7225 87.0923L63.5466 87.0923L63.5466 85.2681L61.7225 85.2681L61.7225 87.0923Z" fill="#EAEEF9"/>
|
||||
<path d="M57.9551 94.3491L59.7793 94.3491L59.7793 92.5249L57.9551 92.5249L57.9551 94.3491Z" fill="#EAEEF9"/>
|
||||
<path d="M57.9551 90.769L59.7793 90.769L59.7793 88.9449L57.9551 88.9449L57.9551 90.769Z" fill="#EAEEF9"/>
|
||||
<path d="M57.9551 87.0923L59.7793 87.0923L59.7793 85.2681L57.9551 85.2681L57.9551 87.0923Z" fill="#EAEEF9"/>
|
||||
<path d="M57.9551 83.5127L59.7793 83.5127L59.7793 81.6885L57.9551 81.6885L57.9551 83.5127Z" fill="#EAEEF9"/>
|
||||
<path d="M54.1873 94.3491L56.0115 94.3491L56.0115 92.5249L54.1873 92.5249L54.1873 94.3491Z" fill="#EAEEF9"/>
|
||||
<path d="M54.1873 90.769L56.0115 90.769L56.0115 88.9449L54.1873 88.9449L54.1873 90.769Z" fill="#EAEEF9"/>
|
||||
<path d="M54.1873 87.0923L56.0115 87.0923L56.0115 85.2681L54.1873 85.2681L54.1873 87.0923Z" fill="#EAEEF9"/>
|
||||
<path d="M50.4197 94.3427H52.3399V92.5186H50.4197V94.3427Z" fill="url(#paint9_linear_460_3876)"/>
|
||||
<path d="M50.5159 90.769L52.3401 90.769L52.3401 88.9449L50.5159 88.9449L50.5159 90.769Z" fill="#EAEEF9"/>
|
||||
<path d="M50.5159 87.0923L52.3401 87.0923L52.3401 85.2681L50.5159 85.2681L50.5159 87.0923Z" fill="#EAEEF9"/>
|
||||
<path d="M50.5159 83.5127L52.3401 83.5127L52.3401 81.6885L50.5159 81.6885L50.5159 83.5127Z" fill="#F3F5FA"/>
|
||||
<path d="M46.7483 94.3491L48.5725 94.3491L48.5725 92.5249L46.7483 92.5249L46.7483 94.3491Z" fill="#EAEEF9"/>
|
||||
<path d="M46.7483 90.769L48.5725 90.769L48.5725 88.9449L46.7483 88.9449L46.7483 90.769Z" fill="#EAEEF9"/>
|
||||
<path d="M46.6755 87.1425H48.4997V85.3184H46.6755V87.1425Z" fill="url(#paint10_linear_460_3876)"/>
|
||||
<path d="M46.7483 83.5127L48.5725 83.5127L48.5725 81.6885L46.7483 81.6885L46.7483 83.5127Z" fill="#EAEEF9"/>
|
||||
<path d="M42.9812 94.3491L44.8054 94.3491L44.8054 92.5249L42.9812 92.5249L42.9812 94.3491Z" fill="#EAEEF9"/>
|
||||
<path d="M42.9812 90.769L44.8054 90.769L44.8054 88.9449L42.9812 88.9449L42.9812 90.769Z" fill="#EAEEF9"/>
|
||||
<path d="M42.9812 87.0923L44.8054 87.0923L44.8054 85.2681L42.9812 85.2681L42.9812 87.0923Z" fill="#EAEEF9"/>
|
||||
<path d="M39.2137 90.769L41.0378 90.769L41.0378 88.9449L39.2137 88.9449L39.2137 90.769Z" fill="#EAEEF9"/>
|
||||
<path d="M39.2137 87.0923L41.0378 87.0923L41.0378 85.2681L39.2137 85.2681L39.2137 87.0923Z" fill="#F3F5FA"/>
|
||||
<path d="M39.2137 83.5127L41.0378 83.5127L41.0378 81.6885L39.2137 81.6885L39.2137 83.5127Z" fill="#EAEEF9"/>
|
||||
<path d="M35.4463 94.3491L37.2705 94.3491L37.2705 92.5249L35.4463 92.5249L35.4463 94.3491Z" fill="#EAEEF9"/>
|
||||
<path d="M35.4463 87.0923L37.2705 87.0923L37.2705 85.2681L35.4463 85.2681L35.4463 87.0923Z" fill="#EAEEF9"/>
|
||||
<path d="M35.4421 83.4951H37.2663V81.6709H35.4421V83.4951Z" fill="url(#paint11_linear_460_3876)"/>
|
||||
<path d="M31.6788 94.3491L33.5029 94.3491L33.5029 92.5249L31.6788 92.5249L31.6788 94.3491Z" fill="#EAEEF9"/>
|
||||
<path d="M31.6788 83.5127L33.5029 83.5127L33.5029 81.6885L31.6788 81.6885L31.6788 83.5127Z" fill="#F3F5FA"/>
|
||||
<path d="M27.9117 94.3491L29.7358 94.3491L29.7358 92.5249L27.9117 92.5249L27.9117 94.3491Z" fill="#EAEEF9"/>
|
||||
<path d="M27.9117 90.769L29.7358 90.769L29.7358 88.9449L27.9117 88.9449L27.9117 90.769Z" fill="#EAEEF9"/>
|
||||
<path d="M27.9117 87.0923L29.7358 87.0923L29.7358 85.2681L27.9117 85.2681L27.9117 87.0923Z" fill="#EAEEF9"/>
|
||||
<path d="M24.1441 94.3491L25.9683 94.3491L25.9683 92.5249L24.1441 92.5249L24.1441 94.3491Z" fill="#EAEEF9"/>
|
||||
<path d="M24.1441 87.0923L25.9683 87.0923L25.9683 85.2681L24.1441 85.2681L24.1441 87.0923Z" fill="#EAEEF9"/>
|
||||
<path d="M24.1441 83.5127L25.9683 83.5127L25.9683 81.6885L24.1441 81.6885L24.1441 83.5127Z" fill="#F3F5FA"/>
|
||||
<path d="M51.4762 53.0599C53.7033 53.0599 55.5086 51.2545 55.5086 49.0275C55.5086 46.8005 53.7033 44.9951 51.4762 44.9951C49.2492 44.9951 47.4438 46.8005 47.4438 49.0275C47.4438 51.2545 49.2492 53.0599 51.4762 53.0599Z" fill="#EAEEF9"/>
|
||||
<path d="M51.2841 49.3155L43.7954 33.666" stroke="url(#paint12_linear_460_3876)" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M67.7985 94.6328C67.7985 94.4408 67.7025 94.1527 67.6065 93.9607C67.5104 93.5767 67.4144 93.2886 67.3184 93.0006C67.2224 92.7126 67.1264 92.5206 67.0304 92.3286C66.0703 90.3124 64.5342 88.3922 62.422 87.3361C61.3659 86.856 60.2137 86.472 58.9656 86.472C58.5816 86.472 58.2935 86.472 58.0055 86.472C57.1414 86.472 56.5654 86.376 56.2774 86.28C55.7973 86.184 55.7013 85.9919 55.7013 85.9919V82.4396C56.8534 81.4795 57.8135 80.5194 58.6776 79.3673C59.4457 78.2152 60.1177 76.9671 60.4058 75.6229C61.7499 75.3349 62.71 74.0868 62.518 72.6466C62.422 71.9746 62.0379 71.4945 62.0379 70.8225C62.0379 70.5344 62.0379 70.1504 62.0379 69.8624C62.0379 69.6703 62.0379 69.4783 62.0379 69.1903C62.0379 68.9983 62.0379 68.8063 61.9419 68.5182C61.8459 67.7502 61.6539 66.8861 61.2698 65.926C61.1738 65.6379 60.9818 65.3499 60.8858 65.0619C59.1576 61.7976 55.7013 59.5894 51.7649 59.5894C50.9968 59.5894 50.2288 59.6854 49.4607 59.8774C48.1166 60.1654 46.7724 60.8375 45.6203 61.7016C45.4283 61.8936 45.1403 62.0856 44.9482 62.2776C44.9482 62.2776 44.8522 62.3736 44.7562 62.3736C43.5081 63.5257 42.548 64.9659 42.068 66.598C41.4919 68.2302 41.3959 69.8624 41.5879 71.5905V71.6865V71.7825C41.5879 72.0706 41.6839 72.0706 41.4919 72.2626C41.3959 72.3586 41.3959 72.4546 41.2999 72.5506C41.0119 73.0307 40.8198 73.7027 41.1079 74.4708C41.5879 75.9109 42.644 75.7189 43.7001 76.583C43.6041 76.583 43.6041 76.679 43.5081 76.679L42.26 77.1591C38.0356 78.5032 36.2114 81.8635 37.2675 84.4558C37.4595 84.7438 37.5555 85.1278 37.8436 85.4159C38.6116 86.376 39.8597 87.144 41.6839 87.5281C41.2039 87.5281 40.7238 87.8161 40.4358 88.1041C38.3236 89.7363 36.9795 92.3286 36.5954 94.8248C36.4994 95.5929 37.0755 96.2649 37.8436 96.2649H66.4543C67.3184 96.1689 67.9905 95.4009 67.7985 94.6328ZM45.5243 80.4234C45.8123 80.8074 46.1004 81.1915 46.4844 81.5755C46.7724 81.8635 47.0605 82.0556 47.4445 82.3436C47.6365 82.5356 47.9245 82.6316 48.1166 82.8236L48.2126 82.9196C48.3086 82.9196 48.3086 83.0156 48.4046 83.1117V85.2239L48.3086 85.1278C48.1166 84.9358 47.9245 84.7438 47.7325 84.6478C47.4445 84.4558 47.0605 84.2638 46.7724 84.0717C46.6764 83.9757 46.5804 83.9757 46.4844 83.8797C45.5243 83.3037 44.5642 82.6316 44.5642 81.9595C44.5642 81.4795 44.8522 80.9994 45.5243 80.4234Z" fill="#EAEEF9"/>
|
||||
<path d="M60.2134 75.6231C59.9253 77.0632 59.3493 78.3114 58.4852 79.3675C57.6211 80.5196 56.661 81.4797 55.5089 82.4398V83.9759H51.5725V66.1182H60.9814C61.3655 67.0783 61.5575 67.8463 61.6535 68.7104C61.6535 68.9024 61.6535 69.1905 61.7495 69.3825C61.7495 69.5745 61.7495 69.7665 61.7495 70.0545C61.7495 70.3426 61.7495 70.7266 61.7495 71.0146C61.7495 71.6867 62.1335 72.1668 62.2296 72.8388C62.5176 74.0869 61.6535 75.3351 60.2134 75.6231Z" fill="#E3E7F5"/>
|
||||
<path d="M67.9902 94.8244C67.1261 95.6885 65.782 95.4965 64.8219 96.1685H37.9393C37.2672 96.1685 36.7872 95.6885 36.6912 95.1124C36.6912 95.0164 36.6912 94.8244 36.6912 94.7284C37.0752 92.2321 38.4193 89.7359 40.5315 88.0077C40.8196 87.7197 41.2996 87.5277 41.7797 87.4317C39.9555 87.0476 38.7074 86.2796 37.9393 85.3195C37.6513 85.0314 37.5552 84.7434 37.3632 84.3594H44.1799L44.4679 84.7434C46.0041 86.8556 48.4043 88.1037 50.9966 88.1037C52.9167 88.1037 54.8369 87.4317 56.2771 86.1836C56.5651 86.2796 56.9491 86.2796 57.5252 86.3756C57.7172 86.3756 57.8132 86.3756 58.0052 86.3756C58.2933 86.3756 58.5813 86.3756 58.9653 86.3756C60.2135 86.3756 61.3656 86.7596 62.4217 87.2397C64.5339 88.2958 66.166 90.2159 67.0301 92.2321C67.1261 92.4242 67.2221 92.7122 67.3182 92.9042C67.4142 93.2882 67.8942 94.5364 67.9902 94.8244Z" fill="white"/>
|
||||
<path d="M67.9903 94.8243C67.1262 95.6883 65.7821 95.4963 64.822 96.1684H38.2274C37.6513 95.8804 37.1713 95.4963 36.5952 95.1123C36.5952 95.0163 36.5952 94.8243 36.5952 94.7283C36.9793 92.232 38.3234 89.7358 40.4356 88.0076C40.7236 87.7196 41.2037 87.5276 41.6837 87.4315C39.8595 87.0475 38.6114 86.2794 37.8433 85.3193H43.6039C45.2361 87.6236 47.9243 89.0637 50.9006 89.0637C53.4929 89.0637 55.7011 88.0076 57.4292 86.2794C57.6213 86.2794 57.7173 86.2794 57.9093 86.2794C58.1973 86.2794 58.4854 86.2794 58.8694 86.2794C60.1175 86.2794 61.2696 86.6635 62.3257 87.1435C64.4379 88.1996 66.0701 90.1198 66.9342 92.136C67.0302 92.328 67.1262 92.6161 67.2222 92.8081C67.4142 93.2881 67.8943 94.5362 67.9903 94.8243Z" fill="url(#paint13_linear_460_3876)"/>
|
||||
<path d="M55.7009 82.4385C55.6048 82.4385 55.6048 82.4385 55.7009 82.4385L55.6048 86.2789L46.0039 86.5669L46.484 83.8786C46.58 83.9746 46.676 83.9746 46.772 84.0706C47.06 84.2627 47.444 84.4547 47.7321 84.6467C47.9241 84.7427 48.1161 84.9347 48.3081 85.1267L48.4041 85.2227V83.1105C48.3081 83.1105 48.3081 83.0145 48.2121 83.0145C50.1323 83.8786 52.4365 84.3587 55.7009 82.4385Z" fill="url(#paint14_linear_460_3876)"/>
|
||||
<path d="M61.8457 69.2862C59.9255 69.9582 57.9093 70.1503 55.8931 70.0543C52.7248 69.7662 49.6525 68.5181 47.2523 66.4059C46.5802 68.7101 44.564 70.4383 42.3558 71.3984C42.0678 71.4944 41.7798 71.6864 41.4917 71.7824V71.6864C41.2997 70.0543 41.3957 68.3261 41.9718 66.6939C42.5478 65.0618 43.4119 63.6216 44.66 62.4695C44.756 62.3735 44.756 62.3735 44.8521 62.3735C45.0441 62.1815 45.3321 61.9895 45.5241 61.7974C46.6762 60.9334 47.9244 60.3573 49.3645 60.0693C50.1326 59.8773 50.9006 59.7812 51.6687 59.7812C55.6051 59.7812 59.0614 61.9895 60.7896 65.2538C61.4617 66.5019 61.7497 67.654 61.8457 68.6141C61.8457 68.9021 61.8457 69.0942 61.8457 69.2862Z" fill="#1C3754"/>
|
||||
<path d="M49.7483 91.6559C48.8842 92.712 47.3481 92.712 46.0039 92.712C47.4441 91.3678 46.58 86.9514 41.6835 87.4315H41.5875C34.8668 86.1833 35.6349 79.1746 42.1636 77.1585L43.2197 76.7744C43.3157 76.8704 43.3157 76.8704 43.4117 76.9664C43.8917 78.3106 44.6598 79.4627 45.4279 80.4228C42.7396 82.631 46.484 83.3991 48.3082 85.0312C49.9403 85.9913 51.2844 89.8317 49.7483 91.6559Z" fill="#1C3754"/>
|
||||
<path d="M80.4706 94.5361V118.058C80.4706 120.171 78.7424 121.899 76.6302 121.899H26.3213C24.2091 121.899 22.481 120.171 22.481 118.058V94.5361H80.4706Z" fill="white"/>
|
||||
<path d="M58.9647 103.56H43.9872C43.2191 103.56 42.6431 102.984 42.6431 102.216C42.6431 101.448 43.2191 100.872 43.9872 100.872H58.9647C59.7327 100.872 60.3088 101.448 60.3088 102.216C60.3088 102.984 59.7327 103.56 58.9647 103.56Z" fill="url(#paint15_linear_460_3876)"/>
|
||||
<path d="M65.0138 109.513H37.8432C37.0751 109.513 36.499 108.937 36.499 108.169C36.499 107.401 37.0751 106.825 37.8432 106.825H65.0138C65.7819 106.825 66.3579 107.401 66.3579 108.169C66.3579 108.937 65.7819 109.513 65.0138 109.513Z" fill="#E3EAF2"/>
|
||||
<path d="M56.757 115.561H46.0999C45.6199 115.561 45.2358 115.177 45.2358 114.697V113.737C45.2358 113.257 45.6199 112.873 46.0999 112.873H56.757C57.237 112.873 57.6211 113.257 57.6211 113.737V114.697C57.6211 115.177 57.237 115.561 56.757 115.561Z" fill="#E3EAF2"/>
|
||||
<path d="M66.4782 37.8147C67.728 37.411 68.4119 36.0769 68.0057 34.8349C67.5995 33.5928 66.257 32.9132 65.0071 33.3169C63.7573 33.7206 63.0735 35.0547 63.4797 36.2968C63.8859 37.5388 65.2284 38.2184 66.4782 37.8147Z" fill="#EAEEF9"/>
|
||||
<path d="M71.6735 30.0986C72.5233 29.8241 72.9884 28.9169 72.7121 28.0723C72.4359 27.2277 71.523 26.7655 70.6731 27.0401C69.8232 27.3146 69.3582 28.2218 69.6344 29.0664C69.9107 29.911 70.8236 30.3731 71.6735 30.0986Z" fill="#EAEEF9"/>
|
||||
<path d="M144.246 28.5997C144.751 28.1416 144.786 27.3638 144.325 26.8624C143.864 26.3611 143.081 26.3261 142.577 26.7842C142.072 27.2424 142.037 28.0202 142.498 28.5215C142.959 29.0229 143.742 29.0579 144.246 28.5997Z" fill="#EAEEF9"/>
|
||||
<path d="M72.5904 107.531C73.2113 106.967 73.2547 106.01 72.6872 105.393C72.1198 104.776 71.1565 104.733 70.5356 105.296C69.9147 105.86 69.8714 106.818 70.4388 107.435C71.0062 108.052 71.9695 108.095 72.5904 107.531Z" fill="#EAEEF9"/>
|
||||
<path d="M152.845 51.4548V87.1161C152.845 87.6836 152.845 88.1566 152.749 88.7241C152.274 92.7916 149.894 96.3861 146.277 98.4671L115.247 116.25C112.296 117.953 108.774 118.426 105.538 117.575C104.301 117.291 103.158 116.818 102.111 116.25L70.9861 98.3725C68.6065 97.0482 66.798 95.0618 65.6558 92.697C64.7992 90.9943 64.3232 89.0079 64.3232 87.0215V51.4548C64.3232 49.563 64.704 47.7657 65.4655 46.0631C66.6077 43.6037 68.4162 41.5227 70.891 40.1038L102.016 22.3205C105.062 20.6178 108.489 20.1448 111.82 20.9962C112.962 21.28 114.105 21.7529 115.247 22.3205L146.277 40.1038C149.037 41.7119 151.036 44.1712 152.083 47.1036C152.559 48.4279 152.845 49.9414 152.845 51.4548Z" fill="#EAEEF9"/>
|
||||
<path d="M108.679 38.4957L116.104 23.0771" stroke="url(#paint16_linear_460_3876)" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<g filter="url(#filter1_d_460_3876)">
|
||||
<path d="M137.33 33.1982V106.223C137.33 108.304 135.617 110.007 133.523 110.007H83.646C81.5519 110.007 79.8386 108.304 79.8386 106.223V33.1982C79.8386 31.1172 81.5519 29.4146 83.646 29.4146H133.523C135.617 29.4146 137.33 31.1172 137.33 33.1982Z" fill="white"/>
|
||||
</g>
|
||||
<path d="M83.3603 63.2793H81.5518V65.0765H83.3603V63.2793Z" fill="#EAEEF9"/>
|
||||
<path d="M83.3603 59.6851H81.5518V61.4823H83.3603V59.6851Z" fill="#EAEEF9"/>
|
||||
<path d="M83.3603 56.0898H81.5518V57.8871H83.3603V56.0898Z" fill="#EAEEF9"/>
|
||||
<path d="M83.3603 52.5898H81.5518V54.3871H83.3603V52.5898Z" fill="url(#paint17_linear_460_3876)"/>
|
||||
<path d="M83.3603 45.4004H81.5518V47.1976H83.3603V45.4004Z" fill="#F3F5FA"/>
|
||||
<path d="M87.0727 66.7793H85.2642V68.5765H87.0727V66.7793Z" fill="#EAEEF9"/>
|
||||
<path d="M87.0727 63.2793H85.2642V65.0765H87.0727V63.2793Z" fill="#EAEEF9"/>
|
||||
<path d="M87.0727 52.5898H85.2642V54.3871H87.0727V52.5898Z" fill="#EAEEF9"/>
|
||||
<path d="M87.0727 38.3066H85.2642V40.1039H87.0727V38.3066Z" fill="url(#paint18_linear_460_3876)"/>
|
||||
<path d="M90.7851 66.7793H88.9766V68.5765H90.7851V66.7793Z" fill="#EAEEF9"/>
|
||||
<path d="M90.7851 59.6851H88.9766V61.4823H90.7851V59.6851Z" fill="#EAEEF9"/>
|
||||
<path d="M90.7851 56.0898H88.9766V57.8871H90.7851V56.0898Z" fill="#EAEEF9"/>
|
||||
<path d="M90.7851 52.5898H88.9766V54.3871H90.7851V52.5898Z" fill="url(#paint19_linear_460_3876)"/>
|
||||
<path d="M90.7851 48.9951H88.9766V50.7924H90.7851V48.9951Z" fill="#F3F5FA"/>
|
||||
<path d="M90.7851 45.4004H88.9766V47.1976H90.7851V45.4004Z" fill="#EAEEF9"/>
|
||||
<path d="M90.7851 38.3066H88.9766V40.1039H90.7851V38.3066Z" fill="#EAEEF9"/>
|
||||
<path d="M90.7851 34.7124H88.9766V36.5097H90.7851V34.7124Z" fill="#F3F5FA"/>
|
||||
<path d="M94.497 63.2793H92.6885V65.0765H94.497V63.2793Z" fill="#EAEEF9"/>
|
||||
<path d="M94.497 59.6851H92.6885V61.4823H94.497V59.6851Z" fill="#EAEEF9"/>
|
||||
<path d="M94.497 48.9951H92.6885V50.7924H94.497V48.9951Z" fill="#F3F5FA"/>
|
||||
<path d="M94.497 41.9014H92.6885V43.6986H94.497V41.9014Z" fill="#EAEEF9"/>
|
||||
<path d="M98.3036 66.7793H96.4951V68.5765H98.3036V66.7793Z" fill="#EAEEF9"/>
|
||||
<path d="M98.3036 63.2793H96.4951V65.0765H98.3036V63.2793Z" fill="#EAEEF9"/>
|
||||
<path d="M98.3036 52.5898H96.4951V54.3871H98.3036V52.5898Z" fill="#EAEEF9"/>
|
||||
<path d="M98.3036 48.9951H96.4951V50.7924H98.3036V48.9951Z" fill="url(#paint20_linear_460_3876)"/>
|
||||
<path d="M98.3036 45.4004H96.4951V47.1976H98.3036V45.4004Z" fill="#F3F5FA"/>
|
||||
<path d="M102.017 66.7793H100.208V68.5765H102.017V66.7793Z" fill="#EAEEF9"/>
|
||||
<path d="M102.017 63.2793H100.208V65.0765H102.017V63.2793Z" fill="#EAEEF9"/>
|
||||
<path d="M102.017 59.6851H100.208V61.4823H102.017V59.6851Z" fill="#EAEEF9"/>
|
||||
<path d="M102.017 56.0898H100.208V57.8871H102.017V56.0898Z" fill="#EAEEF9"/>
|
||||
<path d="M102.017 52.5898H100.208V54.3871H102.017V52.5898Z" fill="#EAEEF9"/>
|
||||
<path d="M102.017 48.9951H100.208V50.7924H102.017V48.9951Z" fill="#EAEEF9"/>
|
||||
<path d="M102.017 38.3066H100.208V40.1039H102.017V38.3066Z" fill="#EAEEF9"/>
|
||||
<path d="M105.729 66.7793H103.92V68.5765H105.729V66.7793Z" fill="#EAEEF9"/>
|
||||
<path d="M105.729 63.2793H103.92V65.0765H105.729V63.2793Z" fill="#EAEEF9"/>
|
||||
<path d="M105.729 59.6851H103.92V61.4823H105.729V59.6851Z" fill="#EAEEF9"/>
|
||||
<path d="M105.729 52.5898H103.92V54.3871H105.729V52.5898Z" fill="#EAEEF9"/>
|
||||
<path d="M105.729 48.9951H103.92V50.7924H105.729V48.9951Z" fill="#F3F5FA"/>
|
||||
<path d="M109.441 66.7793H107.632V68.5765H109.441V66.7793Z" fill="url(#paint21_linear_460_3876)"/>
|
||||
<path d="M109.441 63.2793H107.632V65.0765H109.441V63.2793Z" fill="#EAEEF9"/>
|
||||
<path d="M109.441 59.6851H107.632V61.4823H109.441V59.6851Z" fill="#EAEEF9"/>
|
||||
<path d="M109.441 56.0898H107.632V57.8871H109.441V56.0898Z" fill="#F3F5FA"/>
|
||||
<path d="M109.441 52.5898H107.632V54.3871H109.441V52.5898Z" fill="#EAEEF9"/>
|
||||
<path d="M109.441 45.4004H107.632V47.1976H109.441V45.4004Z" fill="#EAEEF9"/>
|
||||
<path d="M113.153 66.7793H111.344V68.5765H113.153V66.7793Z" fill="#EAEEF9"/>
|
||||
<path d="M113.153 63.2793H111.344V65.0765H113.153V63.2793Z" fill="#EAEEF9"/>
|
||||
<path d="M113.153 59.6851H111.344V61.4823H113.153V59.6851Z" fill="url(#paint22_linear_460_3876)"/>
|
||||
<path d="M113.153 56.0898H111.344V57.8871H113.153V56.0898Z" fill="#EAEEF9"/>
|
||||
<path d="M113.153 52.5898H111.344V54.3871H113.153V52.5898Z" fill="#EAEEF9"/>
|
||||
<path d="M113.153 48.9951H111.344V50.7924H113.153V48.9951Z" fill="#EAEEF9"/>
|
||||
<path d="M116.866 66.7793H115.057V68.5765H116.866V66.7793Z" fill="#EAEEF9"/>
|
||||
<path d="M116.866 63.2793H115.057V65.0765H116.866V63.2793Z" fill="#EAEEF9"/>
|
||||
<path d="M116.866 59.6851H115.057V61.4823H116.866V59.6851Z" fill="#EAEEF9"/>
|
||||
<path d="M116.866 52.5898H115.057V54.3871H116.866V52.5898Z" fill="#F3F5FA"/>
|
||||
<path d="M116.866 45.4004H115.057V47.1976H116.866V45.4004Z" fill="#EAEEF9"/>
|
||||
<path d="M116.866 34.7124H115.057V36.5097H116.866V34.7124Z" fill="#F3F5FA"/>
|
||||
<path d="M120.578 63.2793H118.769V65.0765H120.578V63.2793Z" fill="#EAEEF9"/>
|
||||
<path d="M120.578 59.6851H118.769V61.4823H120.578V59.6851Z" fill="#F3F5FA"/>
|
||||
<path d="M120.578 56.0898H118.769V57.8871H120.578V56.0898Z" fill="#EAEEF9"/>
|
||||
<path d="M120.578 41.9014H118.769V43.6986H120.578V41.9014Z" fill="#EAEEF9"/>
|
||||
<path d="M124.289 66.7793H122.481V68.5765H124.289V66.7793Z" fill="#EAEEF9"/>
|
||||
<path d="M124.289 59.6851H122.481V61.4823H124.289V59.6851Z" fill="#EAEEF9"/>
|
||||
<path d="M124.289 56.0898H122.481V57.8871H124.289V56.0898Z" fill="url(#paint23_linear_460_3876)"/>
|
||||
<path d="M124.289 52.5898H122.481V54.3871H124.289V52.5898Z" fill="#EAEEF9"/>
|
||||
<path d="M124.289 48.9951H122.481V50.7924H124.289V48.9951Z" fill="#F3F5FA"/>
|
||||
<path d="M124.289 45.4004H122.481V47.1976H124.289V45.4004Z" fill="url(#paint24_linear_460_3876)"/>
|
||||
<path d="M128.097 66.7793H126.289V68.5765H128.097V66.7793Z" fill="#EAEEF9"/>
|
||||
<path d="M128.097 56.0898H126.289V57.8871H128.097V56.0898Z" fill="#F3F5FA"/>
|
||||
<path d="M128.097 48.9951H126.289V50.7924H128.097V48.9951Z" fill="#EAEEF9"/>
|
||||
<path d="M131.809 66.7793H130V68.5765H131.809V66.7793Z" fill="#EAEEF9"/>
|
||||
<path d="M131.809 63.2793H130V65.0765H131.809V63.2793Z" fill="#EAEEF9"/>
|
||||
<path d="M131.809 59.6851H130V61.4823H131.809V59.6851Z" fill="#EAEEF9"/>
|
||||
<path d="M131.809 56.0898H130V57.8871H131.809V56.0898Z" fill="#EAEEF9"/>
|
||||
<path d="M131.809 52.5898H130V54.3871H131.809V52.5898Z" fill="#F3F5FA"/>
|
||||
<path d="M131.809 41.9014H130V43.6986H131.809V41.9014Z" fill="#EAEEF9"/>
|
||||
<path d="M135.522 66.7793H133.713V68.5765H135.522V66.7793Z" fill="#EAEEF9"/>
|
||||
<path d="M135.522 59.6851H133.713V61.4823H135.522V59.6851Z" fill="#EAEEF9"/>
|
||||
<path d="M135.522 56.0898H133.713V57.8871H135.522V56.0898Z" fill="#F3F5FA"/>
|
||||
<path d="M133.682 79.3379L135.49 79.3379L135.49 77.5406L133.682 77.5406L133.682 79.3379Z" fill="#EAEEF9"/>
|
||||
<path d="M133.682 75.7158L135.49 75.7158L135.49 73.9186L133.682 73.9186L133.682 75.7158Z" fill="#EAEEF9"/>
|
||||
<path d="M133.682 72.1885L135.49 72.1885L135.49 70.3912L133.682 70.3912L133.682 72.1885Z" fill="#EAEEF9"/>
|
||||
<path d="M129.947 82.8652L131.755 82.8652L131.755 81.068L129.947 81.068L129.947 82.8652Z" fill="#EAEEF9"/>
|
||||
<path d="M129.947 79.3379L131.755 79.3379L131.755 77.5406L129.947 77.5406L129.947 79.3379Z" fill="#EAEEF9"/>
|
||||
<path d="M129.947 72.1885L131.755 72.1885L131.755 70.3912L129.947 70.3912L129.947 72.1885Z" fill="#EAEEF9"/>
|
||||
<path d="M126.212 82.8652L128.02 82.8652L128.02 81.068L126.212 81.068L126.212 82.8652Z" fill="#EAEEF9"/>
|
||||
<path d="M126.212 79.3379L128.02 79.3379L128.02 77.5406L126.212 77.5406L126.212 79.3379Z" fill="#EAEEF9"/>
|
||||
<path d="M126.212 75.7158L128.02 75.7158L128.02 73.9186L126.212 73.9186L126.212 75.7158Z" fill="#EAEEF9"/>
|
||||
<path d="M126.212 72.1885L128.02 72.1885L128.02 70.3912L126.212 70.3912L126.212 72.1885Z" fill="#EAEEF9"/>
|
||||
<path d="M122.571 82.8652L124.38 82.8652L124.38 81.068L122.571 81.068L122.571 82.8652Z" fill="#EAEEF9"/>
|
||||
<path d="M122.571 79.3379L124.38 79.3379L124.38 77.5406L122.571 77.5406L122.571 79.3379Z" fill="#EAEEF9"/>
|
||||
<path d="M122.571 75.7158L124.38 75.7158L124.38 73.9186L122.571 73.9186L122.571 75.7158Z" fill="#EAEEF9"/>
|
||||
<path d="M122.571 72.1885L124.38 72.1885L124.38 70.3912L122.571 70.3912L122.571 72.1885Z" fill="#EAEEF9"/>
|
||||
<path d="M118.837 82.8652L120.646 82.8652L120.646 81.068L118.837 81.068L118.837 82.8652Z" fill="#EAEEF9"/>
|
||||
<path d="M118.837 79.3379L120.646 79.3379L120.646 77.5406L118.837 77.5406L118.837 79.3379Z" fill="#EAEEF9"/>
|
||||
<path d="M118.837 75.7158L120.646 75.7158L120.646 73.9186L118.837 73.9186L118.837 75.7158Z" fill="#EAEEF9"/>
|
||||
<path d="M115.102 82.8652L116.911 82.8652L116.911 81.068L115.102 81.068L115.102 82.8652Z" fill="#EAEEF9"/>
|
||||
<path d="M115.102 79.3379L116.911 79.3379L116.911 77.5406L115.102 77.5406L115.102 79.3379Z" fill="#EAEEF9"/>
|
||||
<path d="M115.102 75.7158L116.911 75.7158L116.911 73.9186L115.102 73.9186L115.102 75.7158Z" fill="#EAEEF9"/>
|
||||
<path d="M115.102 72.1885L116.911 72.1885L116.911 70.3912L115.102 70.3912L115.102 72.1885Z" fill="#EAEEF9"/>
|
||||
<path d="M111.367 82.8652L113.175 82.8652L113.175 81.068L111.367 81.068L111.367 82.8652Z" fill="#EAEEF9"/>
|
||||
<path d="M111.367 79.3379L113.175 79.3379L113.175 77.5406L111.367 77.5406L111.367 79.3379Z" fill="#EAEEF9"/>
|
||||
<path d="M111.367 75.7158L113.175 75.7158L113.175 73.9186L111.367 73.9186L111.367 75.7158Z" fill="#EAEEF9"/>
|
||||
<path d="M107.632 82.8598H109.441V81.0625H107.632V82.8598Z" fill="url(#paint25_linear_460_3876)"/>
|
||||
<path d="M107.632 79.3379L109.441 79.3379L109.441 77.5406L107.632 77.5406L107.632 79.3379Z" fill="#EAEEF9"/>
|
||||
<path d="M107.632 75.7158L109.441 75.7158L109.441 73.9186L107.632 73.9186L107.632 75.7158Z" fill="#EAEEF9"/>
|
||||
<path d="M107.632 72.1885L109.441 72.1885L109.441 70.3912L107.632 70.3912L107.632 72.1885Z" fill="#F3F5FA"/>
|
||||
<path d="M103.896 82.8652L105.705 82.8652L105.705 81.068L103.896 81.068L103.896 82.8652Z" fill="#EAEEF9"/>
|
||||
<path d="M103.896 79.3379L105.705 79.3379L105.705 77.5406L103.896 77.5406L103.896 79.3379Z" fill="#EAEEF9"/>
|
||||
<path d="M103.92 75.765H105.729V73.9678H103.92V75.765Z" fill="url(#paint26_linear_460_3876)"/>
|
||||
<path d="M103.896 72.1885L105.705 72.1885L105.705 70.3912L103.896 70.3912L103.896 72.1885Z" fill="#EAEEF9"/>
|
||||
<path d="M100.162 82.8652L101.97 82.8652L101.97 81.068L100.162 81.068L100.162 82.8652Z" fill="#EAEEF9"/>
|
||||
<path d="M100.162 79.3379L101.97 79.3379L101.97 77.5406L100.162 77.5406L100.162 79.3379Z" fill="#EAEEF9"/>
|
||||
<path d="M100.162 75.7158L101.97 75.7158L101.97 73.9186L100.162 73.9186L100.162 75.7158Z" fill="#EAEEF9"/>
|
||||
<path d="M96.4266 79.3379L98.2351 79.3379L98.2351 77.5406L96.4266 77.5406L96.4266 79.3379Z" fill="#EAEEF9"/>
|
||||
<path d="M96.4266 75.7158L98.2351 75.7158L98.2351 73.9186L96.4266 73.9186L96.4266 75.7158Z" fill="#F3F5FA"/>
|
||||
<path d="M96.4266 72.1885L98.2351 72.1885L98.2351 70.3912L96.4266 70.3912L96.4266 72.1885Z" fill="#EAEEF9"/>
|
||||
<path d="M92.7865 82.8652L94.595 82.8652L94.595 81.068L92.7865 81.068L92.7865 82.8652Z" fill="#EAEEF9"/>
|
||||
<path d="M92.7865 75.7158L94.595 75.7158L94.595 73.9186L92.7865 73.9186L92.7865 75.7158Z" fill="#EAEEF9"/>
|
||||
<path d="M92.6885 72.1703H94.5922V70.373H92.6885V72.1703Z" fill="url(#paint27_linear_460_3876)"/>
|
||||
<path d="M89.0523 82.8652L90.8608 82.8652L90.8608 81.068L89.0523 81.068L89.0523 82.8652Z" fill="#EAEEF9"/>
|
||||
<path d="M89.0523 72.1885L90.8608 72.1885L90.8608 70.3912L89.0523 70.3912L89.0523 72.1885Z" fill="#F3F5FA"/>
|
||||
<path d="M85.317 82.8652L87.1255 82.8652L87.1255 81.068L85.317 81.068L85.317 82.8652Z" fill="#EAEEF9"/>
|
||||
<path d="M85.317 79.3379L87.1255 79.3379L87.1255 77.5406L85.317 77.5406L85.317 79.3379Z" fill="#EAEEF9"/>
|
||||
<path d="M85.317 75.7158L87.1255 75.7158L87.1255 73.9186L85.317 73.9186L85.317 75.7158Z" fill="#EAEEF9"/>
|
||||
<path d="M81.5816 82.8652L83.3901 82.8652L83.3901 81.068L81.5816 81.068L81.5816 82.8652Z" fill="#EAEEF9"/>
|
||||
<path d="M81.5816 75.7158L83.3901 75.7158L83.3901 73.9186L81.5816 73.9186L81.5816 75.7158Z" fill="#EAEEF9"/>
|
||||
<path d="M81.5816 72.1885L83.3901 72.1885L83.3901 70.3912L81.5816 70.3912L81.5816 72.1885Z" fill="#F3F5FA"/>
|
||||
<path d="M108.584 42.185C110.792 42.185 112.582 40.4063 112.582 38.2121C112.582 36.018 110.792 34.2393 108.584 34.2393C106.376 34.2393 104.586 36.018 104.586 38.2121C104.586 40.4063 106.376 42.185 108.584 42.185Z" fill="#EAEEF9"/>
|
||||
<path d="M108.489 38.4957L100.969 23.0771" stroke="url(#paint28_linear_460_3876)" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M125.717 79.8325C125.336 80.2109 125.051 80.5893 124.67 80.8731C120.387 84.8459 114.676 87.2107 108.298 87.2107C103.254 87.2107 98.4943 85.6973 94.5918 82.9541C93.4496 82.1973 92.4025 81.2514 91.4507 80.3055C91.9266 79.6434 92.8784 79.1704 94.7821 78.4137L95.5436 78.1299C96.9714 77.5623 98.9702 76.8056 101.54 75.7651C101.921 75.5759 102.302 75.3867 102.492 75.0083C102.587 74.8192 102.778 74.63 102.778 74.4408C102.968 74.157 102.968 73.7786 102.968 73.4003V68.5761C102.873 68.4815 102.873 68.3869 102.778 68.2923C102.397 67.6302 102.111 66.968 102.016 66.2113L101.635 66.0221C100.398 66.3059 100.493 64.9816 100.208 62.4276C100.112 61.3871 100.208 61.1979 100.684 61.0087L101.064 60.4412C100.112 58.3601 99.7317 56.6575 99.7317 55.144C99.7317 52.7792 100.779 51.1711 102.207 50.4144C101.54 48.9009 101.445 48.2388 101.445 48.2388C101.445 48.2388 106.49 49.0901 108.203 48.7117C110.392 48.2388 113.819 48.8063 115.056 51.7387C115.342 51.8333 115.532 51.9279 115.818 52.0225C117.436 52.8738 118.007 54.0089 118.197 55.2386C118.483 57.5088 117.246 59.9682 116.96 61.0087C116.96 61.0087 116.96 61.1033 117.055 61.1033C117.436 61.2925 117.531 61.5763 117.341 62.5222C117.055 64.9816 117.15 66.4005 115.913 66.1167L114.771 68.0085C114.771 68.1977 114.676 68.2923 114.676 68.4815C114.676 68.8599 114.676 69.522 114.676 73.4949C114.676 73.5895 114.676 73.7786 114.676 73.8732C114.676 74.2516 114.866 74.5354 115.056 74.8192C115.152 74.9137 115.247 75.0083 115.342 75.1029C115.627 75.3867 115.913 75.5759 116.294 75.7651C119.149 76.9948 121.243 77.7515 122.766 78.3191C124.194 78.9812 125.146 79.4542 125.717 79.8325Z" fill="#EAEEF9"/>
|
||||
<path d="M117.436 62.5222C117.151 64.9816 117.246 66.4005 116.009 66.1167L114.866 68.0085C114.866 68.1977 114.771 68.2923 114.771 68.4815C114.771 68.8599 114.771 69.522 114.771 73.4949C114.771 73.5895 114.771 73.7786 114.771 73.8732H109.25V52.0225H115.913C117.532 52.8738 118.103 54.0089 118.293 55.2386C118.579 57.5088 117.341 59.9682 117.056 61.0087C117.056 61.0087 117.056 61.1033 117.151 61.1033C117.436 61.2925 117.532 61.5763 117.436 62.5222Z" fill="#E3E7F5"/>
|
||||
<path d="M128.002 86.9275C123.718 90.9004 114.676 87.3059 108.298 87.3059C103.254 87.3059 92.6881 91.2788 88.7856 88.6302C88.0241 88.0626 88.9759 85.887 89.2615 85.2249C89.7374 83.9006 90.2133 82.5763 90.8796 81.3466C92.3074 78.6034 98.8751 77.2791 101.54 75.8603C102.016 75.5765 102.302 75.3873 102.492 75.1035C105.633 79.4548 112.106 79.4548 115.247 75.1981C115.532 75.4819 115.818 75.6711 116.199 75.8603C116.294 75.8603 116.389 75.9548 116.484 75.9548C125.336 79.5493 125.907 79.0764 127.05 82.3871C127.24 82.9547 128.382 86.5492 128.002 86.9275Z" fill="white"/>
|
||||
<path d="M128.002 86.9276C123.718 90.9005 114.676 87.306 108.298 87.306C103.254 87.306 92.6881 91.2789 88.7856 88.6303C88.0241 88.0627 88.9759 85.8871 89.2615 85.225C89.7374 83.9007 90.2133 82.5764 90.8796 81.3467C92.3074 78.6035 98.8751 77.2792 101.54 75.8604C101.54 75.8604 101.54 75.8604 101.635 75.8604C105.252 80.8737 112.772 80.8737 116.389 75.9549H116.484C125.336 79.5494 125.907 79.0765 127.05 82.3872C127.24 82.9548 128.382 86.5493 128.002 86.9276Z" fill="url(#paint29_linear_460_3876)"/>
|
||||
<path d="M116.96 61.0087C117.055 60.4412 116.77 59.6844 116.579 59.1169C116.579 59.0223 116.484 58.9277 116.484 58.8331C115.532 56.9412 113.343 56.0899 111.344 55.9953C106.109 55.7115 105.633 56.7521 103.92 55.2386C104.396 55.9953 104.491 57.225 103.729 58.7385C103.158 59.779 102.111 60.252 101.159 60.5357C98.7798 55.144 99.922 51.7387 102.302 50.509C101.54 48.9009 101.445 48.2388 101.445 48.2388C101.445 48.2388 106.49 49.0901 108.203 48.7117C110.392 48.2388 113.819 48.8063 115.056 51.7387C117.15 52.59 118.007 53.9143 118.197 55.3332C118.578 57.6034 117.246 60.0628 116.96 61.0087Z" fill="#1C3754"/>
|
||||
<path d="M103.063 73.59V68.7658C102.968 68.6712 102.873 68.5766 102.873 68.482V68.1982C103.158 68.6712 103.444 69.0496 103.92 69.3333L107.727 71.9819C108.584 72.7387 109.916 72.7387 110.773 71.9819L114.295 68.7658C114.39 68.6712 114.58 68.5766 114.676 68.3874C114.676 68.7658 114.676 69.4279 114.676 73.4008C114.676 73.6846 114.676 73.8738 114.771 74.063H102.968C103.063 74.063 103.063 73.7792 103.063 73.59Z" fill="url(#paint30_linear_460_3876)"/>
|
||||
<path d="M137.33 83.0488V106.224C137.33 108.305 135.616 110.008 133.522 110.008H83.6458C81.5517 110.008 79.8384 108.305 79.8384 106.224V83.0488H137.33Z" fill="white"/>
|
||||
<path d="M116.008 91.9396H101.16C100.398 91.9396 99.8271 91.372 99.8271 90.6153C99.8271 89.8586 100.398 89.291 101.16 89.291H116.008C116.77 89.291 117.341 89.8586 117.341 90.6153C117.341 91.372 116.77 91.9396 116.008 91.9396Z" fill="url(#paint31_linear_460_3876)"/>
|
||||
<path d="M122.1 97.8058H95.1631C94.4017 97.8058 93.8306 97.2383 93.8306 96.4815C93.8306 95.7248 94.4017 95.1572 95.1631 95.1572H122.1C122.862 95.1572 123.433 95.7248 123.433 96.4815C123.433 97.2383 122.767 97.8058 122.1 97.8058Z" fill="#E3EAF2"/>
|
||||
<path d="M113.914 103.765H103.349C102.873 103.765 102.492 103.386 102.492 102.913V101.968C102.492 101.495 102.873 101.116 103.349 101.116H113.914C114.39 101.116 114.771 101.495 114.771 101.968V102.913C114.771 103.386 114.39 103.765 113.914 103.765Z" fill="#E3EAF2"/>
|
||||
<defs>
|
||||
<filter id="filter0_d_460_3876" x="0.480957" y="29.0981" width="101.99" height="125.8" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feOffset dy="11"/>
|
||||
<feGaussianBlur stdDeviation="11"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 0.397708 0 0 0 0 0.47749 0 0 0 0 0.575 0 0 0 0.18 0"/>
|
||||
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_460_3876"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_460_3876" result="shape"/>
|
||||
</filter>
|
||||
<filter id="filter1_d_460_3876" x="57.8386" y="18.4146" width="101.491" height="124.592" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feOffset dy="11"/>
|
||||
<feGaussianBlur stdDeviation="11"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 0.397708 0 0 0 0 0.47749 0 0 0 0 0.575 0 0 0 0.18 0"/>
|
||||
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_460_3876"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_460_3876" result="shape"/>
|
||||
</filter>
|
||||
<linearGradient id="paint0_linear_460_3876" x1="55.2561" y1="50.3009" x2="55.2561" y2="32.6953" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.00289017" stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_460_3876" x1="24.1715" y1="64.514" x2="26.014" y2="64.514" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_460_3876" x1="27.9272" y1="50.0567" x2="29.7697" y2="50.0567" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint3_linear_460_3876" x1="31.6834" y1="64.514" x2="33.5259" y2="64.514" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint4_linear_460_3876" x1="39.1955" y1="60.8992" x2="41.038" y2="60.8992" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint5_linear_460_3876" x1="50.4627" y1="78.9701" x2="52.3052" y2="78.9701" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint6_linear_460_3876" x1="54.2183" y1="71.7413" x2="56.0608" y2="71.7413" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint7_linear_460_3876" x1="65.4865" y1="68.1266" x2="67.329" y2="68.1266" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint8_linear_460_3876" x1="65.4865" y1="57.2855" x2="67.329" y2="57.2855" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint9_linear_460_3876" x1="52.3013" y1="93.4332" x2="50.4588" y2="93.4332" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint10_linear_460_3876" x1="48.5456" y1="86.2054" x2="46.7031" y2="86.2054" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint11_linear_460_3876" x1="37.2776" y1="82.5921" x2="35.435" y2="82.5921" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint12_linear_460_3876" x1="47.54" y1="50.3009" x2="47.54" y2="32.6953" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.00289017" stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint13_linear_460_3876" x1="36.6132" y1="90.808" x2="67.9536" y2="90.808" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint14_linear_460_3876" x1="50.8471" y1="86.264" x2="50.8471" y2="83.5882" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#EAEEF9"/>
|
||||
<stop offset="0.9913" stop-color="#CED5E6"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint15_linear_460_3876" x1="42.8464" y1="102.219" x2="60.611" y2="102.219" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint16_linear_460_3876" x1="112.379" y1="39.4665" x2="112.379" y2="22.1207" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.00289017" stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint17_linear_460_3876" x1="81.5615" y1="53.4695" x2="83.3881" y2="53.4695" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint18_linear_460_3876" x1="85.2853" y1="39.2265" x2="87.112" y2="39.2265" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint19_linear_460_3876" x1="89.0092" y1="53.4695" x2="90.8359" y2="53.4695" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint20_linear_460_3876" x1="96.4554" y1="49.9085" x2="98.2821" y2="49.9085" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint21_linear_460_3876" x1="107.627" y1="67.7134" x2="109.454" y2="67.7134" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint22_linear_460_3876" x1="111.35" y1="60.592" x2="113.177" y2="60.592" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint23_linear_460_3876" x1="122.521" y1="57.0305" x2="124.348" y2="57.0305" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint24_linear_460_3876" x1="122.521" y1="46.3474" x2="124.348" y2="46.3474" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint25_linear_460_3876" x1="109.45" y1="81.9637" x2="107.623" y2="81.9637" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint26_linear_460_3876" x1="105.726" y1="74.8417" x2="103.899" y2="74.8417" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint27_linear_460_3876" x1="94.5552" y1="71.2807" x2="92.7285" y2="71.2807" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint28_linear_460_3876" x1="104.729" y1="39.4665" x2="104.729" y2="22.1207" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.00289017" stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint29_linear_460_3876" x1="88.5321" y1="82.6854" x2="128.067" y2="82.6854" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint30_linear_460_3876" x1="108.84" y1="74.2819" x2="108.84" y2="70.9119" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#EAEEF9"/>
|
||||
<stop offset="0.9913" stop-color="#CED5E6"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint31_linear_460_3876" x1="101.822" y1="90.6188" x2="116.617" y2="90.6188" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 47 KiB |
@@ -1 +0,0 @@
|
||||
const s="/assets/dialogEmpty1-B2m57R6G.svg";export{s as l};
|
||||
@@ -1,128 +0,0 @@
|
||||
<svg width="138" height="137" viewBox="0 0 138 137" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M122.973 63.8852C122.973 77.8009 118.307 90.7045 110.489 101.078C106.201 106.644 101.031 111.578 95.1037 115.373C85.5197 121.698 74.0442 125.367 61.6859 125.367C27.7636 125.367 0.272705 97.7888 0.272705 63.8852C0.272705 29.8551 27.7636 2.40332 61.5598 2.40332C73.9181 2.40332 85.3936 6.07199 94.9776 12.2708C100.905 16.066 106.075 20.9997 110.362 26.566C118.307 37.066 122.973 49.9696 122.973 63.8852Z" fill="#EAEEF9"/>
|
||||
<path d="M3.29943 21.7587C4.43438 21.7587 5.31711 20.7467 5.31711 19.6081C5.31711 18.4696 4.43438 17.4575 3.17333 17.4575C2.03838 17.4575 1.02954 18.3431 1.02954 19.6081C1.15565 20.7467 2.16449 21.7587 3.29943 21.7587Z" fill="url(#paint0_linear_460_3936)"/>
|
||||
<path d="M3.42553 117.777C4.56047 117.777 5.56931 116.891 5.56931 115.626C5.56931 114.488 4.68658 113.476 3.42553 113.476C2.29058 113.476 1.28174 114.361 1.28174 115.626C1.40784 116.765 2.29058 117.777 3.42553 117.777Z" fill="url(#paint1_linear_460_3936)"/>
|
||||
<path d="M130.161 45.1624C132.053 43.3913 132.179 40.4817 130.413 38.5841C128.648 36.6865 125.747 36.56 123.73 38.331C121.838 40.1021 121.712 43.0118 123.477 44.9094C125.243 46.6804 128.269 46.807 130.161 45.1624Z" fill="#EAEEF9"/>
|
||||
<path d="M129.152 24.5418C130.287 24.5418 131.17 23.6563 131.17 22.5177C131.17 21.3792 130.287 20.4937 129.152 20.4937C128.017 20.4937 127.135 21.3792 127.135 22.5177C127.135 23.6563 128.017 24.5418 129.152 24.5418Z" fill="url(#paint2_linear_460_3936)"/>
|
||||
<path d="M81.7367 116.639C81.7367 121.319 77.9536 125.241 73.1616 125.241H27.3854C22.7196 125.241 18.8103 121.446 18.8103 116.639V8.60241C18.8103 3.92169 22.5935 0 27.3854 0H73.5399C78.2058 0 82.1151 3.79518 82.1151 8.60241V116.765H81.7367V116.639Z" fill="white"/>
|
||||
<path d="M73.5399 0C78.2058 0 82.1151 3.79518 82.1151 8.60241V117.018C82.1151 121.699 78.3319 125.62 73.5399 125.62H27.3854C22.7196 125.62 18.8103 121.825 18.8103 117.018V8.60241C18.8103 3.92169 22.5935 0 27.3854 0H73.5399Z" fill="#1C3754"/>
|
||||
<path d="M77.7014 8.223V116.639C77.7014 118.536 76.5664 120.054 74.801 120.56C74.4227 120.687 74.0443 120.687 73.5399 120.687H27.3855C27.1333 120.687 26.881 120.687 26.7549 120.687C24.7373 120.307 23.3501 118.663 23.3501 116.639V8.60251C23.3501 6.45191 24.7373 4.80733 26.7549 4.55432C27.0071 4.55432 27.1333 4.55432 27.3855 4.55432H34.1951C35.0779 4.55432 35.7084 5.18685 35.7084 6.07239C35.7084 7.84348 37.2217 9.36155 38.9871 9.36155H62.4427C64.2081 9.36155 65.7214 7.84348 65.7214 6.07239C65.5953 5.06035 66.2258 4.42782 67.1086 4.42782H73.5399V4.1748C73.9182 4.1748 74.4227 4.1748 74.801 4.30131C76.5664 4.80733 77.7014 6.32541 77.7014 8.223Z" fill="white"/>
|
||||
<path d="M54.4979 5.56649H48.3188C47.6882 5.56649 47.436 4.93396 47.436 4.68095C47.436 4.04842 48.0666 3.79541 48.3188 3.79541H54.4979C55.1284 3.79541 55.3807 4.42794 55.3807 4.68095C55.3807 5.31348 55.0023 5.56649 54.4979 5.56649Z" fill="#2D5887"/>
|
||||
<path d="M44.7878 5.56649H44.5356C43.905 5.56649 43.6528 4.93396 43.6528 4.68095C43.6528 4.04842 44.2834 3.79541 44.5356 3.79541H44.7878C45.4183 3.79541 45.6705 4.42794 45.6705 4.68095C45.6705 5.31348 45.4183 5.56649 44.7878 5.56649Z" fill="#2D5887"/>
|
||||
<path d="M70.8914 92.2231H30.6639C28.5201 92.2231 26.7546 90.452 26.7546 88.3014V37.8255C26.7546 35.6749 28.5201 33.9038 30.6639 33.9038H70.8914C73.0352 33.9038 74.8007 35.6749 74.8007 37.8255V88.3014C74.8007 90.452 73.0352 92.2231 70.8914 92.2231Z" fill="white"/>
|
||||
<path d="M70.8914 92.2231H30.6639C28.5201 92.2231 26.7546 90.452 26.7546 88.3014V37.8255C26.7546 35.6749 28.5201 33.9038 30.6639 33.9038H70.8914C73.0352 33.9038 74.8007 35.6749 74.8007 37.8255V88.3014C74.8007 90.452 73.0352 92.2231 70.8914 92.2231Z" fill="#F5F7FD" stroke="#E4E8F5" stroke-width="0.9843" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.98 1.98"/>
|
||||
<path d="M74.8007 4.30131V24.1627C74.8007 26.3134 73.0352 28.0844 70.8914 28.0844H30.6639C28.5201 28.0844 26.7546 26.3134 26.7546 24.1627V4.42782C27.0068 4.42782 27.133 4.42782 27.3852 4.42782H34.1948C35.0776 4.42782 35.7081 5.06035 35.7081 5.94589C35.7081 7.71697 37.2214 9.23504 38.9868 9.23504H62.4424C64.2079 9.23504 65.7211 7.71697 65.7211 5.94589C65.595 5.06035 66.2255 4.42782 67.1083 4.42782H73.5396V4.1748C74.044 4.1748 74.4224 4.1748 74.8007 4.30131Z" fill="#EAEEF9"/>
|
||||
<path d="M74.8007 101.711V120.687C74.4224 120.813 74.044 120.813 73.5396 120.813H27.3852C27.133 120.813 26.8807 120.813 26.7546 120.813V101.711C26.7546 99.5601 28.5201 97.7891 30.6639 97.7891H70.8914C73.0352 97.7891 74.8007 99.5601 74.8007 101.711Z" fill="#EAEEF9"/>
|
||||
<g filter="url(#filter0_d_460_3936)">
|
||||
<path d="M97.6227 96.3736H50.6865C46.8808 96.3736 43.8 93.283 43.8 89.4652V31.8355C43.8 28.0178 46.8808 24.9272 50.6865 24.9272H97.6227C101.428 24.9272 104.509 28.0178 104.509 31.8355V89.4652C104.509 93.283 101.428 96.3736 97.6227 96.3736Z" fill="white"/>
|
||||
</g>
|
||||
<path d="M89.2864 77.8301H53.0422C52.1361 77.8301 51.23 77.103 51.23 76.3758C51.23 75.4668 51.9549 74.9214 53.0422 74.9214H89.2864C90.1925 74.9214 91.0986 75.6486 91.0986 76.3758C90.9174 77.103 90.1925 77.8301 89.2864 77.8301Z" fill="url(#paint3_linear_460_3936)"/>
|
||||
<path d="M67.3587 86.5567H52.861C51.9549 86.5567 51.0488 85.8295 51.0488 85.1023C51.0488 84.1933 51.7737 83.6479 52.861 83.6479H67.3587C68.2648 83.6479 69.1709 84.3751 69.1709 85.1023C68.9897 85.8295 68.2648 86.5567 67.3587 86.5567Z" fill="url(#paint4_linear_460_3936)"/>
|
||||
<path d="M95.2668 66.0132H53.5859C52.4986 66.0132 51.7737 65.1042 51.7737 64.1953V35.4713C51.7737 34.3805 52.6798 33.6533 53.5859 33.6533H95.2668C96.3541 33.6533 97.079 34.5623 97.079 35.4713V64.1953C97.079 65.286 96.1729 66.0132 95.2668 66.0132Z" fill="#E6ECF5"/>
|
||||
<path d="M75.1512 59.105H60.1099L67.7211 50.5605L75.1512 59.105Z" fill="#CED7E2"/>
|
||||
<path d="M87.6556 59.1049H66.0903L76.7824 46.7427L87.6556 59.1049Z" fill="white"/>
|
||||
<path d="M65.9091 47.4699C67.5104 47.4699 68.8086 46.1676 68.8086 44.5611C68.8086 42.9546 67.5104 41.6523 65.9091 41.6523C64.3077 41.6523 63.0095 42.9546 63.0095 44.5611C63.0095 46.1676 64.3077 47.4699 65.9091 47.4699Z" fill="url(#paint5_linear_460_3936)"/>
|
||||
<path d="M82.3671 14.674C82.7454 17.9632 79.9711 21.7584 76.0619 21.7584C72.657 21.7584 69.7566 18.5957 69.7566 15.0535V15.1801C69.6305 19.3548 66.2309 21.4173 62.7 20.5318H62.3164C59.7943 20.0258 57.1461 18.5957 57.1461 15.3066C57.1461 18.8487 54.3718 21.7584 50.8409 21.7584C47.3099 21.7584 44.5356 18.4692 44.5356 15.0535C44.5356 18.5957 41.6352 21.7584 38.2303 21.7584C34.6994 21.7584 31.9251 18.8487 31.9251 15.3066C31.9251 18.7222 29.1508 21.7584 25.6198 21.7584C22.0889 21.7584 19.0624 18.8487 19.3146 14.674C19.3146 10.8789 18.4318 12.6499 26.3765 3.5415H75.4314C82.9977 12.5234 82.3671 10.6258 82.3671 14.674Z" fill="url(#paint6_linear_460_3936)"/>
|
||||
<path d="M44.6617 15.8126C44.6617 15.5596 44.6617 15.1801 44.6617 14.927C44.6617 18.4692 41.7612 21.7584 38.2303 21.7584C34.6994 21.7584 31.925 18.8487 31.925 15.3066C31.925 15.4331 31.925 15.5596 31.925 15.6861C32.0512 11.0054 31.2945 13.2825 35.9604 4.80656L36.8431 3.5415H47.1838C44.0311 13.5355 44.5356 10.6258 44.6617 15.8126Z" fill="white"/>
|
||||
<path d="M69.7566 15.1806C69.7566 19.4818 65.7213 22.2649 62.3164 21.5059H62.1903C59.416 20.9999 57.1461 18.2167 57.1461 14.9276C57.1461 10.8794 57.5244 12.777 54.624 3.41553H64.9646L65.8474 4.68059C70.0088 12.6505 69.7566 11.0059 69.7566 15.1806Z" fill="white"/>
|
||||
<path d="M134.953 97.7886L130.287 121.825C129.909 123.975 128.143 125.493 126 125.493H88.9247C86.7809 125.493 85.0154 123.975 84.6371 121.825L79.9712 97.7886" fill="white"/>
|
||||
<path d="M134.953 97.7886L134.575 99.8127V100.066L130.413 121.825C130.035 123.975 128.269 125.493 126.126 125.493H88.9245C86.7807 125.493 85.0153 123.975 84.637 121.825L80.4755 100.066V99.8127L80.0972 97.7886H134.953Z" fill="url(#paint7_linear_460_3936)"/>
|
||||
<path d="M134.953 97.7886L134.575 99.8127H80.4756L79.9712 97.7886H134.953Z" fill="#526DFF"/>
|
||||
<path d="M81.7367 97.7889H80.3495C78.7102 97.7889 77.323 96.5238 77.323 95.0058V92.0961C77.323 90.5781 78.7102 89.313 80.3495 89.313H134.701C136.34 89.313 137.727 90.5781 137.727 92.0961V95.0058C137.727 96.5238 136.34 97.7889 134.701 97.7889H133.314" fill="url(#paint8_linear_460_3936)"/>
|
||||
<path d="M91.5726 104.114C91.4465 103.481 90.816 103.102 90.1855 103.228C89.5549 103.355 89.1766 103.987 89.3027 104.62L92.2031 119.168C92.4554 120.686 94.8513 120.307 94.473 118.662L91.5726 104.114Z" fill="url(#paint9_linear_460_3936)"/>
|
||||
<path d="M99.5175 104.241C99.3914 103.609 98.887 103.102 98.1303 103.229C97.4998 103.355 96.9954 103.862 97.1215 104.621C97.4998 107.657 98.7609 116.006 99.1392 119.169C99.3914 120.687 101.661 120.434 101.409 118.789C101.409 117.398 99.7697 105.886 99.5175 104.241Z" fill="url(#paint10_linear_460_3936)"/>
|
||||
<path d="M106.327 104.367V118.915C106.327 120.433 108.723 120.433 108.723 118.915V104.367C108.723 102.849 106.327 102.849 106.327 104.367Z" fill="url(#paint11_linear_460_3936)"/>
|
||||
<path d="M115.533 104.24C114.524 111.704 114.902 108.289 113.515 118.789C113.263 120.307 115.659 120.686 115.785 119.168L116.92 110.692C116.92 110.566 116.92 110.566 116.92 110.439L117.677 104.62C118.055 102.975 115.659 102.722 115.533 104.24Z" fill="url(#paint12_linear_460_3936)"/>
|
||||
<path d="M123.351 104.114C122.973 106.012 120.577 117.904 120.451 118.663C120.199 120.181 122.469 120.687 122.721 119.169L125.621 104.62C126 103.102 123.73 102.596 123.351 104.114Z" fill="url(#paint13_linear_460_3936)"/>
|
||||
<g filter="url(#filter1_d_460_3936)">
|
||||
<path d="M89.6123 64.7738C90.6894 64.7738 91.551 65.6354 91.551 66.7125V79.2068C91.551 82.0072 89.3968 84.1614 86.5964 84.1614H78.4105C77.5488 84.1614 76.6872 83.946 76.2563 83.2997C74.3176 81.5764 70.2246 78.1297 69.363 76.8372C69.1475 76.4063 68.9321 76.1909 68.9321 75.7601V72.9596C68.9321 71.2363 70.2246 69.9438 71.948 69.9438H73.0251V75.3292H73.6713V64.1275C73.6713 63.0504 74.533 62.1887 75.6101 62.1887C76.6872 62.1887 77.5489 63.0504 77.5489 64.1275V66.2817H78.1951V63.4812C78.1951 62.4041 79.0568 61.5425 80.1339 61.5425C81.211 61.5425 82.0726 62.4041 82.0726 63.4812V66.2817H82.9343V64.7738C82.9343 63.6967 83.796 62.835 84.8731 62.835C85.9501 62.835 86.8118 63.6967 86.8118 64.7738V66.2817H87.6735C87.8889 65.42 88.5352 64.7738 89.6123 64.7738Z" fill="white"/>
|
||||
<path d="M89.6123 64.7738C90.6894 64.7738 91.551 65.6354 91.551 66.7125V79.2068C91.551 82.0072 89.3968 84.1614 86.5964 84.1614H78.4105C77.5488 84.1614 76.6872 83.946 76.2563 83.2997C74.3176 81.5764 70.2246 78.1297 69.363 76.8372C69.1475 76.4063 68.9321 76.1909 68.9321 75.7601V72.9596C68.9321 71.2363 70.2246 69.9438 71.948 69.9438H73.0251V75.3292H73.6713V64.1275C73.6713 63.0504 74.533 62.1887 75.6101 62.1887C76.6872 62.1887 77.5489 63.0504 77.5489 64.1275V66.2817H78.1951V63.4812C78.1951 62.4041 79.0568 61.5425 80.1339 61.5425C81.211 61.5425 82.0726 62.4041 82.0726 63.4812V66.2817H82.9343V64.7738C82.9343 63.6967 83.796 62.835 84.8731 62.835C85.9501 62.835 86.8118 63.6967 86.8118 64.7738V66.2817H87.6735C87.8889 65.42 88.5352 64.7738 89.6123 64.7738Z" stroke="#1C3754" stroke-width="1.408" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</g>
|
||||
<path d="M69.1261 105.885V120.813H32.5557V105.885C32.5557 105 33.1862 104.367 34.0689 104.367H67.739C68.3695 104.367 69.1261 105 69.1261 105.885Z" fill="white"/>
|
||||
<path d="M47.8146 120.813H42.8965L45.4186 118.03L47.6885 120.686L47.8146 120.813Z" fill="#CED7E2"/>
|
||||
<path d="M57.903 120.813H47.6885V120.687L52.7327 114.994L57.903 120.813Z" fill="#EAEEF9"/>
|
||||
<path d="M43.9054 115.5C45.159 115.5 46.1753 114.481 46.1753 113.223C46.1753 111.965 45.159 110.946 43.9054 110.946C42.6518 110.946 41.6355 111.965 41.6355 113.223C41.6355 114.481 42.6518 115.5 43.9054 115.5Z" fill="#CED7E2"/>
|
||||
<path opacity="0.2" d="M82.2409 12.1444H19.3145C19.4406 11.6384 19.5667 11.2589 19.945 10.8794L26.2502 3.41553H75.3051L81.6104 10.8794C81.9887 11.2589 82.1148 11.6384 82.2409 12.1444Z" fill="url(#paint14_linear_460_3936)"/>
|
||||
<path d="M10.3611 126H136.214" stroke="#B1B9CC" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M1.15527 126H5.94727" stroke="#B1B9CC" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<defs>
|
||||
<filter id="filter0_d_460_3936" x="21.8" y="20.9272" width="104.709" height="115.446" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feOffset dy="18"/>
|
||||
<feGaussianBlur stdDeviation="11"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 0.397708 0 0 0 0 0.47749 0 0 0 0 0.575 0 0 0 0.35 0"/>
|
||||
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_460_3936"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_460_3936" result="shape"/>
|
||||
</filter>
|
||||
<filter id="filter1_d_460_3936" x="62.228" y="59.8384" width="36.0271" height="36.0269" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feOffset dy="5"/>
|
||||
<feGaussianBlur stdDeviation="3"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 0.397708 0 0 0 0 0.47749 0 0 0 0 0.575 0 0 0 0.28 0"/>
|
||||
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_460_3936"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_460_3936" result="shape"/>
|
||||
</filter>
|
||||
<linearGradient id="paint0_linear_460_3936" x1="1.16737" y1="19.6458" x2="5.24385" y2="19.6458" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_460_3936" x1="1.38111" y1="115.639" x2="5.45746" y2="115.639" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_460_3936" x1="127.196" y1="22.6043" x2="131.024" y2="22.6043" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint3_linear_460_3936" x1="51.1903" y1="76.3398" x2="90.9981" y2="76.3398" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#CED7E2"/>
|
||||
<stop offset="1" stop-color="#E6ECF5"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint4_linear_460_3936" x1="51.1904" y1="84.946" x2="69.1235" y2="84.946" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#CED7E2"/>
|
||||
<stop offset="1" stop-color="#E6ECF5"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint5_linear_460_3936" x1="63.0354" y1="44.5649" x2="68.7136" y2="44.5649" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint6_linear_460_3936" x1="19.2079" y1="12.5628" x2="82.3288" y2="12.5628" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint7_linear_460_3936" x1="80.0291" y1="111.653" x2="134.998" y2="111.653" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint8_linear_460_3936" x1="77.3017" y1="93.59" x2="137.764" y2="93.59" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint9_linear_460_3936" x1="91.9007" y1="118.239" x2="91.9007" y2="104.032" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#BDCFFF"/>
|
||||
<stop offset="1" stop-color="#91A5FF" stop-opacity="0.5"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint10_linear_460_3936" x1="99.4024" y1="118.24" x2="99.4024" y2="104.033" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#BDCFFF"/>
|
||||
<stop offset="1" stop-color="#91A5FF" stop-opacity="0.5"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint11_linear_460_3936" x1="107.515" y1="118.24" x2="107.515" y2="104.033" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#BDCFFF"/>
|
||||
<stop offset="1" stop-color="#91A5FF" stop-opacity="0.5"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint12_linear_460_3936" x1="115.63" y1="118.239" x2="115.63" y2="104.032" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#BDCFFF"/>
|
||||
<stop offset="1" stop-color="#91A5FF" stop-opacity="0.5"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint13_linear_460_3936" x1="123.132" y1="118.24" x2="123.132" y2="104.033" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#BDCFFF"/>
|
||||
<stop offset="1" stop-color="#91A5FF" stop-opacity="0.5"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint14_linear_460_3936" x1="50.7725" y1="11.0545" x2="50.7725" y2="2.70355" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.00289017" stop-color="#3F5073" stop-opacity="0"/>
|
||||
<stop offset="1" stop-color="#283247"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 16 KiB |
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 12 KiB |
Vendored
+11
-16
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
import{d as r,l as c,a2 as p,ap as l,aq as d,$ as i,ar as u,as as m,ad as f,at as e,ac as g,ak as k}from"./index-DdOAzko0.js";const[h,P]=g("notify"),w=["lockScroll","position","show","teleport","zIndex"],y=i({},u,{type:e("danger"),color:String,message:f,position:e("top"),className:m,background:String,lockScroll:Boolean});var S=r({name:h,props:y,emits:["update:show"],setup(a,{emit:s,slots:o}){const t=n=>s("update:show",n);return()=>c(d,p({class:[P([a.type]),a.className],style:{color:a.color,background:a.background},overlay:!1,duration:.2,"onUpdate:show":t},l(a,w)),{default:()=>[o.default?o.default():a.message]})}});const b=k(S);export{b as N,S as s};
|
||||
File diff suppressed because one or more lines are too long
Vendored
+4
-4
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
import{d as P,a6 as v,l as n,a7 as B,a8 as w,a9 as _,h as A,aa as C,ab as L,ac as b,ad as N,H as U,ae as M,g as H,B as R,af as Y,q,ag as S,ah as F,ai as G}from"./index-BCqN_kGW.js";const[X,h]=_("loading"),j=Array(12).fill(null).map((t,l)=>n("i",{class:h("line",String(l+1))},null)),J=n("svg",{class:h("circular"),viewBox:"25 25 50 50"},[n("circle",{cx:"50",cy:"50",r:"20",fill:"none"},null)]),K={size:v,type:w("circular"),color:String,vertical:Boolean,textSize:v,textColor:String};var O=P({name:X,props:K,setup(t,{slots:l}){const o=A(()=>C({color:t.color},L(t.size))),c=()=>{const i=t.type==="spinner"?j:J;return n("span",{class:h("spinner",t.type),style:o.value},[l.icon?l.icon():i])},g=()=>{var i;if(l.default)return n("span",{class:h("text"),style:{fontSize:B(t.textSize),color:(i=t.textColor)!=null?i:t.color}},[l.default()])};return()=>{const{type:i,vertical:m}=t;return n("div",{class:h([i,{vertical:m}]),"aria-live":"polite","aria-busy":!0},[c(),g()])}}});const Q=b(O),[W,f,Z]=_("pull-refresh"),k=50,ee=["pulling","loosing","success"],te={disabled:Boolean,modelValue:Boolean,headHeight:S(k),successText:String,pullingText:String,loosingText:String,loadingText:String,pullDistance:v,successDuration:S(500),animationDuration:S(300)};var ae=P({name:W,props:te,emits:["change","refresh","update:modelValue"],setup(t,{emit:l,slots:o}){let c;const g=H(),i=H(),m=N(g),a=R({status:"normal",distance:0,duration:0}),r=G(),$=()=>{if(t.headHeight!==k)return{height:`${t.headHeight}px`}},T=()=>a.status!=="loading"&&a.status!=="success"&&!t.disabled,p=e=>{const s=+(t.pullDistance||t.headHeight);return e>s&&(e<s*2?e=s+(e-s)/2:e=s*1.5+(e-s*2)/4),Math.round(e)},u=(e,s)=>{const d=+(t.pullDistance||t.headHeight);a.distance=e,s?a.status="loading":e===0?a.status="normal":e<d?a.status="pulling":a.status="loosing",l("change",{status:a.status,distance:e})},x=()=>{const{status:e}=a;return e==="normal"?"":t[`${e}Text`]||Z(e)},z=()=>{const{status:e,distance:s}=a;if(o[e])return o[e]({distance:s});const d=[];return ee.includes(e)&&d.push(n("div",{class:f("text")},[x()])),e==="loading"&&d.push(n(Q,{class:f("loading")},{default:x})),d},E=()=>{a.status="success",setTimeout(()=>{u(0)},+t.successDuration)},y=e=>{c=F(m.value)===0,c&&(a.duration=0,r.start(e))},I=e=>{T()&&y(e)},V=e=>{if(T()){c||y(e);const{deltaY:s}=r;r.move(e),c&&s.value>=0&&r.isVertical()&&(Y(e),u(p(s.value)))}},D=()=>{c&&r.deltaY.value&&T()&&(a.duration=+t.animationDuration,a.status==="loosing"?(u(+t.headHeight,!0),l("update:modelValue",!0),q(()=>l("refresh"))):u(0))};return U(()=>t.modelValue,e=>{a.duration=+t.animationDuration,e?u(+t.headHeight,!0):o.success||t.successText?E():u(0,!1)}),M("touchmove",V,{target:i}),()=>{var e;const s={transitionDuration:`${a.duration}ms`,transform:a.distance?`translate3d(0,${a.distance}px, 0)`:""};return n("div",{ref:g,class:f()},[n("div",{ref:i,class:f("track"),style:s,onTouchstartPassive:I,onTouchend:D,onTouchcancel:D},[n("div",{class:f("head"),style:$()},[z()]),(e=o.default)==null?void 0:e.call(o)])])}}});const ne=b(ae);export{Q as L,ne as P};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
import{ac as y,d as L,ad as $,ae as w,G as A,af as B,l as c,g as D,B as N,L as p,ag as G,q as I,ah as f,ai as M,aj as R,ak as U}from"./index-DdOAzko0.js";const[Y,r,j]=y("pull-refresh"),x=50,q=["pulling","loosing","success"],C={disabled:Boolean,modelValue:Boolean,headHeight:f(x),successText:String,pullingText:String,loosingText:String,loadingText:String,pullDistance:$,successDuration:f(500),animationDuration:f(300)};var F=L({name:Y,props:C,emits:["change","refresh","update:modelValue"],setup(s,{emit:d,slots:o}){let u;const g=D(),T=D(),H=w(g),e=N({status:"normal",distance:0,duration:0}),i=R(),P=()=>{if(s.headHeight!==x)return{height:`${s.headHeight}px`}},h=()=>e.status!=="loading"&&e.status!=="success"&&!s.disabled,k=t=>{const a=+(s.pullDistance||s.headHeight);return t>a&&(t<a*2?t=a+(t-a)/2:t=a*1.5+(t-a*2)/4),Math.round(t)},n=(t,a)=>{const l=+(s.pullDistance||s.headHeight);e.distance=t,a?e.status="loading":t===0?e.status="normal":t<l?e.status="pulling":e.status="loosing",d("change",{status:e.status,distance:t})},m=()=>{const{status:t}=e;return t==="normal"?"":s[`${t}Text`]||j(t)},E=()=>{const{status:t,distance:a}=e;if(o[t])return o[t]({distance:a});const l=[];return q.includes(t)&&l.push(c("div",{class:r("text")},[m()])),t==="loading"&&l.push(c(p,{class:r("loading")},{default:m})),l},V=()=>{e.status="success",setTimeout(()=>{n(0)},+s.successDuration)},v=t=>{u=M(H.value)===0,u&&(e.duration=0,i.start(t))},_=t=>{h()&&v(t)},b=t=>{if(h()){u||v(t);const{deltaY:a}=i;i.move(t),u&&a.value>=0&&i.isVertical()&&(G(t),n(k(a.value)))}},S=()=>{u&&i.deltaY.value&&h()&&(e.duration=+s.animationDuration,e.status==="loosing"?(n(+s.headHeight,!0),d("update:modelValue",!0),I(()=>d("refresh"))):n(0))};return A(()=>s.modelValue,t=>{e.duration=+s.animationDuration,t?n(+s.headHeight,!0):o.success||s.successText?V():n(0,!1)}),B("touchmove",b,{target:T}),()=>{var t;const a={transitionDuration:`${e.duration}ms`,transform:e.distance?`translate3d(0,${e.distance}px, 0)`:""};return c("div",{ref:g,class:r()},[c("div",{ref:T,class:r("track"),style:a,onTouchstartPassive:_,onTouchend:S,onTouchcancel:S},[c("div",{class:r("head"),style:P()},[E()]),(t=o.default)==null?void 0:t.call(o)])])}}});const z=U(F);export{z as P};
|
||||
@@ -1,80 +0,0 @@
|
||||
<svg width="161" height="141" viewBox="0 0 161 141" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5.81596 48.092C7.524 47.5371 8.4586 45.7033 7.90344 43.9961C7.34829 42.2889 5.51361 41.3548 3.80557 41.9097C2.09753 42.4646 1.16293 44.2984 1.71808 46.0055C2.27324 47.7127 4.10792 48.6469 5.81596 48.092Z" fill="#EAEEF9"/>
|
||||
<path d="M13.942 39.5437C15.1035 39.1664 15.739 37.9195 15.3615 36.7586C14.984 35.5977 13.7364 34.9625 12.5749 35.3398C11.4135 35.7171 10.778 36.9641 11.1555 38.125C11.533 39.2858 12.7806 39.9211 13.942 39.5437Z" fill="#EAEEF9"/>
|
||||
<path d="M2.21138 73.5895C3.43269 73.5895 4.42276 72.6 4.42276 71.3793C4.42276 70.1586 3.43269 69.169 2.21138 69.169C0.99007 69.169 0 70.1586 0 71.3793C0 72.6 0.99007 73.5895 2.21138 73.5895Z" fill="url(#paint0_linear_79_308)"/>
|
||||
<path d="M140.488 21.8427C141.422 21.8427 142.179 21.0859 142.179 20.1525C142.179 19.219 141.422 18.4622 140.488 18.4622C139.554 18.4622 138.797 19.219 138.797 20.1525C138.797 21.0859 139.554 21.8427 140.488 21.8427Z" fill="url(#paint1_linear_79_308)"/>
|
||||
<path d="M156.347 51.7257C158.363 49.8849 158.503 46.7598 156.662 44.7455C154.82 42.7312 151.694 42.5905 149.678 44.4313C147.663 46.272 147.522 49.3972 149.364 51.4114C151.206 53.4257 154.332 53.5664 156.347 51.7257Z" fill="#EAEEF9"/>
|
||||
<path d="M3.64233 130.147H160" stroke="#EAEEF9" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M86.3738 15.082H75.1868V22.363H86.3738V15.082Z" fill="#B3BFCF"/>
|
||||
<path d="M86.3738 15.082H75.1868V18.2024H86.3738V15.082Z" fill="#9FADBF"/>
|
||||
<path d="M43.9699 29.5856L37.8992 35.6532L42.3143 40.0661L48.385 33.9984L43.9699 29.5856Z" fill="#B3BFCF"/>
|
||||
<path d="M114.96 33.5513L121.031 39.619L124.986 35.6658L118.915 29.5981L114.96 33.5513Z" fill="#B3BFCF"/>
|
||||
<path d="M84.9428 130.667C114.685 130.667 138.796 106.568 138.796 76.8399C138.796 47.1121 114.685 23.013 84.9428 23.013C55.2002 23.013 31.0891 47.1121 31.0891 76.8399C31.0891 106.568 55.2002 130.667 84.9428 130.667Z" fill="#D3DAE6"/>
|
||||
<path d="M81.6908 128.716C111.433 128.716 135.544 104.617 135.544 74.8895C135.544 45.1618 111.433 21.0627 81.6908 21.0627C51.9483 21.0627 27.8372 45.1618 27.8372 74.8895C27.8372 104.617 51.9483 128.716 81.6908 128.716Z" fill="#DAE1ED" stroke="#D3DAE6" stroke-miterlimit="10"/>
|
||||
<path d="M34.2113 77.8799C32.9105 77.8799 31.8699 76.8398 31.8699 75.5396C31.8699 75.2796 31.8699 75.0195 31.8699 74.8895C31.8699 49.7963 50.6016 28.6036 75.4471 25.4832C76.7479 25.3532 77.9187 26.2633 78.0487 27.5635C78.1788 28.8636 77.2683 30.0338 75.9674 30.1638C53.4634 33.0242 36.5528 52.2666 36.5528 74.8895C36.5528 75.1495 36.5528 75.2796 36.5528 75.5396C36.5528 76.8398 35.5121 77.8799 34.2113 77.8799Z" fill="#EDF0FC"/>
|
||||
<path d="M81.6907 124.816C76.3573 124.816 71.024 124.036 66.0809 122.346C64.7801 121.956 64.1297 120.655 64.5199 119.355C64.9102 118.055 66.211 117.405 67.5118 117.795C72.0647 119.355 76.8777 120.005 81.6907 120.005C104.195 120.005 123.447 103.233 126.439 80.8703C126.569 79.5701 127.739 78.66 129.04 78.79C130.341 78.92 131.252 80.0902 131.122 81.3904C129.561 93.2219 123.707 104.143 114.731 112.204C105.626 120.395 93.9183 124.816 81.6907 124.816Z" fill="#C8D3DE"/>
|
||||
<path d="M123.707 74.8896C123.707 75.4096 123.707 75.7997 123.707 76.3197C122.927 98.8126 104.455 116.885 81.6911 116.885C58.9268 116.885 40.4553 98.8126 39.6748 76.3197C39.6748 75.7997 39.6748 75.4096 39.6748 74.8896C39.6748 52.2667 57.626 33.6743 80.1301 32.8942C80.6504 32.8942 81.1707 32.8942 81.6911 32.8942C104.715 32.8942 123.317 51.3566 123.707 74.1095C123.707 74.3695 123.707 74.6295 123.707 74.8896Z" fill="#EDF0FC"/>
|
||||
<path d="M123.707 76.3198C122.927 98.8126 104.455 116.885 81.6911 116.885C58.9268 116.885 40.4553 98.8126 39.6748 76.3198C40.4553 53.8269 58.9268 35.7546 81.6911 35.7546C104.455 35.6246 122.927 53.6969 123.707 76.3198Z" fill="white"/>
|
||||
<path d="M92.8778 101.673H68.8127C67.642 101.673 66.7314 100.763 66.7314 99.5926V87.631C66.7314 86.4609 67.642 85.5508 68.8127 85.5508H92.8778C94.0485 85.5508 94.9591 86.4609 94.9591 87.631V99.5926C94.9591 100.763 94.0485 101.673 92.8778 101.673Z" fill="#F2F5FC"/>
|
||||
<path d="M118.114 76.9698H111.219C110.049 76.9698 109.138 76.0597 109.138 74.8895C109.138 73.7194 110.049 72.8093 111.219 72.8093H118.114C119.284 72.8093 120.195 73.7194 120.195 74.8895C120.195 76.0597 119.154 76.9698 118.114 76.9698Z" fill="#DAE1ED"/>
|
||||
<path d="M50.0811 76.9698H43.1868C42.016 76.9698 41.1055 76.0597 41.1055 74.8895C41.1055 73.7194 42.016 72.8093 43.1868 72.8093H50.0811C51.2518 72.8093 52.1624 73.7194 52.1624 74.8895C52.1624 76.0597 51.1217 76.9698 50.0811 76.9698Z" fill="#DAE1ED"/>
|
||||
<path d="M80.6504 114.545C79.4797 114.545 78.5691 113.634 78.5691 112.464V105.573C78.5691 104.403 79.4797 103.493 80.6504 103.493C81.8211 103.493 82.7317 104.403 82.7317 105.573V112.464C82.6016 113.634 81.691 114.545 80.6504 114.545Z" fill="#DAE1ED"/>
|
||||
<path d="M80.6504 46.5459C79.4797 46.5459 78.5691 45.6358 78.5691 44.4656V37.7048C78.5691 36.5346 79.4797 35.6245 80.6504 35.6245C81.8211 35.6245 82.7317 36.5346 82.7317 37.7048V44.5957C82.6016 45.6358 81.691 46.5459 80.6504 46.5459Z" fill="#DAE1ED"/>
|
||||
<path d="M81.1709 80.6103C84.6911 80.6103 87.5448 77.758 87.5448 74.2395C87.5448 70.721 84.6911 67.8687 81.1709 67.8687C77.6506 67.8687 74.7969 70.721 74.7969 74.2395C74.7969 77.758 77.6506 80.6103 81.1709 80.6103Z" fill="#F2F5FC"/>
|
||||
<path d="M108.227 49.0162C107.447 48.3661 106.276 48.3661 105.626 49.0162L83.1216 72.6792C82.9915 72.6792 82.9915 72.6792 82.8615 72.6792C81.1704 72.6792 79.8696 73.9794 79.8696 75.6696C79.8696 75.7996 79.8696 75.9297 79.8696 76.0597L76.2273 79.8302C75.5769 80.6102 75.5769 81.7804 76.2273 82.4305C76.6176 82.8205 77.0078 82.9505 77.5281 82.9505C78.0484 82.9505 78.5688 82.8205 78.8289 82.4305L82.4712 78.66C82.6013 78.66 82.7314 78.66 82.7314 78.66C84.4224 78.66 85.7232 77.3598 85.7232 75.6696C85.7232 75.5396 85.7232 75.4096 85.7232 75.2796L108.227 51.7466C109.008 50.8364 109.008 49.6663 108.227 49.0162Z" fill="#DAE1ED"/>
|
||||
<path d="M106.536 47.586C105.756 46.936 104.585 46.936 103.935 47.586L81.4307 71.2491C81.3006 71.2491 81.3006 71.2491 81.1705 71.2491C79.4795 71.2491 78.1787 72.5492 78.1787 74.2394C78.1787 74.3695 78.1787 74.4995 78.1787 74.6295L74.5364 78.4C73.886 79.1801 73.886 80.3502 74.5364 81.0003C74.9266 81.3904 75.3169 81.5204 75.8372 81.5204C76.3575 81.5204 76.8779 81.3904 77.138 81.0003L80.7803 77.2298C80.9104 77.2298 81.0405 77.2298 81.0405 77.2298C82.7315 77.2298 84.0323 75.9297 84.0323 74.2394C84.0323 74.1094 84.0323 73.9794 84.0323 73.8494L106.536 50.3164C107.317 49.4063 107.187 48.2361 106.536 47.586Z" fill="#EB358A"/>
|
||||
<path d="M105.756 48.2362L75.1868 80.0902C74.9266 80.0902 74.9266 80.0902 74.6665 80.0902C74.4063 79.7002 74.5364 79.1801 74.7965 78.7901L104.195 47.9761C104.585 47.5861 105.236 47.5861 105.626 47.8461C105.886 47.8461 105.886 48.1061 105.756 48.2362Z" fill="#FF4FA2"/>
|
||||
<path d="M91.7075 4.81061V11.8315C91.7075 14.5619 89.4961 16.6421 86.8945 16.6421H74.927C72.1953 16.6421 70.114 14.4318 70.114 11.8315V4.81061C70.114 2.08027 72.3254 0 74.927 0H86.8945C89.6262 0 91.7075 2.21028 91.7075 4.81061Z" fill="#1C3754"/>
|
||||
<path d="M91.7075 4.81061V11.8315C91.7075 14.5619 89.4961 16.6421 86.8945 16.6421H74.927C72.1953 16.6421 70.114 14.4318 70.114 11.8315V10.5313C70.8945 13.9118 73.8864 13.9118 73.8864 13.9118H86.2441C87.9352 13.9118 89.366 12.4816 89.366 10.7914V5.72073C89.366 2.21028 88.7156 0.910116 86.8945 0C89.6262 0 91.7075 2.21028 91.7075 4.81061Z" fill="#172D45"/>
|
||||
<path d="M71.9346 12.6115C71.5443 12.6115 71.2842 12.3515 71.2842 11.9614V3.9004C71.2842 3.51035 71.5443 3.25032 71.9346 3.25032C72.3248 3.25032 72.585 3.51035 72.585 3.9004V11.9614C72.4549 12.3515 72.1947 12.6115 71.9346 12.6115Z" fill="#2D5887"/>
|
||||
<path d="M74.9268 12.6115C74.5365 12.6115 74.2764 12.3515 74.2764 11.9614V3.9004C74.2764 3.51035 74.5365 3.25032 74.9268 3.25032C75.317 3.25032 75.5772 3.51035 75.5772 3.9004V11.9614C75.5772 12.3515 75.317 12.6115 74.9268 12.6115Z" fill="#2D5887"/>
|
||||
<path d="M78.0488 12.6115C77.6586 12.6115 77.3984 12.3515 77.3984 11.9614V3.9004C77.3984 3.51035 77.6586 3.25032 78.0488 3.25032C78.4391 3.25032 78.6993 3.51035 78.6993 3.9004V11.9614C78.5692 12.3515 78.309 12.6115 78.0488 12.6115Z" fill="#2D5887"/>
|
||||
<path d="M81.0403 12.6115C80.6501 12.6115 80.3899 12.3515 80.3899 11.9614V3.9004C80.3899 3.51035 80.6501 3.25032 81.0403 3.25032C81.4305 3.25032 81.6907 3.51035 81.6907 3.9004V11.9614C81.6907 12.3515 81.4305 12.6115 81.0403 12.6115Z" fill="#2D5887"/>
|
||||
<path d="M84.1624 12.6115C83.7721 12.6115 83.512 12.3515 83.512 11.9614V3.9004C83.512 3.51035 83.7721 3.25032 84.1624 3.25032C84.5526 3.25032 84.8128 3.51035 84.8128 3.9004V11.9614C84.6827 12.3515 84.4225 12.6115 84.1624 12.6115Z" fill="#2D5887"/>
|
||||
<path d="M87.1543 12.6115C86.7641 12.6115 86.5039 12.3515 86.5039 11.9614V3.9004C86.5039 3.51035 86.7641 3.25032 87.1543 3.25032C87.5446 3.25032 87.8047 3.51035 87.8047 3.9004V11.9614C87.8047 12.3515 87.4145 12.6115 87.1543 12.6115Z" fill="#2D5887"/>
|
||||
<path opacity="0.7" d="M90.1463 12.6115C89.756 12.6115 89.4958 12.3515 89.4958 11.9614V3.9004C89.4958 3.51035 89.756 3.25032 90.1463 3.25032C90.5365 3.25032 90.7967 3.51035 90.7967 3.9004V11.9614C90.7967 12.3515 90.5365 12.6115 90.1463 12.6115Z" fill="#2D5887"/>
|
||||
<path d="M45.1383 30.1639L38.6342 36.6647C37.2033 38.0949 34.8618 38.0949 33.3009 36.6647L29.5285 32.8942C28.0976 31.464 28.0976 29.1237 29.5285 27.5635L36.0326 21.0627C37.4635 19.6325 39.8049 19.6325 41.3659 21.0627L45.1383 24.8332C46.5691 26.3934 46.5691 28.7337 45.1383 30.1639Z" fill="#1C3754"/>
|
||||
<path d="M117.723 30.1639L124.227 36.6647C125.658 38.0949 128 38.0949 129.561 36.6647L133.333 32.8942C134.764 31.464 134.764 29.1237 133.333 27.5635L126.829 21.0627C125.398 19.6325 123.057 19.6325 121.496 21.0627L117.723 24.8332C116.292 26.3934 116.292 28.7337 117.723 30.1639Z" fill="#1C3754"/>
|
||||
<path d="M81.1707 74.7601C81.4581 74.7601 81.691 74.5271 81.691 74.2397C81.691 73.9524 81.4581 73.7194 81.1707 73.7194C80.8834 73.7194 80.6504 73.9524 80.6504 74.2397C80.6504 74.5271 80.8834 74.7601 81.1707 74.7601Z" fill="#1C3754"/>
|
||||
<g filter="url(#filter0_d_79_308)">
|
||||
<path d="M148.163 105.053C148.163 106.874 147.903 108.564 147.512 110.254C147.252 111.294 146.992 112.204 146.602 113.114C144.39 118.835 139.838 123.516 134.114 125.856C133.984 125.986 133.854 125.986 133.724 125.986C133.334 126.116 132.943 126.246 132.423 126.376C130.212 127.156 127.87 127.416 125.529 127.416C113.041 127.416 102.895 117.275 102.895 104.793C102.895 92.3118 113.041 82.3005 125.529 82.3005C138.016 82.4305 148.163 92.5718 148.163 105.053Z" fill="url(#paint2_linear_79_308)"/>
|
||||
</g>
|
||||
<path d="M147.512 110.254C147.252 111.295 146.992 112.205 146.602 113.115C144.39 118.836 139.837 123.516 134.114 125.856L121.496 113.245L119.805 111.555L132.293 100.373L136.455 98.0329L147.512 109.084V110.254Z" fill="url(#paint3_linear_79_308)"/>
|
||||
<path d="M123.187 113.895C122.537 113.895 121.887 113.635 121.366 113.114L116.163 107.914C115.122 106.874 115.122 105.183 116.163 104.143C117.204 103.103 118.895 103.103 119.935 104.143L123.187 107.394L132.683 97.9025C133.724 96.8624 135.415 96.8624 136.456 97.9025C137.496 98.9426 137.496 100.633 136.456 101.673L125.139 113.114C124.618 113.635 123.838 113.895 123.187 113.895Z" fill="url(#paint4_linear_79_308)"/>
|
||||
<path opacity="0.4" d="M123.707 74.2395H80.26V32.8942C80.7803 32.8942 81.3007 32.8942 81.821 32.8942C104.715 32.8942 123.317 51.3565 123.707 74.2395Z" fill="url(#paint5_linear_79_308)"/>
|
||||
<defs>
|
||||
<filter id="filter0_d_79_308" x="94.8945" y="79.3005" width="61.2683" height="61.1158" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feOffset dy="5"/>
|
||||
<feGaussianBlur stdDeviation="4"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 0.1125 0 0 0 0 0.295916 0 0 0 0 1 0 0 0 0.22 0"/>
|
||||
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_79_308"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_79_308" result="shape"/>
|
||||
</filter>
|
||||
<linearGradient id="paint0_linear_79_308" x1="0" y1="71.3913" x2="4.29971" y2="71.3913" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_79_308" x1="138.792" y1="20.1763" x2="142.15" y2="20.1763" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF66A9"/>
|
||||
<stop offset="1" stop-color="#F53689"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_79_308" x1="113.416" y1="86.517" x2="138.265" y2="124.38" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#83A6FF"/>
|
||||
<stop offset="1" stop-color="#5A78FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint3_linear_79_308" x1="128.301" y1="104.928" x2="142.58" y2="119.215" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#4F6AFF"/>
|
||||
<stop offset="1" stop-color="#657EFF" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint4_linear_79_308" x1="132.033" y1="108.666" x2="122.705" y2="99.3329" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.0113208" stop-color="#C2D1FF"/>
|
||||
<stop offset="1" stop-color="white"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint5_linear_79_308" x1="77.2515" y1="41.1541" x2="116.069" y2="79.9912" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#EF4896"/>
|
||||
<stop offset="1" stop-color="#F14D9A" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 13 KiB |
Vendored
+2
-2
@@ -9,8 +9,8 @@
|
||||
<meta name="background-color" content="#1C2D56" />
|
||||
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport" />
|
||||
<title>طلای منتزر</title>
|
||||
<script type="module" crossorigin src="/assets/index-DdOAzko0.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-IHDy_Smf.css">
|
||||
<script type="module" crossorigin src="/assets/index-BCqN_kGW.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-kSYHLFTt.css">
|
||||
<link rel="manifest" href="/manifest.webmanifest"></head>
|
||||
<body style="background-color: #1C2D56">
|
||||
<div class="bg-white w-screen h-screen fixed"></div>
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -19,35 +19,28 @@
|
||||
</router-view>
|
||||
</component>
|
||||
|
||||
<DialogVantOneButton :timeOut="-1" v-model:show="versionDialog" :closeOnClickOverlay="true">
|
||||
<template v-slot:img>
|
||||
<DotLottieVue
|
||||
class="w-full aspect-square"
|
||||
autoplay
|
||||
loop
|
||||
src="https://lottie.host/cb620e8e-c64a-42e8-a6b5-8844146e5999/nmft7oBO8q.json"
|
||||
/>
|
||||
</template>
|
||||
<IslandSheet
|
||||
v-model:show="versionDialog"
|
||||
art="update"
|
||||
title="نسخه جدید منتزر منتشر شد!"
|
||||
description="برای استفاده از آخرین امکانات و بهبودها، برنامه را به روز رسانی کنید."
|
||||
confirm-text="به روز رسانی"
|
||||
cancel-text="بعداً"
|
||||
@confirm="update()"
|
||||
/>
|
||||
|
||||
<template v-slot:title>
|
||||
<div class="p-8 text-justify">نسخه جدید منتزر منتشر شد!</div>
|
||||
</template>
|
||||
|
||||
<template v-slot:button>
|
||||
<div class="text-center text-[#1C2D56]" @click="update()">به روز رسانی</div>
|
||||
</template>
|
||||
</DialogVantOneButton>
|
||||
<ToastHost />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed, onMounted, ref } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { DotLottieVue } from '@lottiefiles/dotlottie-vue'
|
||||
import { useRegisterSW } from 'virtual:pwa-register/vue'
|
||||
import MasterLayout from './layout/MasterLayout.vue'
|
||||
import FullPageLayout from './layout/FullPageLayout.vue'
|
||||
import DialogVantOneButton from './components/DialogVantOneButton.vue'
|
||||
import IslandSheet from './components/ui/IslandSheet.vue'
|
||||
import ToastHost from './components/ui/ToastHost.vue'
|
||||
import { useRefresh } from './composables/useRefresh'
|
||||
import pkg from '../package.json'
|
||||
|
||||
|
||||
@@ -607,3 +607,50 @@ input:focus-visible {
|
||||
width: 100%;
|
||||
height: 40vh
|
||||
}
|
||||
|
||||
// Floating "island" bottom sheet: an ant Drawer (placement="bottom") that
|
||||
// sits inset from the screen edges with rounded corners all round, instead
|
||||
// of a full-width sheet glued to the bottom. Add `island-sheet` to the
|
||||
// Drawer's class. Global because the drawer is teleported to <body>, out of
|
||||
// reach of a view's scoped styles.
|
||||
.ant-drawer-bottom.island-sheet {
|
||||
--island-gap: 12px;
|
||||
|
||||
.ant-drawer-content-wrapper {
|
||||
left: var(--island-gap);
|
||||
right: var(--island-gap);
|
||||
bottom: calc(var(--island-gap) + env(safe-area-inset-bottom, 0px));
|
||||
width: auto !important;
|
||||
max-width: 480px;
|
||||
margin: 0 auto;
|
||||
border-radius: 26px;
|
||||
}
|
||||
|
||||
// Closed, ant parks the sheet at translateY(100%) inline — that would
|
||||
// leave the gap's worth of sheet peeking up, so push it fully off-screen.
|
||||
&:not(.ant-drawer-open) .ant-drawer-content-wrapper {
|
||||
transform: translateY(calc(100% + var(--island-gap) + 40px + env(safe-area-inset-bottom, 0px))) !important;
|
||||
}
|
||||
|
||||
&.ant-drawer-open .ant-drawer-content-wrapper {
|
||||
box-shadow:
|
||||
0 24px 48px -18px rgba(20, 22, 26, 0.35),
|
||||
0 2px 8px rgba(20, 22, 26, 0.08) !important;
|
||||
}
|
||||
|
||||
.ant-drawer-content {
|
||||
border-radius: inherit;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
// Grab handle, so it still reads as a sheet that can be pulled down.
|
||||
.ant-drawer-body::before {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 38px;
|
||||
height: 4px;
|
||||
margin: 10px auto 0;
|
||||
border-radius: 4px;
|
||||
background: @hairline;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,142 +0,0 @@
|
||||
<!--
|
||||
Ported from legacy henza_pwa/src/components/DialogVant.vue.
|
||||
EXISTING ISSUE, ported as-is (not fixed): this component doesn't declare a
|
||||
`show`/`modelValue` prop, and the internal `watch(() => props.modelValue, ...)`
|
||||
references a prop that was never declared (always undefined, so that watcher
|
||||
effectively never fires — its `showNotify`/timeout auto-hide logic is dead
|
||||
code). Actual visibility works anyway, because <van-dialog> is this
|
||||
component's sole root element and Vue's automatic attribute fallthrough
|
||||
passes the parent's `v-model:show` straight through to it. Preserved exactly.
|
||||
|
||||
Visual pass: redesigned to the app's own card language instead of Vant's
|
||||
stock dialog chrome — rounded @canvas card, the illustration slot framed in
|
||||
a soft circular badge (@wineWash) rather than floating loose, and the
|
||||
button row rebuilt as two pill buttons (primary filled @ink, secondary
|
||||
ghost) instead of Vant's bare text-grid. Every call site only ever fills
|
||||
the img/title/button slots with content (never Vant's own button classes),
|
||||
so this is a pure chrome swap: no call site needs to change, and slot
|
||||
content (including per-call-site text color utility classes already baked
|
||||
into that content) still renders as-is inside the new layout.
|
||||
-->
|
||||
<template>
|
||||
<van-dialog class="mDialog">
|
||||
<div class="mDialog__body">
|
||||
<div class="mDialog__art">
|
||||
<slot name="img">{{ text2 }}</slot>
|
||||
</div>
|
||||
<div class="mDialog__title">
|
||||
<slot name="title">{{ text1 }}</slot>
|
||||
</div>
|
||||
<div class="mDialog__actions">
|
||||
<slot name="button">{{ text3 }}</slot>
|
||||
</div>
|
||||
</div>
|
||||
</van-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { Dialog as VanDialog } from 'vant'
|
||||
|
||||
withDefaults(
|
||||
defineProps<{
|
||||
timeOut: number
|
||||
text1?: string
|
||||
text2?: string
|
||||
text3?: string
|
||||
}>(),
|
||||
{},
|
||||
)
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.van-dialog__confirm,
|
||||
.van-dialog__cancel {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
// Vant's own dialog chrome (white slab, hard corners, drop shadow) is
|
||||
// replaced wholesale — the shape and elevation now match the rest of the
|
||||
// app's cards (HomeView's hero, Dashboard's rows) rather than the library
|
||||
// default.
|
||||
.mDialog.van-dialog {
|
||||
width: min(320px, calc(100vw - 48px));
|
||||
border-radius: 26px;
|
||||
background: @canvas;
|
||||
box-shadow: 0 30px 60px -24px rgba(20, 22, 26, 0.45);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.mDialog__body {
|
||||
padding: 26px 22px 20px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
// The illustration sits inside a soft circular badge in the page's wine
|
||||
// wash, sized to a consistent footprint regardless of the source SVG's
|
||||
// native dimensions — mirrors DashboardView's icon-badge treatment.
|
||||
.mDialog__art {
|
||||
width: 84px;
|
||||
height: 84px;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
background: @wineWash;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.mDialog__art img,
|
||||
.mDialog__art svg,
|
||||
.mDialog__art canvas {
|
||||
width: 56px;
|
||||
height: 56px;
|
||||
object-fit: contain;
|
||||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
.mDialog__title {
|
||||
font-size: 14.5px;
|
||||
font-weight: 700;
|
||||
line-height: 1.9;
|
||||
color: @ink;
|
||||
}
|
||||
|
||||
// Two pill buttons instead of Vant's bordered text-grid. Each call site
|
||||
// passes two <div>s with a click handler; the first (the affirmative action)
|
||||
// is promoted to the filled primary pill by DOM order, the second becomes
|
||||
// the ghost/secondary pill — no call-site markup changes needed.
|
||||
.mDialog__actions {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 9px;
|
||||
margin-top: 22px;
|
||||
font-size: 13px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.mDialog__actions > * {
|
||||
padding: 12px;
|
||||
border-radius: 14px;
|
||||
cursor: pointer;
|
||||
transition: transform 0.18s ease, opacity 0.18s ease;
|
||||
}
|
||||
|
||||
.mDialog__actions > *:active {
|
||||
transform: scale(0.97);
|
||||
}
|
||||
|
||||
.mDialog__actions > *:first-child {
|
||||
color: #fff !important;
|
||||
background: @ink;
|
||||
}
|
||||
|
||||
.mDialog__actions > *:last-child {
|
||||
color: @inkFaint !important;
|
||||
background: none;
|
||||
}
|
||||
</style>
|
||||
@@ -1,104 +0,0 @@
|
||||
<!--
|
||||
Ported from legacy henza_pwa/src/components/DialogVantOneButton.vue — the
|
||||
single-action variant of DialogVant (one full-width button instead of a
|
||||
two-column grid). Used by App.vue's "new version available" dialog.
|
||||
|
||||
Same structure as DialogVant.vue: `show` is not a declared prop; the parent's
|
||||
v-model:show falls through onto <van-dialog>, which is this component's sole
|
||||
root element. Legacy's internal watch on an undeclared `modelValue` prop was
|
||||
dead code and is not carried over.
|
||||
|
||||
Visual pass: same card chrome as DialogVant.vue's redesign (rounded
|
||||
@canvas card, wine-wash art badge, filled @ink pill button), kept in sync
|
||||
so the two dialog variants read as one family. The art badge is sized
|
||||
larger here than DialogVant's since this component's sole caller
|
||||
(App.vue's update dialog) fills it with a full animated Lottie player, not
|
||||
a static icon.
|
||||
-->
|
||||
<template>
|
||||
<van-dialog class="mDialog mDialog--single">
|
||||
<div class="mDialog__body">
|
||||
<div class="mDialog__art">
|
||||
<slot name="img">{{ text2 }}</slot>
|
||||
</div>
|
||||
<div class="mDialog__title">
|
||||
<slot name="title">{{ text1 }}</slot>
|
||||
</div>
|
||||
<div class="mDialog__actions">
|
||||
<slot name="button">{{ text3 }}</slot>
|
||||
</div>
|
||||
</div>
|
||||
</van-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { Dialog as VanDialog } from 'vant'
|
||||
|
||||
withDefaults(
|
||||
defineProps<{
|
||||
timeOut: number
|
||||
text1?: string
|
||||
text2?: string
|
||||
text3?: string
|
||||
}>(),
|
||||
{},
|
||||
)
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.van-dialog__confirm,
|
||||
.van-dialog__cancel {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.mDialog.van-dialog {
|
||||
width: min(320px, calc(100vw - 48px));
|
||||
border-radius: 26px;
|
||||
background: @canvas;
|
||||
box-shadow: 0 30px 60px -24px rgba(20, 22, 26, 0.45);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.mDialog__body {
|
||||
padding: 26px 22px 20px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.mDialog--single .mDialog__art {
|
||||
width: 100%;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.mDialog__title {
|
||||
font-size: 14.5px;
|
||||
font-weight: 700;
|
||||
line-height: 1.9;
|
||||
color: @ink;
|
||||
}
|
||||
|
||||
.mDialog__actions {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 9px;
|
||||
margin-top: 10px;
|
||||
font-size: 13px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.mDialog__actions > * {
|
||||
padding: 12px;
|
||||
border-radius: 14px;
|
||||
cursor: pointer;
|
||||
transition: transform 0.18s ease, opacity 0.18s ease;
|
||||
color: #fff !important;
|
||||
background: @ink;
|
||||
}
|
||||
|
||||
.mDialog__actions > *:active {
|
||||
transform: scale(0.97);
|
||||
}
|
||||
</style>
|
||||
@@ -1,50 +0,0 @@
|
||||
<!-- Ported from legacy henza_pwa/src/components/NotifyVant.vue -->
|
||||
<template>
|
||||
<div v-if="modelValue" class="flex">
|
||||
<van-notify v-model:show="show" :style="color">
|
||||
<div class="w-full text-white my-2">
|
||||
<div class="w-full flex content-end">
|
||||
<Icon icon="vuesax-linear:info-circle" class="ml-[20px] text-white" size="25" />
|
||||
<div>
|
||||
<slot>{{ text }}</slot>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</van-notify>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, watch } from 'vue'
|
||||
import { Notify as VanNotify } from 'vant'
|
||||
import Icon from './icon/Icon.vue'
|
||||
|
||||
const show = ref(true)
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
modelValue: boolean
|
||||
timeOut: number
|
||||
text?: string
|
||||
color?: string
|
||||
}>(),
|
||||
{},
|
||||
)
|
||||
const emit = defineEmits<{ (e: 'update:modelValue', value: boolean): void }>()
|
||||
|
||||
watch(
|
||||
() => props.modelValue,
|
||||
() => {
|
||||
if (props.timeOut !== -1) showNotify()
|
||||
},
|
||||
)
|
||||
const showNotify = () => {
|
||||
setTimeout(() => {
|
||||
emit('update:modelValue', false)
|
||||
}, props.timeOut)
|
||||
}
|
||||
</script>
|
||||
<!--
|
||||
Legacy also had a `.notify-enter-active`/`.notify-leave-active` style block
|
||||
referencing an undefined `notify-in` @keyframes and unused by any
|
||||
<transition name="notify"> in this component — genuinely dead, dropped.
|
||||
-->
|
||||
@@ -295,25 +295,15 @@
|
||||
</Transition>
|
||||
</Teleport>
|
||||
|
||||
<NotifyVant :timeOut="3000" v-model="notify" :color="'background-color: #14161A'">
|
||||
<div class="font-bold text-right mb-2">ثبت سفارش</div>
|
||||
<div>محصول با موفقیت به سبد خرید افزوده شد</div>
|
||||
</NotifyVant>
|
||||
|
||||
<DialogVant :timeOut="-1" v-model:show="loginNotify" :closeOnClickOverlay="true">
|
||||
<template v-slot:img>
|
||||
<img :src="loginDialogImage" alt="" class="opacity-80" />
|
||||
</template>
|
||||
<template v-slot:title>
|
||||
<div class="p-8 text-justify">
|
||||
برای دسترسی به تمامی امکانات نرم افزار منتزر، ابتدا گزینه ورود/ثبت نام را لمس کنید و در صورت نداشتن حساب کاربری، ثبت نام نمایید.
|
||||
</div>
|
||||
</template>
|
||||
<template v-slot:button>
|
||||
<div class="text-center font-bold" @click="router.push({ name: 'login' })">ورود/ثبت نام</div>
|
||||
<div class="text-center" @click="loginNotify = false">بیخیال</div>
|
||||
</template>
|
||||
</DialogVant>
|
||||
<IslandSheet
|
||||
v-model:show="loginNotify"
|
||||
art="login"
|
||||
title="ابتدا وارد حساب کاربری شوید"
|
||||
description="برای دسترسی به تمامی امکانات نرم افزار منتزر، گزینه ورود/ثبت نام را لمس کنید و در صورت نداشتن حساب کاربری، ثبت نام نمایید."
|
||||
confirm-text="ورود/ثبت نام"
|
||||
cancel-text="بیخیال"
|
||||
@confirm="router.push({ name: 'login' })"
|
||||
/>
|
||||
</Spinner>
|
||||
</template>
|
||||
|
||||
@@ -323,15 +313,14 @@ import { useRouter } from 'vue-router'
|
||||
import Icon from '../icon/Icon.vue'
|
||||
import GallerySlider from './GallerySlider.vue'
|
||||
import Spinner from '../Spinner.vue'
|
||||
import NotifyVant from '../NotifyVant.vue'
|
||||
import DialogVant from '../DialogVant.vue'
|
||||
import { toast } from '../../composables/useToast'
|
||||
import IslandSheet from '../ui/IslandSheet.vue'
|
||||
import { useProduct, isVariantOrderable } from '../../composables/useProduct'
|
||||
import { useProductDetail } from '../../composables/useProductDetail'
|
||||
import { useFavoritesStore } from '../../stores/favoritesStore'
|
||||
import { useFiltersStore } from '../../stores/filtersStore'
|
||||
import { useCartStore, type CartItem } from '../../stores/cartStore'
|
||||
import { isUserLoggedIn } from '../../utils/checkAccess'
|
||||
import loginDialogImage from '../../assets/img/empty/dialogEmpty1.svg'
|
||||
|
||||
const props = defineProps<{ id: string }>()
|
||||
const emit = defineEmits<{ (e: 'closeDrawer'): void }>()
|
||||
@@ -350,7 +339,6 @@ const close = () => {
|
||||
if (router.currentRoute.value.name === 'singleProduct') router.back()
|
||||
}
|
||||
|
||||
const notify = ref(false)
|
||||
const loginNotify = ref(false)
|
||||
const imageIndex = ref(0)
|
||||
const bodyOpen = ref(false)
|
||||
@@ -499,7 +487,7 @@ const isOrderable = (v: Parameters<typeof isVariantOrderable>[0]) => isVariantOr
|
||||
const addToCart = () => {
|
||||
// The store refuses an un-orderable variant; only confirm when it accepted.
|
||||
if (!cart.addToCart(storeProduct.value)) return
|
||||
notify.value = true
|
||||
toast.success('محصول با موفقیت به سبد خرید افزوده شد', { title: 'ثبت سفارش' })
|
||||
}
|
||||
|
||||
const toggleFav = (e: Event) => {
|
||||
|
||||
@@ -0,0 +1,487 @@
|
||||
<!--
|
||||
Floating "island" action sheet: the app's confirm/notice modal.
|
||||
|
||||
Replaces DialogVant / DialogVantOneButton (centered Vant dialogs whose
|
||||
content was poured into img/title/button slots). The sheet rises from the
|
||||
bottom but stays inset from the screen edges with rounded corners all
|
||||
round, the same island shape as the ant-Drawer `island-sheet` in
|
||||
style.less, so the two kinds of sheet read as one family.
|
||||
|
||||
Structured props instead of slots for the buttons, so every call site gets
|
||||
the same button styling without passing its own markup and color classes:
|
||||
|
||||
<IslandSheet
|
||||
v-model:show="open"
|
||||
art="logout"
|
||||
title="..."
|
||||
description="..."
|
||||
confirm-text="بله"
|
||||
cancel-text="بی خیال"
|
||||
@confirm="doIt"
|
||||
/>
|
||||
|
||||
- `art` picks an illustration from SheetArt, and with it the sheet's tone
|
||||
(header wash + primary button); `tone` overrides it. An `#art` slot can
|
||||
replace the illustration entirely.
|
||||
- No `cancel-text` → a single-button sheet.
|
||||
- `closeOnClickOverlay` (default true) also governs swipe-down-to-dismiss;
|
||||
with it off the sheet can only be left through its own buttons, and a
|
||||
swipe just rubber-bands. No close (×) button: cancel, the backdrop and
|
||||
the swipe already cover it.
|
||||
- Performance: every decorative animation is held paused until the slide-in
|
||||
has finished (`is-ready`, set on Vant's `opened`), so the slide has the
|
||||
frame budget to itself; the content arrives as one piece, not staggered,
|
||||
and nothing uses backdrop-filter (blurring the page behind a fading
|
||||
overlay recomputes every frame and was the main source of jank on phones).
|
||||
- Cancel closes the sheet itself and emits `cancel`; confirm only emits
|
||||
`confirm` — the caller decides whether it closes (e.g. a redirect).
|
||||
-->
|
||||
<template>
|
||||
<Popup
|
||||
:show="show"
|
||||
position="bottom"
|
||||
teleport="body"
|
||||
transition="iSheet-slide"
|
||||
transition-appear
|
||||
class="iSheet"
|
||||
overlay-class="iSheet__overlay"
|
||||
:close-on-click-overlay="closeOnClickOverlay"
|
||||
close-on-popstate
|
||||
@update:show="emit('update:show', $event)"
|
||||
@opened="ready = true"
|
||||
@closed="onClosed"
|
||||
@click="onGapClick"
|
||||
>
|
||||
<div
|
||||
class="iSheet__card"
|
||||
:class="[`iSheet--${resolvedTone}`, { 'is-dragging': dragging, 'is-ready': ready }]"
|
||||
:style="cardStyle"
|
||||
dir="rtl"
|
||||
role="dialog"
|
||||
aria-modal="true"
|
||||
@touchstart.passive="onTouchStart"
|
||||
@touchmove.passive="onTouchMove"
|
||||
@touchend="onTouchEnd"
|
||||
@touchcancel="onTouchEnd"
|
||||
>
|
||||
<div class="iSheet__stage">
|
||||
<span class="iSheet__handle" />
|
||||
<span class="iSheet__ring iSheet__ring--outer" />
|
||||
<span class="iSheet__ring iSheet__ring--inner" />
|
||||
<span v-for="n in 4" :key="n" class="iSheet__spark" :class="`iSheet__spark--${n}`" />
|
||||
<div class="iSheet__art">
|
||||
<slot name="art">
|
||||
<SheetArt v-if="art" :name="art" />
|
||||
</slot>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3 class="iSheet__title">{{ title }}</h3>
|
||||
<p v-if="description" class="iSheet__desc">{{ description }}</p>
|
||||
|
||||
<div class="iSheet__actions">
|
||||
<button type="button" class="iSheet__btn iSheet__btn--primary" @click="emit('confirm')">
|
||||
{{ confirmText }}
|
||||
</button>
|
||||
<button v-if="cancelText" type="button" class="iSheet__btn iSheet__btn--ghost" @click="cancel">
|
||||
{{ cancelText }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</Popup>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed, ref } from 'vue'
|
||||
import { Popup } from 'vant'
|
||||
import SheetArt, { type SheetArtName } from './SheetArt.vue'
|
||||
|
||||
type Tone = 'ink' | 'wine' | 'navy' | 'gold' | 'green'
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
show: boolean
|
||||
title: string
|
||||
description?: string
|
||||
confirmText: string
|
||||
cancelText?: string
|
||||
art?: SheetArtName
|
||||
tone?: Tone
|
||||
closeOnClickOverlay?: boolean
|
||||
}>(),
|
||||
{ closeOnClickOverlay: true },
|
||||
)
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: 'update:show', value: boolean): void
|
||||
(e: 'confirm'): void
|
||||
(e: 'cancel'): void
|
||||
}>()
|
||||
|
||||
const artTone: Record<SheetArtName, Tone> = {
|
||||
logout: 'wine',
|
||||
login: 'navy',
|
||||
order: 'gold',
|
||||
update: 'navy',
|
||||
success: 'green',
|
||||
}
|
||||
|
||||
const resolvedTone = computed<Tone>(() => props.tone ?? (props.art ? artTone[props.art] : 'ink'))
|
||||
|
||||
const ready = ref(false)
|
||||
|
||||
function close() {
|
||||
emit('update:show', false)
|
||||
}
|
||||
|
||||
function onClosed() {
|
||||
ready.value = false
|
||||
dragY.value = 0
|
||||
}
|
||||
|
||||
function cancel() {
|
||||
emit('cancel')
|
||||
close()
|
||||
}
|
||||
|
||||
// The popup is a full-width transparent strip with the card inset inside it;
|
||||
// a tap in that inset gap is visually a tap on the backdrop, so treat it as one.
|
||||
function onGapClick(e: MouseEvent) {
|
||||
if (props.closeOnClickOverlay && e.target === e.currentTarget) close()
|
||||
}
|
||||
|
||||
// Swipe down to dismiss. Only the card moves while dragging; on release it
|
||||
// either springs back or the popup's own leave transition carries it off
|
||||
// from wherever the finger left it (reset once fully closed).
|
||||
const DISMISS_DISTANCE = 90
|
||||
const DISMISS_VELOCITY = 0.5 // px per ms
|
||||
|
||||
const dragY = ref(0)
|
||||
const dragging = ref(false)
|
||||
let startY = 0
|
||||
let startTime = 0
|
||||
|
||||
const cardStyle = computed(() =>
|
||||
dragY.value ? { transform: `translate3d(0, ${dragY.value}px, 0)` } : undefined,
|
||||
)
|
||||
|
||||
function onTouchStart(e: TouchEvent) {
|
||||
if ((e.target as HTMLElement).closest('button')) return
|
||||
startY = e.touches[0].clientY
|
||||
startTime = Date.now()
|
||||
dragging.value = true
|
||||
}
|
||||
|
||||
function onTouchMove(e: TouchEvent) {
|
||||
if (!dragging.value) return
|
||||
const dy = e.touches[0].clientY - startY
|
||||
// Downward follows the finger when dismissable, otherwise rubber-bands;
|
||||
// upward always rubber-bands.
|
||||
dragY.value = dy > 0 ? (props.closeOnClickOverlay ? dy : dy * 0.2) : dy * 0.12
|
||||
}
|
||||
|
||||
function onTouchEnd() {
|
||||
if (!dragging.value) return
|
||||
dragging.value = false
|
||||
const velocity = dragY.value / Math.max(1, Date.now() - startTime)
|
||||
if (props.closeOnClickOverlay && (dragY.value > DISMISS_DISTANCE || (dragY.value > 30 && velocity > DISMISS_VELOCITY))) {
|
||||
close()
|
||||
} else {
|
||||
dragY.value = 0
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
// Global, not scoped: the popup is teleported to <body>.
|
||||
|
||||
.iSheet__overlay {
|
||||
background: rgba(20, 22, 26, 0.48);
|
||||
}
|
||||
|
||||
.iSheet.van-popup {
|
||||
background: transparent;
|
||||
overflow: visible;
|
||||
padding: 0 12px calc(12px + env(safe-area-inset-bottom, 0px));
|
||||
}
|
||||
|
||||
// The iOS sheet curve: fast out of the gate, long soft landing. Transform
|
||||
// only, on its own compositor layer, so it never waits on paint.
|
||||
.iSheet-slide-enter-active,
|
||||
.iSheet-slide-leave-active {
|
||||
will-change: transform;
|
||||
}
|
||||
|
||||
.iSheet-slide-enter-active {
|
||||
transition: transform 0.42s cubic-bezier(0.32, 0.72, 0, 1);
|
||||
}
|
||||
|
||||
.iSheet-slide-leave-active {
|
||||
transition: transform 0.24s cubic-bezier(0.4, 0, 1, 1);
|
||||
}
|
||||
|
||||
// Hold every decorative animation (the stage's rings and sparks, and the
|
||||
// illustration's own) until the sheet has landed.
|
||||
.iSheet__card:not(.is-ready) *,
|
||||
.iSheet__card:not(.is-ready) *::after {
|
||||
animation-play-state: paused !important;
|
||||
}
|
||||
|
||||
.iSheet-slide-enter-from,
|
||||
.iSheet-slide-leave-to {
|
||||
transform: translate3d(0, 100%, 0);
|
||||
}
|
||||
|
||||
// Tones: one accent per job. --t is the accent, --t-rgb its channels for
|
||||
// translucent uses, --t-hi the lighter top of the button gradient, --t-wash
|
||||
// and --t-wash2 the header's two background stops.
|
||||
.iSheet--ink {
|
||||
--t: @ink;
|
||||
--t-rgb: 20, 22, 26;
|
||||
--t-hi: @inkSoft;
|
||||
--t-wash: #F7F7F8;
|
||||
--t-wash2: #ECEDEF;
|
||||
}
|
||||
|
||||
.iSheet--wine {
|
||||
--t: @wine;
|
||||
--t-rgb: 122, 27, 51;
|
||||
--t-hi: @wineSoft;
|
||||
--t-wash: #FDF6F7;
|
||||
--t-wash2: #F7E2E7;
|
||||
}
|
||||
|
||||
.iSheet--navy {
|
||||
--t: @primary;
|
||||
--t-rgb: 28, 45, 86;
|
||||
--t-hi: #2D4682;
|
||||
--t-wash: #F5F7FC;
|
||||
--t-wash2: #E2E8F4;
|
||||
}
|
||||
|
||||
.iSheet--gold {
|
||||
--t: @secondary;
|
||||
--t-rgb: 141, 106, 70;
|
||||
--t-hi: #C39350;
|
||||
--t-wash: #FDF9F2;
|
||||
--t-wash2: #F5E7CF;
|
||||
}
|
||||
|
||||
.iSheet--green {
|
||||
--t: #15803d;
|
||||
--t-rgb: 22, 163, 74;
|
||||
--t-hi: #22a052;
|
||||
--t-wash: #F4FBF6;
|
||||
--t-wash2: #D9F1E1;
|
||||
}
|
||||
|
||||
.iSheet__card {
|
||||
position: relative;
|
||||
max-width: 440px;
|
||||
margin: 0 auto;
|
||||
padding: 8px 8px 12px;
|
||||
border-radius: 30px;
|
||||
background: @canvas;
|
||||
text-align: center;
|
||||
box-shadow:
|
||||
0 30px 60px -22px rgba(20, 22, 26, 0.5),
|
||||
0 0 0 1px rgba(20, 22, 26, 0.04);
|
||||
transition: transform 0.38s cubic-bezier(0.22, 1, 0.36, 1);
|
||||
touch-action: none;
|
||||
|
||||
&.is-dragging {
|
||||
transition: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Header: a tinted window with a faint dot grid that fades out towards the
|
||||
// edges, two soft rings framing the illustration, and a few twinkles.
|
||||
.iSheet__stage {
|
||||
position: relative;
|
||||
height: 172px;
|
||||
border-radius: 23px;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: radial-gradient(130% 95% at 50% 0%, var(--t-wash2) 0%, var(--t-wash) 72%);
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image: radial-gradient(rgba(var(--t-rgb), 0.13) 1px, transparent 1.3px);
|
||||
background-size: 14px 14px;
|
||||
-webkit-mask-image: radial-gradient(closest-side, #000 30%, transparent 100%);
|
||||
mask-image: radial-gradient(closest-side, #000 30%, transparent 100%);
|
||||
}
|
||||
}
|
||||
|
||||
.iSheet__handle {
|
||||
position: absolute;
|
||||
top: 8px;
|
||||
left: 50%;
|
||||
width: 38px;
|
||||
height: 4px;
|
||||
margin-left: -19px;
|
||||
border-radius: 4px;
|
||||
background: rgba(var(--t-rgb), 0.18);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.iSheet__ring {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
|
||||
&--outer {
|
||||
width: 196px;
|
||||
height: 196px;
|
||||
margin: -98px 0 0 -98px;
|
||||
border: 1.5px dashed rgba(var(--t-rgb), 0.16);
|
||||
}
|
||||
|
||||
&--inner {
|
||||
width: 132px;
|
||||
height: 132px;
|
||||
margin: -66px 0 0 -66px;
|
||||
background: radial-gradient(circle, rgba(255, 255, 255, 0.95) 0%, rgba(255, 255, 255, 0.55) 62%, rgba(255, 255, 255, 0) 72%);
|
||||
box-shadow: 0 0 0 10px rgba(255, 255, 255, 0.35);
|
||||
animation: iSheet-breathe 3.2s ease-in-out infinite;
|
||||
}
|
||||
}
|
||||
|
||||
.iSheet__spark {
|
||||
position: absolute;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
background: rgba(var(--t-rgb), 0.45);
|
||||
clip-path: polygon(50% 0, 62% 38%, 100% 50%, 62% 62%, 50% 100%, 38% 62%, 0 50%, 38% 38%);
|
||||
animation: iSheet-twinkle 2.6s ease-in-out infinite;
|
||||
|
||||
&--1 { top: 30px; right: 24%; }
|
||||
&--2 { top: 62px; left: 19%; width: 7px; height: 7px; animation-delay: 0.7s; }
|
||||
&--3 { bottom: 32px; right: 17%; width: 8px; height: 8px; animation-delay: 1.3s; }
|
||||
&--4 { bottom: 26px; left: 27%; width: 6px; height: 6px; animation-delay: 1.9s; }
|
||||
}
|
||||
|
||||
.iSheet__art {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
width: 128px;
|
||||
height: 128px;
|
||||
|
||||
> img,
|
||||
> svg,
|
||||
> canvas {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: contain;
|
||||
}
|
||||
}
|
||||
|
||||
// Every element sets its own font-size: style.less's `*` rule pins each one
|
||||
// to 14px, so nothing inherits.
|
||||
.iSheet__title {
|
||||
margin: 20px 16px 0;
|
||||
font-size: 16.5px;
|
||||
font-weight: 800;
|
||||
line-height: 1.75;
|
||||
color: @ink;
|
||||
}
|
||||
|
||||
.iSheet__desc {
|
||||
margin: 6px 20px 0;
|
||||
font-size: 13px;
|
||||
font-weight: 400;
|
||||
line-height: 2;
|
||||
color: @inkMuted;
|
||||
}
|
||||
|
||||
.iSheet__actions {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 6px;
|
||||
margin: 22px 4px 0;
|
||||
}
|
||||
|
||||
// Scoped under the card on purpose: Tailwind's preflight resets
|
||||
// `[type='button']` to a transparent, image-less background with the same
|
||||
// specificity as a single class, and App.vue (which uses this sheet) is
|
||||
// imported before main.ts loads tailwind.css — so a bare `.iSheet__btn--primary`
|
||||
// loses on source order and the button renders white-on-white.
|
||||
.iSheet__card .iSheet__btn {
|
||||
position: relative;
|
||||
height: 52px;
|
||||
border: 0;
|
||||
border-radius: 18px;
|
||||
font-size: 14.5px;
|
||||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
transition: transform 0.18s ease, box-shadow 0.18s ease, background-color 0.18s ease;
|
||||
|
||||
&:active {
|
||||
transform: scale(0.97);
|
||||
}
|
||||
|
||||
&--primary {
|
||||
color: #fff;
|
||||
background: linear-gradient(180deg, var(--t-hi) 0%, var(--t) 100%);
|
||||
box-shadow:
|
||||
0 12px 24px -12px rgba(var(--t-rgb), 0.75),
|
||||
inset 0 1px 0 rgba(255, 255, 255, 0.18);
|
||||
|
||||
// A single sheen across the button once the sheet has settled.
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 40%;
|
||||
background: linear-gradient(100deg, transparent, rgba(255, 255, 255, 0.28), transparent);
|
||||
transform: translateX(-130%) skewX(-18deg);
|
||||
animation: iSheet-sheen 0.9s ease-in-out 0.15s both;
|
||||
}
|
||||
}
|
||||
|
||||
&--ghost {
|
||||
color: @inkMuted;
|
||||
background: transparent;
|
||||
|
||||
&:active {
|
||||
background: @hairlineSoft;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes iSheet-breathe {
|
||||
50% { transform: scale(1.06); }
|
||||
}
|
||||
|
||||
@keyframes iSheet-twinkle {
|
||||
0%, 100% { transform: scale(0.4) rotate(0deg); opacity: 0.2; }
|
||||
50% { transform: scale(1) rotate(45deg); opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes iSheet-sheen {
|
||||
from { transform: translateX(-130%) skewX(-18deg); }
|
||||
to { transform: translateX(300%) skewX(-18deg); }
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.iSheet-slide-enter-active,
|
||||
.iSheet-slide-leave-active {
|
||||
transition-duration: 0.01s;
|
||||
}
|
||||
|
||||
.iSheet__card *,
|
||||
.iSheet__card *::after {
|
||||
animation: none !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,19 +1,14 @@
|
||||
<!--
|
||||
Redesigned bottom nav — replaces the old GSAP SVG-notch bar (4 tabs: user,
|
||||
cart, search, home) with a flat pill-bar of 5 tabs (Home, Search, Likes,
|
||||
Notifications, Profile), each showing icon + label, and a single sliding
|
||||
indicator behind the active tab instead of a cut-out notch.
|
||||
|
||||
windowData/SVG path math from the old version is gone — the indicator is
|
||||
now pure CSS, positioned with a transform driven by the active tab's index,
|
||||
so it needs no measurement of the container width.
|
||||
Bottom nav — a compact rounded bar of square, icon-only tiles (Home,
|
||||
Search, Cart, Orders, Profile). A single square indicator slides behind the
|
||||
active tile; labels live in aria-label/title instead of under the icon.
|
||||
-->
|
||||
<template>
|
||||
<nav class="tabbar" v-show="nav.showNav">
|
||||
<div class="tabbar__inner" :style="{ '--count': nav.navBarRoutes.length }">
|
||||
<div class="tabbar__inner">
|
||||
<div
|
||||
class="tabbar__indicator"
|
||||
:style="{ transform: `translateX(${indicatorOffset}%)` }"
|
||||
:style="{ transform: `translateX(${indicatorOffset})` }"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
<router-link
|
||||
@@ -22,9 +17,10 @@
|
||||
:to="{ name: item.name }"
|
||||
class="tabbar__item"
|
||||
:class="{ 'is-active': nav.activeLink === item.index }"
|
||||
:aria-label="item.label"
|
||||
:title="item.label"
|
||||
>
|
||||
<Icon :icon="item.icon" size="21" />
|
||||
<span class="tabbar__label">{{ item.label }}</span>
|
||||
<Icon :icon="item.icon" size="22" />
|
||||
</router-link>
|
||||
</div>
|
||||
</nav>
|
||||
@@ -37,11 +33,14 @@ import { useNavStore } from '../../stores/navStore'
|
||||
|
||||
const nav = useNavStore()
|
||||
|
||||
// Index is 1-based; the indicator sits in tab slot (activeLink - 1) out of N.
|
||||
// The whole app runs `direction: rtl` (see App.vue), which flips the grid's
|
||||
// visual column order but NOT a physical translateX — so slot 0 renders on
|
||||
// the right, and moving right needs a NEGATIVE offset here.
|
||||
const indicatorOffset = computed(() => -(nav.activeLink - 1) * 100)
|
||||
// Index is 1-based; the indicator sits on tile (activeLink - 1). Tiles are a
|
||||
// fixed size, so one step is one tile plus the gap between tiles.
|
||||
// The whole app runs `direction: rtl` (see App.vue), which flips the flex
|
||||
// order but NOT a physical translateX — so tile 0 renders on the right, and
|
||||
// moving left needs a NEGATIVE offset here.
|
||||
const indicatorOffset = computed(
|
||||
() => `calc(${-(nav.activeLink - 1)} * (var(--tile) + var(--gap)))`,
|
||||
)
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
@@ -51,69 +50,140 @@ const indicatorOffset = computed(() => -(nav.activeLink - 1) * 100)
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 10;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
padding: 10px 14px calc(10px + env(safe-area-inset-bottom, 0px));
|
||||
background: transparent;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
// Compact bar that hugs its square tiles instead of spanning the screen.
|
||||
.tabbar__inner {
|
||||
--tile: 52px;
|
||||
--gap: 6px;
|
||||
--pad: 6px;
|
||||
|
||||
position: relative;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(var(--count), 1fr);
|
||||
max-width: 420px;
|
||||
margin: 0 auto;
|
||||
padding: 6px;
|
||||
display: flex;
|
||||
gap: var(--gap);
|
||||
padding: var(--pad);
|
||||
border-radius: 22px;
|
||||
background: @canvas;
|
||||
border: 1px solid @hairline;
|
||||
box-shadow: 0 10px 28px -12px rgba(20, 22, 26, 0.18);
|
||||
pointer-events: auto;
|
||||
|
||||
// Frosted glass: a thin, mostly clear pane that heavily blurs and
|
||||
// brightens whatever scrolls beneath it. A light spot sits top-left, a
|
||||
// faint wine tint pools bottom-right, and the drop shadow lifts the pane.
|
||||
background:
|
||||
radial-gradient(120% 140% at 0% 0%, fade(@canvas, 55%) 0%, fade(@canvas, 0%) 55%),
|
||||
radial-gradient(90% 120% at 100% 100%, fade(@wine, 7%) 0%, fade(@wine, 0%) 60%),
|
||||
linear-gradient(160deg, fade(@canvas, 42%) 0%, fade(@canvas, 18%) 100%);
|
||||
-webkit-backdrop-filter: blur(26px) saturate(210%) brightness(1.06);
|
||||
backdrop-filter: blur(26px) saturate(210%) brightness(1.06);
|
||||
border: 0;
|
||||
box-shadow:
|
||||
inset 0 1px 1px fade(@canvas, 90%),
|
||||
inset 0 -8px 16px -10px fade(@canvas, 60%),
|
||||
inset 0 0 0 0.5px fade(@canvas, 35%),
|
||||
0 18px 40px -14px rgba(20, 22, 26, 0.32),
|
||||
0 6px 14px -8px fade(@wine, 22%),
|
||||
0 1px 3px rgba(20, 22, 26, 0.06);
|
||||
|
||||
// Curved specular gloss across the top, like light on a bent pane.
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 1px 8% auto 8%;
|
||||
height: 55%;
|
||||
border-radius: 20px 20px 50% 50% / 20px 20px 100% 100%;
|
||||
background: linear-gradient(180deg, fade(@canvas, 60%) 0%, fade(@canvas, 0%) 100%);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
// Edge light: a 1px gradient rim, bright where the light hits (top-left)
|
||||
// and fading out on the far edges. Masked so only the border ring shows.
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
padding: 1px;
|
||||
border-radius: inherit;
|
||||
background: linear-gradient(
|
||||
145deg,
|
||||
fade(@canvas, 100%) 0%,
|
||||
fade(@canvas, 35%) 35%,
|
||||
fade(@canvas, 10%) 65%,
|
||||
fade(@canvas, 70%) 100%
|
||||
);
|
||||
-webkit-mask:
|
||||
linear-gradient(#000 0 0) content-box,
|
||||
linear-gradient(#000 0 0);
|
||||
-webkit-mask-composite: xor;
|
||||
mask-composite: exclude;
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Browsers without backdrop-filter get a mostly opaque fill so it stays legible.
|
||||
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
|
||||
.tabbar__inner {
|
||||
background: fade(@canvas, 94%);
|
||||
}
|
||||
}
|
||||
|
||||
// Paints above the tiles' own fill (z-index 1) but below their icons (z 2).
|
||||
.tabbar__indicator {
|
||||
position: absolute;
|
||||
inset: 6px 6px 6px auto;
|
||||
width: calc((100% - 12px) / var(--count));
|
||||
top: var(--pad);
|
||||
right: var(--pad);
|
||||
z-index: 1;
|
||||
width: var(--tile);
|
||||
height: var(--tile);
|
||||
border-radius: 16px;
|
||||
background: @wineWash;
|
||||
box-shadow: 0 4px 12px -6px rgba(20, 22, 26, 0.25);
|
||||
transition: transform 0.35s cubic-bezier(0.65, 0, 0.35, 1);
|
||||
will-change: transform;
|
||||
}
|
||||
|
||||
.tabbar__item {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 2px;
|
||||
padding: 8px 4px;
|
||||
flex: 0 0 var(--tile);
|
||||
width: var(--tile);
|
||||
height: var(--tile);
|
||||
border-radius: 16px;
|
||||
color: @inkFaint;
|
||||
background: @hairlineSoft;
|
||||
color: @inkMuted;
|
||||
text-decoration: none;
|
||||
transition: color 0.25s ease, transform 0.25s cubic-bezier(0.65, 0, 0.35, 1.4);
|
||||
transition: color 0.25s ease;
|
||||
}
|
||||
|
||||
.tabbar__item :deep(svg) {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
transition: transform 0.3s cubic-bezier(0.65, 0, 0.35, 1.4);
|
||||
}
|
||||
|
||||
.tabbar__item.is-active {
|
||||
color: @wine;
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.tabbar__item.is-active :deep(svg) {
|
||||
transform: scale(1.08);
|
||||
}
|
||||
|
||||
.tabbar__item:active {
|
||||
transform: scale(0.94);
|
||||
// Scale the icon, not the tile: a transform on the tile would make it a
|
||||
// stacking context and drop the icon beneath the indicator.
|
||||
.tabbar__item:active :deep(svg) {
|
||||
transform: scale(0.9);
|
||||
}
|
||||
|
||||
.tabbar__label {
|
||||
font-size: 10px;
|
||||
font-weight: 600;
|
||||
line-height: 1;
|
||||
opacity: 0.9;
|
||||
@media (max-width: 360px) {
|
||||
.tabbar__inner {
|
||||
--tile: 46px;
|
||||
--gap: 5px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -38,6 +38,8 @@ const props = withDefaults(
|
||||
back?: boolean
|
||||
/** Route name to go to instead of history.back(). */
|
||||
backTo?: string
|
||||
/** Custom back handler; wins over backTo and history (e.g. a multi-step form stepping back). */
|
||||
backAction?: () => void
|
||||
}>(),
|
||||
{ back: true },
|
||||
)
|
||||
@@ -45,7 +47,8 @@ const props = withDefaults(
|
||||
const router = useRouter()
|
||||
|
||||
function onBack() {
|
||||
if (props.backTo) router.push({ name: props.backTo })
|
||||
if (props.backAction) props.backAction()
|
||||
else if (props.backTo) router.push({ name: props.backTo })
|
||||
else router.back()
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,330 @@
|
||||
<!--
|
||||
Inline, animated illustrations for IslandSheet — one per job the sheet does,
|
||||
so the picture says what the action is before the text does:
|
||||
|
||||
logout — a door swung open with an arrow walking out of it
|
||||
login — a phone showing a sign-in form, with a lock badge easing open
|
||||
order — a gold shopping bag that a coin keeps dropping into, ticked
|
||||
update — a rocket lifting off (a new version "launched")
|
||||
success — the uploaded documents, stamped with a green check
|
||||
|
||||
Inline SVG rather than image files so they can animate, pick up the
|
||||
sheet's tone, and cost no network request (the update dialog used to pull
|
||||
a Lottie file from a third-party host on every launch).
|
||||
|
||||
Gradient/clip ids go through useId(): several sheets can be mounted on one
|
||||
page, and a duplicate id would resolve to the first copy in the document —
|
||||
which, inside a hidden sheet, renders as nothing.
|
||||
|
||||
The one-off entrance animations (badge pop, check drawing) replay every
|
||||
time the sheet opens, because the sheet hides with display:none and CSS
|
||||
animations restart when an element is displayed again.
|
||||
-->
|
||||
<template>
|
||||
<svg class="sa" :class="`sa--${name}`" viewBox="0 0 120 120" fill="none" aria-hidden="true">
|
||||
<!-- logout -->
|
||||
<template v-if="name === 'logout'">
|
||||
<defs>
|
||||
<linearGradient :id="ids.a" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0" stop-color="#A33C55" />
|
||||
<stop offset="1" stop-color="#5E1427" />
|
||||
</linearGradient>
|
||||
<radialGradient :id="ids.b" cx=".35" cy=".5" r=".75">
|
||||
<stop offset="0" stop-color="#FFF7E6" />
|
||||
<stop offset="1" stop-color="#F4C57A" />
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<ellipse class="sa-shadow" cx="62" cy="106" rx="36" ry="4" fill="#7A1B33" opacity=".12" />
|
||||
<rect x="48" y="18" width="40" height="84" rx="5" :fill="`url(#${ids.b})`" stroke="#7A1B33" stroke-width="3" />
|
||||
<g class="sa-door">
|
||||
<path d="M88 18 L88 102 L69 108 L69 12 Z" :fill="`url(#${ids.a})`" stroke="#5E1427" stroke-width="2" stroke-linejoin="round" />
|
||||
<circle cx="73.5" cy="61" r="2.6" fill="#F4C57A" />
|
||||
</g>
|
||||
<g class="sa-arrow" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M60 60 H22 M33 48 L21 60 L33 72" stroke="#fff" stroke-width="12" />
|
||||
<path d="M60 60 H22 M33 48 L21 60 L33 72" stroke="#7A1B33" stroke-width="6" />
|
||||
</g>
|
||||
</template>
|
||||
|
||||
<!-- login -->
|
||||
<template v-else-if="name === 'login'">
|
||||
<ellipse class="sa-shadow" cx="60" cy="110" rx="28" ry="4" fill="#1C2D56" opacity=".12" />
|
||||
<g class="sa-float">
|
||||
<rect x="34" y="10" width="52" height="92" rx="12" fill="#1C2D56" />
|
||||
<rect x="38" y="14" width="44" height="84" rx="9" fill="#fff" />
|
||||
<rect x="52" y="18.5" width="16" height="4" rx="2" fill="#1C2D56" opacity=".85" />
|
||||
<circle cx="60" cy="42" r="12" fill="#E3E8F4" />
|
||||
<circle cx="60" cy="39" r="4.6" fill="#1C2D56" />
|
||||
<path d="M51.5 51 a8.5 6.5 0 0 1 17 0 Z" fill="#1C2D56" />
|
||||
<rect x="44" y="62" width="32" height="6" rx="3" fill="#ECEDEF" />
|
||||
<rect class="sa-typing" x="44" y="62" width="22" height="6" rx="3" fill="#CACED8" />
|
||||
<rect x="44" y="74" width="32" height="10" rx="5" fill="#1C2D56" />
|
||||
</g>
|
||||
<g class="sa-pop">
|
||||
<circle cx="85" cy="86" r="15" fill="#D9A441" stroke="#fff" stroke-width="3" />
|
||||
<path class="sa-shackle" d="M80 85 v-3.4 a4 4 0 0 1 8 0 V85" stroke="#fff" stroke-width="2.4" stroke-linecap="round" />
|
||||
<rect x="77.5" y="84.5" width="15" height="10.5" rx="2.6" fill="#fff" />
|
||||
<circle cx="85" cy="89.8" r="1.7" fill="#D9A441" />
|
||||
</g>
|
||||
</template>
|
||||
|
||||
<!-- order -->
|
||||
<template v-else-if="name === 'order'">
|
||||
<defs>
|
||||
<linearGradient :id="ids.a" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#EBC06A" />
|
||||
<stop offset="1" stop-color="#B5843B" />
|
||||
</linearGradient>
|
||||
<radialGradient :id="ids.b" cx=".38" cy=".35" r=".7">
|
||||
<stop offset="0" stop-color="#FFF1C7" />
|
||||
<stop offset="1" stop-color="#E2AC4A" />
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<ellipse class="sa-shadow" cx="60" cy="108" rx="32" ry="4" fill="#8D6A46" opacity=".16" />
|
||||
<path d="M46 57 V40 a14 14 0 0 1 28 0 V57" stroke="#8D6A46" stroke-width="4.5" stroke-linecap="round" />
|
||||
<g class="sa-coin">
|
||||
<circle cx="60" cy="31" r="10" :fill="`url(#${ids.b})`" stroke="#B5843B" stroke-width="2" />
|
||||
<circle cx="60" cy="31" r="5.5" stroke="#B5843B" stroke-width="1.5" opacity=".7" />
|
||||
</g>
|
||||
<path d="M30 48 H90 L85 100 a6 6 0 0 1 -6 5.5 H41 a6 6 0 0 1 -6 -5.5 Z" :fill="`url(#${ids.a})`" />
|
||||
<path d="M30 48 H90 L89.4 54.5 H30.6 Z" fill="#8D6A46" opacity=".28" />
|
||||
<path d="M37 60 L39.5 96" stroke="#fff" stroke-width="3" stroke-linecap="round" opacity=".35" />
|
||||
<circle cx="46" cy="57" r="2.4" fill="#8D6A46" />
|
||||
<circle cx="74" cy="57" r="2.4" fill="#8D6A46" />
|
||||
<g class="sa-pop">
|
||||
<circle cx="60" cy="80" r="13" fill="#fff" />
|
||||
<path class="sa-draw" d="M54 80.5 l4.2 4.2 L66.5 76" stroke="#16a34a" stroke-width="3.4" stroke-linecap="round" stroke-linejoin="round" />
|
||||
</g>
|
||||
</template>
|
||||
|
||||
<!-- update -->
|
||||
<template v-else-if="name === 'update'">
|
||||
<defs>
|
||||
<linearGradient :id="ids.a" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#FFD27A" />
|
||||
<stop offset="1" stop-color="#F2793B" />
|
||||
</linearGradient>
|
||||
<clipPath :id="ids.b">
|
||||
<path d="M60 10 C76 22 80 44 76 72 H44 C40 44 44 22 60 10 Z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g stroke="#CACED8" stroke-width="3" stroke-linecap="round">
|
||||
<path class="sa-trail" d="M28 28 v14" />
|
||||
<path class="sa-trail sa-trail--2" d="M94 40 v12" />
|
||||
<path class="sa-trail sa-trail--3" d="M22 64 v10" />
|
||||
<path class="sa-trail sa-trail--4" d="M99 70 v12" />
|
||||
</g>
|
||||
<g class="sa-float">
|
||||
<g class="sa-flame">
|
||||
<path d="M51 77 Q60 112 69 77 Z" :fill="`url(#${ids.a})`" />
|
||||
<path d="M55.5 77 Q60 96 64.5 77 Z" fill="#FFF1C9" />
|
||||
</g>
|
||||
<path d="M44 56 L31 76 Q31 80 35 79 L46 74 Z" fill="#D9A441" />
|
||||
<path d="M76 56 L89 76 Q89 80 85 79 L74 74 Z" fill="#D9A441" />
|
||||
<path d="M60 10 C76 22 80 44 76 72 H44 C40 44 44 22 60 10 Z" fill="#fff" />
|
||||
<g :clip-path="`url(#${ids.b})`">
|
||||
<rect x="30" y="0" width="60" height="31" fill="#1C2D56" />
|
||||
<rect x="30" y="64" width="60" height="10" fill="#E3E8F4" />
|
||||
</g>
|
||||
<path d="M60 10 C76 22 80 44 76 72 H44 C40 44 44 22 60 10 Z" stroke="#1C2D56" stroke-width="3" stroke-linejoin="round" />
|
||||
<circle cx="60" cy="46" r="7.5" fill="#DCE5F7" stroke="#1C2D56" stroke-width="3" />
|
||||
<circle cx="57.6" cy="43.6" r="2" fill="#fff" />
|
||||
<rect x="49" y="71" width="22" height="7" rx="2.5" fill="#1C2D56" />
|
||||
</g>
|
||||
</template>
|
||||
|
||||
<!-- success -->
|
||||
<template v-else-if="name === 'success'">
|
||||
<ellipse class="sa-shadow" cx="58" cy="108" rx="32" ry="4" fill="#16a34a" opacity=".14" />
|
||||
<rect x="26" y="24" width="50" height="70" rx="8" fill="#D6F0DF" transform="rotate(-9 51 59)" />
|
||||
<rect x="34" y="16" width="50" height="72" rx="8" fill="#fff" stroke="#1f7a45" stroke-width="2.5" />
|
||||
<circle cx="46" cy="31" r="6" fill="#BFE8CD" />
|
||||
<rect x="56" y="27" width="20" height="4" rx="2" fill="#E1EFE6" />
|
||||
<rect x="56" y="34" width="13" height="4" rx="2" fill="#E1EFE6" />
|
||||
<rect x="42" y="48" width="34" height="4" rx="2" fill="#E1EFE6" />
|
||||
<rect x="42" y="56" width="27" height="4" rx="2" fill="#E1EFE6" />
|
||||
<rect x="42" y="64" width="31" height="4" rx="2" fill="#E1EFE6" />
|
||||
<circle class="sa-ring" cx="84" cy="85" r="17" fill="#16a34a" />
|
||||
<g class="sa-pop">
|
||||
<circle cx="84" cy="85" r="17" fill="#16a34a" stroke="#fff" stroke-width="3" />
|
||||
<path class="sa-draw" d="M76.5 85.5 l5 5 L92 80" stroke="#fff" stroke-width="3.6" stroke-linecap="round" stroke-linejoin="round" />
|
||||
</g>
|
||||
<g class="sa-confetti">
|
||||
<rect x="18" y="30" width="6" height="6" rx="1.5" fill="#F4C57A" transform="rotate(20 21 33)" />
|
||||
<circle cx="98" cy="26" r="3.2" fill="#16a34a" />
|
||||
<rect x="100" y="52" width="7" height="3.5" rx="1.75" fill="#A33C55" transform="rotate(-30 103.5 53.75)" />
|
||||
<circle cx="20" cy="72" r="2.6" fill="#335CB1" />
|
||||
<rect x="88" y="8" width="3.5" height="7" rx="1.75" fill="#D9A441" transform="rotate(35 89.75 11.5)" />
|
||||
</g>
|
||||
</template>
|
||||
</svg>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useId } from 'vue'
|
||||
|
||||
export type SheetArtName = 'logout' | 'login' | 'order' | 'update' | 'success'
|
||||
|
||||
defineProps<{ name: SheetArtName }>()
|
||||
|
||||
const uid = useId()
|
||||
const ids = { a: `${uid}-a`, b: `${uid}-b` }
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.sa {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
// Everything that moves scales/rotates about its own box, not the SVG origin.
|
||||
.sa * {
|
||||
transform-box: fill-box;
|
||||
transform-origin: center;
|
||||
}
|
||||
|
||||
// Entrances (once per open)
|
||||
.sa-pop {
|
||||
animation: sa-pop 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 0.25s both;
|
||||
}
|
||||
|
||||
.sa-draw {
|
||||
stroke-dasharray: 30;
|
||||
stroke-dashoffset: 30;
|
||||
animation: sa-draw 0.45s ease-out 0.6s forwards;
|
||||
}
|
||||
|
||||
// Loops
|
||||
.sa-shadow {
|
||||
animation: sa-shadow 3.2s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.sa-float {
|
||||
animation: sa-float 3.2s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.sa-door {
|
||||
transform-origin: right center;
|
||||
animation: sa-door 2.8s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.sa-arrow {
|
||||
animation: sa-nudge 2.8s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.sa-typing {
|
||||
transform-origin: right center; // the form is RTL — text grows from the right
|
||||
animation: sa-typing 2.6s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.sa-shackle {
|
||||
animation: sa-shackle 2.6s ease-in-out 0.9s infinite;
|
||||
}
|
||||
|
||||
.sa-coin {
|
||||
animation: sa-coin 2.4s cubic-bezier(0.55, 0, 0.75, 0.4) 0.4s infinite backwards;
|
||||
}
|
||||
|
||||
.sa-flame {
|
||||
transform-origin: center top;
|
||||
animation: sa-flame 0.22s ease-in-out infinite alternate;
|
||||
}
|
||||
|
||||
.sa-trail {
|
||||
animation: sa-trail 1.1s linear infinite;
|
||||
|
||||
&--2 { animation-delay: 0.35s; }
|
||||
&--3 { animation-delay: 0.6s; }
|
||||
&--4 { animation-delay: 0.85s; }
|
||||
}
|
||||
|
||||
.sa-ring {
|
||||
animation: sa-ring 2s ease-out 0.8s infinite;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.sa-confetti > * {
|
||||
animation: sa-confetti 0.7s cubic-bezier(0.34, 1.56, 0.64, 1) both;
|
||||
|
||||
&:nth-child(1) { animation-delay: 0.7s; }
|
||||
&:nth-child(2) { animation-delay: 0.78s; }
|
||||
&:nth-child(3) { animation-delay: 0.86s; }
|
||||
&:nth-child(4) { animation-delay: 0.94s; }
|
||||
&:nth-child(5) { animation-delay: 1.02s; }
|
||||
}
|
||||
|
||||
@keyframes sa-pop {
|
||||
from { transform: scale(0); }
|
||||
to { transform: scale(1); }
|
||||
}
|
||||
|
||||
@keyframes sa-draw {
|
||||
to { stroke-dashoffset: 0; }
|
||||
}
|
||||
|
||||
@keyframes sa-shadow {
|
||||
50% { transform: scaleX(0.82); opacity: 0.08; }
|
||||
}
|
||||
|
||||
@keyframes sa-float {
|
||||
50% { transform: translateY(-4px); }
|
||||
}
|
||||
|
||||
@keyframes sa-door {
|
||||
0%, 100% { transform: scaleX(1); }
|
||||
50% { transform: scaleX(0.72); }
|
||||
}
|
||||
|
||||
@keyframes sa-nudge {
|
||||
0%, 100% { transform: translateX(0); }
|
||||
50% { transform: translateX(-6px); }
|
||||
}
|
||||
|
||||
@keyframes sa-typing {
|
||||
0% { transform: scaleX(0.15); }
|
||||
60%, 100% { transform: scaleX(1); }
|
||||
}
|
||||
|
||||
@keyframes sa-shackle {
|
||||
0%, 55%, 100% { transform: translateY(0); }
|
||||
20%, 40% { transform: translateY(-3px); }
|
||||
}
|
||||
|
||||
@keyframes sa-coin {
|
||||
0% { transform: translateY(-24px); opacity: 0; }
|
||||
20% { opacity: 1; }
|
||||
100% { transform: translateY(26px); opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes sa-flame {
|
||||
from { transform: scaleY(0.82) scaleX(0.94); }
|
||||
to { transform: scaleY(1.12) scaleX(1.04); }
|
||||
}
|
||||
|
||||
@keyframes sa-trail {
|
||||
from { transform: translateY(-8px); opacity: 0; }
|
||||
30% { opacity: 1; }
|
||||
to { transform: translateY(22px); opacity: 0; }
|
||||
}
|
||||
|
||||
@keyframes sa-ring {
|
||||
from { transform: scale(1); opacity: 0.35; }
|
||||
to { transform: scale(1.7); opacity: 0; }
|
||||
}
|
||||
|
||||
@keyframes sa-confetti {
|
||||
from { transform: scale(0) translateY(6px); opacity: 0; }
|
||||
to { transform: scale(1) translateY(0); opacity: 1; }
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.sa * {
|
||||
animation: none !important;
|
||||
}
|
||||
|
||||
.sa-draw {
|
||||
stroke-dashoffset: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,325 @@
|
||||
<!--
|
||||
One toast: a glass card in the same family as the bottom nav — a square
|
||||
icon tile on the start side, title + message, and a thin countdown line.
|
||||
|
||||
The countdown is a CSS animation; its `animationend` is what closes the
|
||||
toast, so pausing it (finger held on the card) pauses the timer too, with
|
||||
no JS clock to keep in sync. Swipe sideways or up to throw it away.
|
||||
-->
|
||||
<template>
|
||||
<div
|
||||
class="toast"
|
||||
:class="[`toast--${item.type}`, { 'is-held': held, 'is-dragging': dragging }]"
|
||||
:style="dragStyle"
|
||||
role="status"
|
||||
@pointerdown="onDown"
|
||||
@pointermove="onMove"
|
||||
@pointerup="onUp"
|
||||
@pointercancel="onUp"
|
||||
>
|
||||
<span class="toast__tile" aria-hidden="true">
|
||||
<span class="toast__ripple" />
|
||||
<Icon :icon="item.icon" size="22" />
|
||||
</span>
|
||||
|
||||
<div class="toast__body">
|
||||
<div v-if="item.title" class="toast__title">{{ item.title }}</div>
|
||||
<div class="toast__message">{{ item.message }}</div>
|
||||
</div>
|
||||
|
||||
<span
|
||||
v-if="item.duration > 0"
|
||||
class="toast__progress"
|
||||
:style="{ animationDuration: `${item.duration}ms` }"
|
||||
@animationend="emit('close')"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed, ref } from 'vue'
|
||||
import Icon from '../icon/Icon.vue'
|
||||
import type { ToastItem } from '../../composables/useToast'
|
||||
|
||||
defineProps<{ item: ToastItem }>()
|
||||
const emit = defineEmits<{ (e: 'close'): void }>()
|
||||
|
||||
// A drag past either threshold dismisses; anything shorter springs back.
|
||||
const SWIPE_X = 80
|
||||
const SWIPE_UP = 36
|
||||
|
||||
const held = ref(false)
|
||||
const dragging = ref(false)
|
||||
const dx = ref(0)
|
||||
const dy = ref(0)
|
||||
let startX = 0
|
||||
let startY = 0
|
||||
const flung = ref(false)
|
||||
let downAt = 0
|
||||
|
||||
const dragStyle = computed(() => {
|
||||
if (flung.value) {
|
||||
return {
|
||||
transform: `translate(${dx.value}px, ${dy.value}px)`,
|
||||
opacity: '0',
|
||||
transition: 'transform 0.22s ease-in, opacity 0.22s ease-in',
|
||||
}
|
||||
}
|
||||
if (!dragging.value) return undefined
|
||||
// Upward drags follow the finger; downward ones are damped so the card
|
||||
// only stretches a little, like pulling on something anchored at the top.
|
||||
const y = dy.value < 0 ? dy.value : dy.value * 0.25
|
||||
const fade = 1 - Math.min(Math.abs(dx.value) / 220, 0.6)
|
||||
return {
|
||||
transform: `translate(${dx.value}px, ${y}px) rotate(${dx.value * 0.03}deg)`,
|
||||
opacity: String(fade),
|
||||
transition: 'none',
|
||||
}
|
||||
})
|
||||
|
||||
function onDown(e: PointerEvent) {
|
||||
held.value = true
|
||||
startX = e.clientX
|
||||
startY = e.clientY
|
||||
downAt = Date.now()
|
||||
;(e.currentTarget as HTMLElement).setPointerCapture(e.pointerId)
|
||||
}
|
||||
|
||||
function onMove(e: PointerEvent) {
|
||||
if (!held.value) return
|
||||
dx.value = e.clientX - startX
|
||||
dy.value = e.clientY - startY
|
||||
if (!dragging.value && Math.hypot(dx.value, dy.value) > 6) dragging.value = true
|
||||
}
|
||||
|
||||
function onUp() {
|
||||
held.value = false
|
||||
if (!dragging.value) {
|
||||
// A quick tap closes it; a long hold was only pausing it to read.
|
||||
if (Date.now() - downAt < 250) emit('close')
|
||||
return
|
||||
}
|
||||
if (Math.abs(dx.value) > SWIPE_X || dy.value < -SWIPE_UP) {
|
||||
flung.value = true
|
||||
dx.value = Math.abs(dx.value) > SWIPE_X ? Math.sign(dx.value) * window.innerWidth : dx.value
|
||||
dy.value = dy.value < -SWIPE_UP ? -160 : dy.value
|
||||
dragging.value = false
|
||||
setTimeout(() => emit('close'), 200)
|
||||
return
|
||||
}
|
||||
dragging.value = false
|
||||
dx.value = 0
|
||||
dy.value = 0
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.toast {
|
||||
--accent: @wine;
|
||||
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
width: 100%;
|
||||
padding: 10px 10px 12px 14px;
|
||||
border-radius: 20px;
|
||||
overflow: hidden;
|
||||
pointer-events: auto;
|
||||
touch-action: none;
|
||||
cursor: grab;
|
||||
transition: transform 0.45s cubic-bezier(0.2, 1.4, 0.4, 1), opacity 0.3s ease;
|
||||
|
||||
// Same glass recipe as the bottom nav, so the two read as one system.
|
||||
background:
|
||||
radial-gradient(120% 160% at 0% 0%, fade(@canvas, 60%) 0%, fade(@canvas, 0%) 55%),
|
||||
radial-gradient(80% 140% at 100% 100%, fade(@ink, 4%) 0%, fade(@ink, 0%) 60%),
|
||||
linear-gradient(160deg, fade(@canvas, 72%) 0%, fade(@canvas, 50%) 100%);
|
||||
-webkit-backdrop-filter: blur(24px) saturate(200%) brightness(1.05);
|
||||
backdrop-filter: blur(24px) saturate(200%) brightness(1.05);
|
||||
box-shadow:
|
||||
inset 0 1px 1px fade(@canvas, 90%),
|
||||
inset 0 0 0 0.5px fade(@canvas, 40%),
|
||||
0 18px 40px -16px rgba(20, 22, 26, 0.35),
|
||||
0 1px 3px rgba(20, 22, 26, 0.06);
|
||||
|
||||
// Edge light, masked to a 1px ring.
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
padding: 1px;
|
||||
border-radius: inherit;
|
||||
background: linear-gradient(
|
||||
145deg,
|
||||
fade(@canvas, 100%) 0%,
|
||||
fade(@canvas, 30%) 40%,
|
||||
fade(@canvas, 10%) 70%,
|
||||
fade(@canvas, 70%) 100%
|
||||
);
|
||||
-webkit-mask:
|
||||
linear-gradient(#000 0 0) content-box,
|
||||
linear-gradient(#000 0 0);
|
||||
-webkit-mask-composite: xor;
|
||||
mask-composite: exclude;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
&.is-held:not(.is-dragging) {
|
||||
transform: scale(0.98);
|
||||
}
|
||||
|
||||
&.is-dragging {
|
||||
cursor: grabbing;
|
||||
}
|
||||
}
|
||||
|
||||
.toast--success {
|
||||
--accent: @green;
|
||||
}
|
||||
.toast--error {
|
||||
--accent: @red;
|
||||
}
|
||||
.toast--warning {
|
||||
--accent: @secondary;
|
||||
}
|
||||
.toast--info {
|
||||
--accent: @wine;
|
||||
}
|
||||
|
||||
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
|
||||
.toast {
|
||||
background: fade(@canvas, 96%);
|
||||
}
|
||||
}
|
||||
|
||||
// Square rounded tile — the same shape as the nav tiles — tinted by type.
|
||||
.toast__tile {
|
||||
position: relative;
|
||||
flex: 0 0 42px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
border-radius: 14px;
|
||||
color: var(--accent);
|
||||
background: color-mix(in srgb, var(--accent) 12%, transparent);
|
||||
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 16%, transparent);
|
||||
|
||||
:deep(svg) {
|
||||
position: relative;
|
||||
animation: toast-icon-pop 0.6s 0.12s cubic-bezier(0.2, 1.6, 0.4, 1) both;
|
||||
}
|
||||
}
|
||||
|
||||
// A ring that pulses out of the tile once as the toast lands.
|
||||
.toast__ripple {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
border-radius: inherit;
|
||||
border: 2px solid var(--accent);
|
||||
opacity: 0;
|
||||
animation: toast-ripple 0.9s 0.2s ease-out both;
|
||||
}
|
||||
|
||||
.toast--error .toast__tile :deep(svg) {
|
||||
animation:
|
||||
toast-icon-pop 0.6s 0.12s cubic-bezier(0.2, 1.6, 0.4, 1) both,
|
||||
toast-shake 0.45s 0.55s ease-in-out;
|
||||
}
|
||||
|
||||
.toast__body {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.toast__title {
|
||||
margin-bottom: 2px;
|
||||
font-size: 13px;
|
||||
font-weight: 700;
|
||||
line-height: 1.5;
|
||||
color: @ink;
|
||||
}
|
||||
|
||||
.toast__message {
|
||||
font-size: 12.5px;
|
||||
font-weight: 500;
|
||||
line-height: 1.6;
|
||||
color: @inkSoft;
|
||||
}
|
||||
|
||||
// Countdown line along the bottom, draining toward the start side.
|
||||
.toast__progress {
|
||||
position: absolute;
|
||||
right: 14px;
|
||||
left: 14px;
|
||||
bottom: 5px;
|
||||
height: 2.5px;
|
||||
border-radius: 2px;
|
||||
background: var(--accent);
|
||||
opacity: 0.55;
|
||||
transform-origin: right center;
|
||||
animation-name: toast-drain;
|
||||
animation-timing-function: linear;
|
||||
animation-fill-mode: forwards;
|
||||
}
|
||||
|
||||
.toast.is-held .toast__progress {
|
||||
animation-play-state: paused;
|
||||
}
|
||||
|
||||
@keyframes toast-drain {
|
||||
from {
|
||||
transform: scaleX(1);
|
||||
}
|
||||
to {
|
||||
transform: scaleX(0);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes toast-icon-pop {
|
||||
0% {
|
||||
transform: scale(0) rotate(-30deg);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
transform: scale(1) rotate(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes toast-ripple {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
opacity: 0.5;
|
||||
}
|
||||
100% {
|
||||
transform: scale(1.6);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes toast-shake {
|
||||
0%,
|
||||
100% {
|
||||
transform: translateX(0);
|
||||
}
|
||||
20%,
|
||||
60% {
|
||||
transform: translateX(-3px);
|
||||
}
|
||||
40%,
|
||||
80% {
|
||||
transform: translateX(3px);
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.toast__tile :deep(svg),
|
||||
.toast__ripple {
|
||||
animation: none !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,89 @@
|
||||
<!--
|
||||
Renders the shared toast queue (see composables/useToast.ts). Mounted once
|
||||
in App.vue. Toasts drop in from the top with a spring, the stack slides to
|
||||
make room, and a closing toast shrinks up and fades out.
|
||||
-->
|
||||
<template>
|
||||
<Teleport to="body">
|
||||
<div class="toast-host">
|
||||
<TransitionGroup name="toast">
|
||||
<ToastCard v-for="item in toasts" :key="item.id" :item="item" @close="dismiss(item.id)" />
|
||||
</TransitionGroup>
|
||||
</div>
|
||||
</Teleport>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import ToastCard from './ToastCard.vue'
|
||||
import { useToast } from '../../composables/useToast'
|
||||
|
||||
const { toasts, dismiss } = useToast()
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.toast-host {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 3000;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: calc(12px + env(safe-area-inset-top, 0px)) 14px 0;
|
||||
direction: rtl;
|
||||
pointer-events: none;
|
||||
|
||||
> * {
|
||||
max-width: 420px;
|
||||
}
|
||||
}
|
||||
|
||||
// Enter: drop from above, slightly small and blurred, then overshoot into place.
|
||||
.toast-host .toast.toast-enter-active {
|
||||
transition:
|
||||
transform 0.6s cubic-bezier(0.2, 1.35, 0.4, 1),
|
||||
opacity 0.35s ease,
|
||||
filter 0.4s ease;
|
||||
}
|
||||
.toast-host .toast.toast-enter-from {
|
||||
transform: translateY(-120%) scale(0.88);
|
||||
opacity: 0;
|
||||
filter: blur(6px);
|
||||
}
|
||||
|
||||
// Leave: taken out of flow so the stack can glide up behind it.
|
||||
.toast-host .toast.toast-leave-active {
|
||||
position: absolute;
|
||||
left: 14px;
|
||||
right: 14px;
|
||||
margin: 0 auto;
|
||||
transition:
|
||||
transform 0.32s cubic-bezier(0.5, 0, 0.75, 0),
|
||||
opacity 0.28s ease,
|
||||
filter 0.3s ease;
|
||||
}
|
||||
.toast-host .toast.toast-leave-to {
|
||||
transform: translateY(-40%) scale(0.9);
|
||||
opacity: 0;
|
||||
filter: blur(4px);
|
||||
}
|
||||
|
||||
.toast-host .toast.toast-move {
|
||||
transition: transform 0.45s cubic-bezier(0.2, 1.2, 0.4, 1);
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.toast-host .toast.toast-enter-active,
|
||||
.toast-host .toast.toast-leave-active,
|
||||
.toast-host .toast.toast-move {
|
||||
transition: opacity 0.2s ease;
|
||||
}
|
||||
.toast-host .toast.toast-enter-from,
|
||||
.toast-host .toast.toast-leave-to {
|
||||
transform: none;
|
||||
filter: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,72 @@
|
||||
import { reactive } from 'vue'
|
||||
|
||||
/**
|
||||
* App-wide toasts. One shared queue, rendered by <ToastHost> (mounted once in
|
||||
* App.vue), so any view or store can call `toast.success(...)` without placing
|
||||
* a component in its own template.
|
||||
*/
|
||||
|
||||
export type ToastType = 'success' | 'error' | 'info' | 'warning'
|
||||
|
||||
export interface ToastOptions {
|
||||
title?: string
|
||||
/** ms before it closes by itself; 0 keeps it until the user dismisses it. */
|
||||
duration?: number
|
||||
/** Custom icon name; defaults to one per type. */
|
||||
icon?: string
|
||||
}
|
||||
|
||||
export interface ToastItem {
|
||||
id: number
|
||||
type: ToastType
|
||||
message: string
|
||||
title?: string
|
||||
icon: string
|
||||
duration: number
|
||||
}
|
||||
|
||||
const DEFAULT_DURATION = 3200
|
||||
// Older toasts beyond this are dropped so the stack never covers the screen.
|
||||
const MAX_VISIBLE = 3
|
||||
|
||||
const ICONS: Record<ToastType, string> = {
|
||||
success: 'vuesax-linear:tick-circle',
|
||||
error: 'vuesax-linear:close-circle',
|
||||
info: 'vuesax-linear:info-circle',
|
||||
warning: 'vuesax-linear:warning-2',
|
||||
}
|
||||
|
||||
const state = reactive<{ items: ToastItem[] }>({ items: [] })
|
||||
let nextId = 1
|
||||
|
||||
function show(type: ToastType, message: string, options: ToastOptions = {}): number {
|
||||
const id = nextId++
|
||||
state.items.push({
|
||||
id,
|
||||
type,
|
||||
message,
|
||||
title: options.title,
|
||||
icon: options.icon ?? ICONS[type],
|
||||
duration: options.duration ?? DEFAULT_DURATION,
|
||||
})
|
||||
if (state.items.length > MAX_VISIBLE) state.items.splice(0, state.items.length - MAX_VISIBLE)
|
||||
return id
|
||||
}
|
||||
|
||||
function dismiss(id: number) {
|
||||
const i = state.items.findIndex((t) => t.id === id)
|
||||
if (i !== -1) state.items.splice(i, 1)
|
||||
}
|
||||
|
||||
export const toast = {
|
||||
show,
|
||||
dismiss,
|
||||
success: (message: string, options?: ToastOptions) => show('success', message, options),
|
||||
error: (message: string, options?: ToastOptions) => show('error', message, options),
|
||||
info: (message: string, options?: ToastOptions) => show('info', message, options),
|
||||
warning: (message: string, options?: ToastOptions) => show('warning', message, options),
|
||||
}
|
||||
|
||||
export function useToast() {
|
||||
return { toasts: state.items, ...toast }
|
||||
}
|
||||
@@ -101,7 +101,7 @@
|
||||
v-if="cartData.tempRow?.product"
|
||||
:closable="false"
|
||||
height="300px"
|
||||
class="rtl"
|
||||
class="rtl island-sheet"
|
||||
:bodyStyle="{ padding: 0 }"
|
||||
>
|
||||
<div class="sheet">
|
||||
@@ -115,29 +115,25 @@
|
||||
</div>
|
||||
</Drawer>
|
||||
|
||||
<DialogVant :timeOut="-1" v-model:show="cartData.notify" :closeOnClickOverlay="true">
|
||||
<template v-slot:img>
|
||||
<img :src="dialogEmpty4" alt="" class="opacity-70" />
|
||||
</template>
|
||||
<template v-slot:title>آیا مطمئن به ثبت سفارش هستید ؟</template>
|
||||
<template v-slot:button>
|
||||
<div class="text-center text-[#1C2D56]" @click="submitOrder">بله</div>
|
||||
<div class="text-center text-[#6b7280]" @click="cartData.notify = false">بی خیال</div>
|
||||
</template>
|
||||
</DialogVant>
|
||||
<IslandSheet
|
||||
v-model:show="cartData.notify"
|
||||
art="order"
|
||||
title="آیا مطمئن به ثبت سفارش هستید؟"
|
||||
description="پس از ثبت، وضعیت سفارش را می توانید از بخش سفارش ها پیگیری کنید."
|
||||
confirm-text="بله"
|
||||
cancel-text="بی خیال"
|
||||
@confirm="submitOrder"
|
||||
/>
|
||||
|
||||
<DialogVant :timeOut="-1" v-model:show="loginNotify" :closeOnClickOverlay="true">
|
||||
<template v-slot:img>
|
||||
<img :src="loginDialogImage" alt="" class="opacity-80" />
|
||||
</template>
|
||||
<template v-slot:title>
|
||||
<div class="p-8 text-justify">برای ثبت سفارش ابتدا باید وارد حساب کاربری خود شوید.</div>
|
||||
</template>
|
||||
<template v-slot:button>
|
||||
<div class="text-center text-[#1C2D56]" @click="router.push({ name: 'login' })">ورود/ثبت نام</div>
|
||||
<div class="text-center text-danger" @click="loginNotify = false">بیخیال</div>
|
||||
</template>
|
||||
</DialogVant>
|
||||
<IslandSheet
|
||||
v-model:show="loginNotify"
|
||||
art="login"
|
||||
title="برای ثبت سفارش وارد شوید"
|
||||
description="برای ثبت سفارش ابتدا باید وارد حساب کاربری خود شوید. سبد خرید شما حفظ می شود."
|
||||
confirm-text="ورود/ثبت نام"
|
||||
cancel-text="بیخیال"
|
||||
@confirm="router.push({ name: 'login' })"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -146,12 +142,10 @@ import { nextTick, onMounted, reactive, ref } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { Drawer, Form, FormItem, Textarea } from 'ant-design-vue'
|
||||
import { Loading, PullRefresh } from 'vant'
|
||||
import dialogEmpty4 from '../assets/img/empty/dialogEmpty4.svg'
|
||||
import loginDialogImage from '../assets/img/empty/dialogEmpty1.svg'
|
||||
import Icon from '../components/icon/Icon.vue'
|
||||
import PageBar from '../components/ui/PageBar.vue'
|
||||
import Spinner from '../components/Spinner.vue'
|
||||
import DialogVant from '../components/DialogVant.vue'
|
||||
import IslandSheet from '../components/ui/IslandSheet.vue'
|
||||
import CartItem from '../components/product/CartItem.vue'
|
||||
import { useCartStore, type CartItem as CartItemType } from '../stores/cartStore'
|
||||
import { useSessionStore } from '../stores/session'
|
||||
|
||||
@@ -61,30 +61,25 @@
|
||||
</container>
|
||||
</Spinner>
|
||||
|
||||
<DialogVantOneButton
|
||||
<IslandSheet
|
||||
v-model:show="done"
|
||||
:time-out="-1"
|
||||
art="success"
|
||||
title="تکمیل اطلاعات شما با موفقیت انجام شد."
|
||||
description="مدارک شما با موفقیت بارگذاری شد."
|
||||
confirm-text="متوجه شدم"
|
||||
:close-on-click-overlay="false"
|
||||
>
|
||||
<template #title>
|
||||
<div class="cpf__dialogText">
|
||||
تکمیل اطلاعات شما با موفقیت انجام شد.
|
||||
</div>
|
||||
</template>
|
||||
<template #button>
|
||||
<div class="cpf__dialogBtn" @click="finish">متوجه شدم</div>
|
||||
</template>
|
||||
</DialogVantOneButton>
|
||||
@confirm="finish"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { showNotify } from 'vant'
|
||||
import { toast } from '../../composables/useToast'
|
||||
import PageBar from '../../components/ui/PageBar.vue'
|
||||
import Spinner from '../../components/Spinner.vue'
|
||||
import DialogVantOneButton from '../../components/DialogVantOneButton.vue'
|
||||
import IslandSheet from '../../components/ui/IslandSheet.vue'
|
||||
import SingleImageUploader from '../../components/upload/SingleImageUploader.vue'
|
||||
import { api } from '../../api/client'
|
||||
|
||||
@@ -106,7 +101,7 @@ async function submit() {
|
||||
// The reference checked all three client-side before posting
|
||||
// (completeProfile.vue:191-198); the server requires them too.
|
||||
if (!form.business_license_image_id || !form.shop_image_id || !form.ncode_image_id) {
|
||||
showNotify('لطفا تمامی عکس های خواسته شده را آپلود کنید')
|
||||
toast.warning('لطفا تمامی عکس های خواسته شده را آپلود کنید')
|
||||
return
|
||||
}
|
||||
|
||||
@@ -184,16 +179,4 @@ function finish() {
|
||||
opacity: 0.6;
|
||||
cursor: progress;
|
||||
}
|
||||
|
||||
.cpf__dialogText {
|
||||
padding: 20px;
|
||||
line-height: 1.9;
|
||||
text-align: justify;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.cpf__dialogBtn {
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -205,32 +205,25 @@
|
||||
</container>
|
||||
</PullRefresh>
|
||||
|
||||
<DialogVant :timeOut="-1" v-model:show="data.notify" :closeOnClickOverlay="true">
|
||||
<template v-slot:img>
|
||||
<img :src="exitImage" alt="" class="opacity-70 mb-8" />
|
||||
</template>
|
||||
<template v-slot:title>آیا می خواهید از برنامه خارج شوید؟</template>
|
||||
<template v-slot:button>
|
||||
<div class="text-center text-[#1C2D56]" @click="logOut">بله</div>
|
||||
<div class="text-center text-[#6b7280]" @click="data.notify = false">بی خیال</div>
|
||||
</template>
|
||||
</DialogVant>
|
||||
<IslandSheet
|
||||
v-model:show="data.notify"
|
||||
art="logout"
|
||||
title="آیا می خواهید از برنامه خارج شوید؟"
|
||||
description="برای استفاده دوباره از امکانات منتزر، باید دوباره وارد حساب کاربری خود شوید."
|
||||
confirm-text="بله"
|
||||
cancel-text="بی خیال"
|
||||
@confirm="logOut"
|
||||
/>
|
||||
|
||||
<DialogVant :timeOut="-1" v-model:show="data.loginNotify" :closeOnClickOverlay="true">
|
||||
<template v-slot:img>
|
||||
<img :src="loginDialogImage" alt="" class="opacity-80" />
|
||||
</template>
|
||||
<template v-slot:title>
|
||||
<div class="p-8 text-justify">
|
||||
برای دسترسی به تمامی امکانات نرم افزار منتزر، ابتدا گزینه ورود/ثبت نام را لمس کنید و در
|
||||
صورت نداشتن حساب کاربری، ثبت نام نمایید.
|
||||
</div>
|
||||
</template>
|
||||
<template v-slot:button>
|
||||
<div class="text-center text-[#1C2D56]" @click="router.push({ name: 'login' })">ورود/ثبت نام</div>
|
||||
<div class="text-center text-danger" @click="data.loginNotify = false">بیخیال</div>
|
||||
</template>
|
||||
</DialogVant>
|
||||
<IslandSheet
|
||||
v-model:show="data.loginNotify"
|
||||
art="login"
|
||||
title="ابتدا وارد حساب کاربری شوید"
|
||||
description="برای دسترسی به تمامی امکانات نرم افزار منتزر، گزینه ورود/ثبت نام را لمس کنید و در صورت نداشتن حساب کاربری، ثبت نام نمایید."
|
||||
confirm-text="ورود/ثبت نام"
|
||||
cancel-text="بیخیال"
|
||||
@confirm="router.push({ name: 'login' })"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -240,9 +233,7 @@ import { useRouter } from 'vue-router'
|
||||
import { Loading, PullRefresh } from 'vant'
|
||||
import Icon from '../../components/icon/Icon.vue'
|
||||
import RateStrip from '../../components/home/RateStrip.vue'
|
||||
import DialogVant from '../../components/DialogVant.vue'
|
||||
import exitImage from '../../assets/img/empty/dialogEmpty5.svg'
|
||||
import loginDialogImage from '../../assets/img/empty/dialogEmpty1.svg'
|
||||
import IslandSheet from '../../components/ui/IslandSheet.vue'
|
||||
import { price } from '../../utils/filters'
|
||||
import { useSessionStore } from '../../stores/session'
|
||||
import { api, type CustomerDetail, type GoldPriceQuote } from '../../api/client'
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
-->
|
||||
<template>
|
||||
<div class="auth">
|
||||
<NotifyVant :timeOut="2000" v-model="notify.show" :text="notify.text" :color="'background-color: #DC2626'" />
|
||||
|
||||
<PageBar title="ورود" back-to="home" />
|
||||
|
||||
<container class="auth__body">
|
||||
@@ -88,7 +86,7 @@ import { useRoute, useRouter } from 'vue-router'
|
||||
import { Form, FormItem, Input } from 'ant-design-vue'
|
||||
import Icon from '../../components/icon/Icon.vue'
|
||||
import PageBar from '../../components/ui/PageBar.vue'
|
||||
import NotifyVant from '../../components/NotifyVant.vue'
|
||||
import { toast } from '../../composables/useToast'
|
||||
import OtpInput from '../../components/input/OtpInput.vue'
|
||||
import { required, mobile as mobileRule } from '../../utils/validator'
|
||||
import { useSessionStore } from '../../stores/session'
|
||||
@@ -100,7 +98,6 @@ const route = useRoute()
|
||||
const session = useSessionStore()
|
||||
|
||||
const formModel = reactive({ username: undefined as string | undefined })
|
||||
const notify = reactive({ show: false, text: 'اطلاعات کاربری در سیستم وجود ندارد.' })
|
||||
const body = reactive({
|
||||
step: 1,
|
||||
loading: false,
|
||||
@@ -146,8 +143,7 @@ const sendPhone = async () => {
|
||||
// 429 = the send throttle (too soon, or too many in the window). Its message
|
||||
// is already Persian and user-facing, so show it rather than a generic one.
|
||||
const text = e instanceof Error && /\(429\)/.test(e.message) ? extractServerMessage(e) : null
|
||||
notify.text = text ?? 'خطا در ارسال کد. لطفاً دوباره تلاش کنید.'
|
||||
notify.show = true
|
||||
toast.error(text ?? 'خطا در ارسال کد. لطفاً دوباره تلاش کنید.')
|
||||
} finally {
|
||||
body.loading = false
|
||||
}
|
||||
@@ -177,14 +173,13 @@ const sendToken = async (otpCode: string) => {
|
||||
}
|
||||
const redirect = typeof route.query.redirect === 'string' ? route.query.redirect : undefined
|
||||
await router.push(redirect ?? { name: 'home' })
|
||||
notify.text = 'با موفقیت وارد شدید'
|
||||
notify.show = true
|
||||
toast.success('با موفقیت وارد شدید')
|
||||
} catch (e: unknown) {
|
||||
notify.text =
|
||||
toast.error(
|
||||
e instanceof Error && /\(429\)/.test(e.message)
|
||||
? (extractServerMessage(e) ?? 'تعداد تلاشها بیش از حد مجاز است.')
|
||||
: 'کد وارد شده صحیح نیست'
|
||||
notify.show = true
|
||||
: 'کد وارد شده صحیح نیست',
|
||||
)
|
||||
} finally {
|
||||
body.loading = false
|
||||
}
|
||||
|
||||
@@ -1,89 +1,188 @@
|
||||
<!--
|
||||
Ported from legacy henza_pwa/src/views/user/LoginRegister/components/Register.vue,
|
||||
restyled into the redesigned design language (see components/home/* and
|
||||
HomeView).
|
||||
Store sign-up, redesigned as a two-step form:
|
||||
1. اطلاعات شما — first/last name, mobile
|
||||
2. اطلاعات فروشگاه — store name, store phone, city, address
|
||||
followed by an in-page "request received" state.
|
||||
|
||||
DROPPED as confirmed-dead code (verified unreachable, not merely "possibly
|
||||
dead"): legacy rendered a whole cascading country->province->city picker
|
||||
(WorkActionSheet + selectCityArrays + getCities() against POST /cities/list)
|
||||
alongside a plain "شهر" text <Input>. The only element that ever opened the
|
||||
picker (`#citybtn`) was itself commented out in legacy's own template, so the
|
||||
picker was unreachable UI even in the original app; the visible form uses the
|
||||
plain text input. That whole complex, and the parallel unused
|
||||
`userFormModel`/`defaultUserFormModel` objects, are not ported.
|
||||
Why two steps: seven fields in one column read as a wall on a phone. Split
|
||||
by who they describe, each step fits one screen, the progress bar sets the
|
||||
expectation, and the CTA sits in a sticky footer so it is always in reach.
|
||||
|
||||
STUBBED, not real, and unchanged from the previous version: legacy's
|
||||
POST /major/register — apps/api has no create-customer endpoint. Submitting
|
||||
shows legacy's exact success message without persisting anything. The copy
|
||||
says the account awaits review, which is what legacy said too, so the screen
|
||||
does not claim an account exists when none was created.
|
||||
Ant's Form only validates the FormItems currently mounted, so a submit on
|
||||
step 1 validates just step 1's fields; `onFinish` then advances instead of
|
||||
registering. Enter on the keyboard therefore behaves like the CTA.
|
||||
|
||||
Numeric fields are `type="tel"` + `inputmode="numeric"` (a real number input
|
||||
drops the leading 0 and shows spinners), and Persian/Arabic digits are
|
||||
converted to Latin as the user types, so the validators accept them.
|
||||
|
||||
STUBBED, unchanged from before: legacy's POST /major/register has no
|
||||
counterpart in apps/api yet. Submitting shows the "awaiting review" state
|
||||
without persisting anything — the copy says the request is under review,
|
||||
which is what legacy said too, so it does not claim an account exists.
|
||||
-->
|
||||
<template>
|
||||
<div class="auth">
|
||||
<PageBar title="ثبت نام" back-to="home" />
|
||||
<div class="reg">
|
||||
<PageBar title="ثبت نام" :back-action="goBack" />
|
||||
|
||||
<Spinner :spinning="profileData.loading" tip="در حال ثبت اطلاعات">
|
||||
<container class="auth__body">
|
||||
<section class="auth__intro">
|
||||
<div class="auth__mark" aria-hidden="true">
|
||||
<Icon icon="vuesax-linear:user-add" size="28" />
|
||||
</div>
|
||||
<h2 class="auth__title">ساخت حساب کاربری</h2>
|
||||
<p class="auth__sub">اطلاعات فروشگاه خود را وارد کنید</p>
|
||||
</section>
|
||||
|
||||
<section class="auth__card">
|
||||
<Form :model="formModel" layout="vertical" @finish="register" class="auth__form">
|
||||
<FormItem name="fname" label="نام" :rules="required('نام')">
|
||||
<Input v-model:value="formModel.fname" />
|
||||
</FormItem>
|
||||
<FormItem name="lname" label="نام خانوادگی" :rules="required('نام خانوادگی')">
|
||||
<Input v-model:value="formModel.lname" />
|
||||
</FormItem>
|
||||
<FormItem
|
||||
name="mobile"
|
||||
label="شماره موبایل"
|
||||
:rules="[mobileRule('شماره موبایل'), required('شماره موبایل')]"
|
||||
>
|
||||
<Input v-model:value="formModel.mobile" type="number" />
|
||||
</FormItem>
|
||||
<FormItem name="store_name" label="نام فروشگاه" :rules="required('نام فروشگاه')">
|
||||
<Input v-model:value="formModel.store_name" />
|
||||
</FormItem>
|
||||
<FormItem name="phone" label="تلفن فروشگاه" :rules="[required('تلفن فروشگاه')]">
|
||||
<Input v-model:value="formModel.phone" type="number" />
|
||||
</FormItem>
|
||||
<FormItem name="address" label="آدرس پستی" :rules="required('آدرس')">
|
||||
<Textarea v-model:value="formModel.address" :rows="3" />
|
||||
</FormItem>
|
||||
<FormItem name="city" label="شهر" :rules="required('شهر')">
|
||||
<Input v-model:value="formModel.city" />
|
||||
</FormItem>
|
||||
|
||||
<button type="submit" class="auth__cta">ثبت اطلاعات</button>
|
||||
</Form>
|
||||
</section>
|
||||
|
||||
<p class="auth__switch">
|
||||
اگر حساب کاربری دارید
|
||||
<button type="button" @click="emit('register', false)">وارد شوید</button>
|
||||
</p>
|
||||
</container>
|
||||
</Spinner>
|
||||
|
||||
<DialogVant :timeOut="-1" v-model:show="registeredInfo" :closeOnClickOverlay="false">
|
||||
<template v-slot:img>
|
||||
<img :src="registerDelayImage" alt="" class="opacity-80" />
|
||||
</template>
|
||||
<template v-slot:title>
|
||||
<div class="p-5">
|
||||
ثبت نام شما با موفقیت انجام شد. منتظر تایید اطلاعات ثبت نامی شما توسط کارشناسان بمانید.
|
||||
<!-- Success -->
|
||||
<Transition name="reg-fade" mode="out-in">
|
||||
<container v-if="done" key="done" class="reg__body reg__done">
|
||||
<div class="reg__doneMark" aria-hidden="true">
|
||||
<span class="reg__doneRing" />
|
||||
<Icon icon="vuesax-linear:tick-circle" size="40" />
|
||||
</div>
|
||||
</template>
|
||||
<template v-slot:button>
|
||||
<div class="text-center" @click="router.push({ name: 'home' })">متوجه شدم</div>
|
||||
</template>
|
||||
</DialogVant>
|
||||
<h2 class="reg__doneTitle">درخواست شما ثبت شد</h2>
|
||||
<p class="reg__doneText">
|
||||
اطلاعات فروشگاه {{ formModel.store_name }} برای کارشناسان ما ارسال شد. پس از بررسی و تایید، میتوانید با
|
||||
شماره <span class="reg__ltr">{{ formModel.mobile }}</span> وارد شوید.
|
||||
</p>
|
||||
<div class="reg__doneActions">
|
||||
<button type="button" class="reg__cta" @click="router.push({ name: 'home' })">بازگشت به صفحه اصلی</button>
|
||||
<button type="button" class="reg__ghost" @click="emit('register', false)">رفتن به صفحه ورود</button>
|
||||
</div>
|
||||
</container>
|
||||
|
||||
<!-- Form -->
|
||||
<container v-else key="form" class="reg__body">
|
||||
<header class="reg__head">
|
||||
<div class="reg__steps" role="progressbar" :aria-valuenow="step" aria-valuemin="1" aria-valuemax="2">
|
||||
<span class="reg__seg is-on" />
|
||||
<span class="reg__seg" :class="{ 'is-on': step === 2 }" />
|
||||
</div>
|
||||
<p class="reg__stepLabel">مرحله {{ step === 1 ? '۱' : '۲' }} از ۲</p>
|
||||
<h2 class="reg__title">{{ step === 1 ? 'اطلاعات شما' : 'اطلاعات فروشگاه' }}</h2>
|
||||
<p class="reg__sub">
|
||||
{{
|
||||
step === 1
|
||||
? 'برای ساخت حساب فروشگاه، ابتدا خودتان را معرفی کنید.'
|
||||
: 'این اطلاعات برای ارسال سفارش و تایید حساب استفاده میشود.'
|
||||
}}
|
||||
</p>
|
||||
</header>
|
||||
|
||||
<Form ref="formRef" :model="formModel" layout="vertical" class="reg__form" @finish="onFinish">
|
||||
<Transition :name="step === 2 ? 'reg-next' : 'reg-prev'" mode="out-in">
|
||||
<!-- Step 1 -->
|
||||
<div v-if="step === 1" key="s1" class="reg__fields">
|
||||
<div class="reg__row">
|
||||
<FormItem name="fname" label="نام" :rules="[need('نام خود')]">
|
||||
<Input
|
||||
v-model:value="formModel.fname"
|
||||
placeholder="مثلاً علی"
|
||||
autocomplete="given-name"
|
||||
enterkeyhint="next"
|
||||
/>
|
||||
</FormItem>
|
||||
<FormItem name="lname" label="نام خانوادگی" :rules="[need('نام خانوادگی')]">
|
||||
<Input
|
||||
v-model:value="formModel.lname"
|
||||
placeholder="مثلاً محمدی"
|
||||
autocomplete="family-name"
|
||||
enterkeyhint="next"
|
||||
/>
|
||||
</FormItem>
|
||||
</div>
|
||||
|
||||
<FormItem
|
||||
name="mobile"
|
||||
label="شماره موبایل"
|
||||
:rules="[need('شماره موبایل'), { pattern: /^09\d{9}$/, message: 'شماره موبایل باید ۱۱ رقم و با ۰۹ شروع شود' }]"
|
||||
extra="کد ورود به این شماره پیامک میشود."
|
||||
>
|
||||
<Input
|
||||
:value="formModel.mobile"
|
||||
class="reg__num"
|
||||
type="tel"
|
||||
inputmode="numeric"
|
||||
:maxlength="11"
|
||||
placeholder="09123456789"
|
||||
autocomplete="tel"
|
||||
enterkeyhint="next"
|
||||
@update:value="(v: string) => (formModel.mobile = digits(v))"
|
||||
>
|
||||
<template #prefix><Icon icon="vuesax-linear:mobile" size="18" /></template>
|
||||
</Input>
|
||||
</FormItem>
|
||||
</div>
|
||||
|
||||
<!-- Step 2 -->
|
||||
<div v-else key="s2" class="reg__fields">
|
||||
<FormItem name="store_name" label="نام فروشگاه" :rules="[need('نام فروشگاه')]">
|
||||
<Input
|
||||
v-model:value="formModel.store_name"
|
||||
placeholder="مثلاً گالری طلای آفتاب"
|
||||
autocomplete="organization"
|
||||
enterkeyhint="next"
|
||||
>
|
||||
<template #prefix><Icon icon="vuesax-linear:shop" size="18" /></template>
|
||||
</Input>
|
||||
</FormItem>
|
||||
|
||||
<FormItem
|
||||
name="phone"
|
||||
label="تلفن فروشگاه"
|
||||
:rules="[need('تلفن فروشگاه'), { pattern: /^(0\d{10}|\d{8})$/, message: 'تلفن را با کد شهر وارد کنید، مثلاً 02112345678' }]"
|
||||
>
|
||||
<Input
|
||||
:value="formModel.phone"
|
||||
class="reg__num"
|
||||
type="tel"
|
||||
inputmode="numeric"
|
||||
:maxlength="11"
|
||||
placeholder="02112345678"
|
||||
autocomplete="tel-national"
|
||||
enterkeyhint="next"
|
||||
@update:value="(v: string) => (formModel.phone = digits(v))"
|
||||
>
|
||||
<template #prefix><Icon icon="vuesax-linear:call" size="18" /></template>
|
||||
</Input>
|
||||
</FormItem>
|
||||
|
||||
<FormItem name="city" label="شهر" :rules="[need('شهر')]">
|
||||
<Input
|
||||
v-model:value="formModel.city"
|
||||
placeholder="مثلاً تهران"
|
||||
autocomplete="address-level2"
|
||||
enterkeyhint="next"
|
||||
>
|
||||
<template #prefix><Icon icon="vuesax-linear:buildings" size="18" /></template>
|
||||
</Input>
|
||||
</FormItem>
|
||||
|
||||
<FormItem name="address" label="آدرس پستی" :rules="[need('آدرس فروشگاه')]">
|
||||
<Textarea
|
||||
v-model:value="formModel.address"
|
||||
:rows="3"
|
||||
placeholder="خیابان، کوچه، پلاک، واحد"
|
||||
autocomplete="street-address"
|
||||
/>
|
||||
</FormItem>
|
||||
|
||||
<div class="reg__note">
|
||||
<Icon icon="vuesax-linear:shield-tick" size="18" />
|
||||
<span>حساب شما پس از بررسی اطلاعات توسط کارشناسان فعال میشود.</span>
|
||||
</div>
|
||||
</div>
|
||||
</Transition>
|
||||
|
||||
<!-- Sticky action bar; inside the Form so it submits it. -->
|
||||
<footer class="reg__footer">
|
||||
<div class="reg__footerInner">
|
||||
<button type="submit" class="reg__cta" :class="{ 'is-loading': loading }" :disabled="loading">
|
||||
<span v-if="loading" class="reg__spinner" aria-hidden="true" />
|
||||
<span>{{ step === 1 ? 'ادامه' : loading ? 'در حال ثبت…' : 'ثبت درخواست' }}</span>
|
||||
<Icon v-if="step === 1" icon="vuesax-linear:arrow-left" size="18" />
|
||||
</button>
|
||||
<p v-if="step === 1" class="reg__switch">
|
||||
حساب دارید؟
|
||||
<button type="button" @click="emit('register', false)">وارد شوید</button>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
</Form>
|
||||
</container>
|
||||
</Transition>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -91,18 +190,16 @@
|
||||
import { reactive, ref } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { Form, FormItem, Input, Textarea } from 'ant-design-vue'
|
||||
import registerDelayImage from '../../assets/img/registerDelay.svg'
|
||||
import Icon from '../../components/icon/Icon.vue'
|
||||
import PageBar from '../../components/ui/PageBar.vue'
|
||||
import Spinner from '../../components/Spinner.vue'
|
||||
import DialogVant from '../../components/DialogVant.vue'
|
||||
import { required, mobile as mobileRule } from '../../utils/validator'
|
||||
|
||||
const emit = defineEmits<{ (e: 'register', value: boolean): void }>()
|
||||
const router = useRouter()
|
||||
|
||||
const profileData = reactive({ loading: false })
|
||||
const registeredInfo = ref(false)
|
||||
const formRef = ref()
|
||||
const step = ref<1 | 2>(1)
|
||||
const loading = ref(false)
|
||||
const done = ref(false)
|
||||
|
||||
const formModel = reactive({
|
||||
fname: undefined as string | undefined,
|
||||
@@ -110,109 +207,532 @@ const formModel = reactive({
|
||||
mobile: undefined as string | undefined,
|
||||
store_name: undefined as string | undefined,
|
||||
phone: undefined as string | undefined,
|
||||
address: undefined as string | undefined,
|
||||
city: undefined as string | undefined,
|
||||
address: undefined as string | undefined,
|
||||
})
|
||||
|
||||
const register = async () => {
|
||||
const need = (what: string) => ({ required: true, whitespace: true, message: `لطفاً ${what} را وارد کنید` })
|
||||
|
||||
// Persian (۰-۹) and Arabic (٠-٩) digits → Latin, everything else dropped.
|
||||
function digits(v: string): string {
|
||||
return (v ?? '')
|
||||
.replace(/[۰-۹]/g, (d) => String(d.charCodeAt(0) - 0x06f0))
|
||||
.replace(/[٠-٩]/g, (d) => String(d.charCodeAt(0) - 0x0660))
|
||||
.replace(/\D/g, '')
|
||||
}
|
||||
|
||||
function goBack() {
|
||||
if (done.value) router.push({ name: 'home' })
|
||||
else if (step.value === 2) step.value = 1
|
||||
else emit('register', false)
|
||||
}
|
||||
|
||||
async function onFinish() {
|
||||
if (step.value === 1) {
|
||||
step.value = 2
|
||||
window.scrollTo({ top: 0, behavior: 'smooth' })
|
||||
return
|
||||
}
|
||||
try {
|
||||
profileData.loading = true
|
||||
loading.value = true
|
||||
// Stubbed — no create-customer endpoint exists in apps/api yet.
|
||||
registeredInfo.value = true
|
||||
await new Promise((r) => setTimeout(r, 600))
|
||||
done.value = true
|
||||
window.scrollTo({ top: 0 })
|
||||
} finally {
|
||||
profileData.loading = false
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.auth {
|
||||
background: @canvas;
|
||||
.reg {
|
||||
min-height: 100vh;
|
||||
background: @canvas;
|
||||
}
|
||||
|
||||
.auth__body {
|
||||
padding-top: 86px;
|
||||
padding-bottom: 90px;
|
||||
.reg__body {
|
||||
padding-top: 78px;
|
||||
// Room for the sticky footer.
|
||||
padding-bottom: calc(150px + env(safe-area-inset-bottom, 0px));
|
||||
}
|
||||
|
||||
.auth__intro {
|
||||
/* ---------- Header + progress ---------- */
|
||||
|
||||
.reg__head {
|
||||
padding: 6px 2px 22px;
|
||||
}
|
||||
|
||||
.reg__steps {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.reg__seg {
|
||||
position: relative;
|
||||
height: 4px;
|
||||
border-radius: 4px;
|
||||
background: @hairline;
|
||||
overflow: hidden;
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
border-radius: inherit;
|
||||
background: @wine;
|
||||
transform: scaleX(0);
|
||||
transform-origin: right center;
|
||||
transition: transform 0.5s cubic-bezier(0.65, 0, 0.35, 1);
|
||||
}
|
||||
|
||||
&.is-on::after {
|
||||
transform: scaleX(1);
|
||||
}
|
||||
}
|
||||
|
||||
.reg__stepLabel {
|
||||
margin: 14px 0 0;
|
||||
font-size: 11.5px;
|
||||
font-weight: 700;
|
||||
color: @wine;
|
||||
}
|
||||
|
||||
.reg__title {
|
||||
margin: 4px 0 0;
|
||||
font-size: 20px;
|
||||
font-weight: 800;
|
||||
color: @ink;
|
||||
letter-spacing: -0.2px;
|
||||
}
|
||||
|
||||
.reg__sub {
|
||||
margin: 6px 0 0;
|
||||
font-size: 12.5px;
|
||||
line-height: 1.8;
|
||||
color: @inkMuted;
|
||||
}
|
||||
|
||||
/* ---------- Fields ---------- */
|
||||
|
||||
// minmax(0, 1fr): a plain 1fr column won't shrink below its content's
|
||||
// min-width, which pushed the second name field off the screen.
|
||||
.reg__row {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.reg__form {
|
||||
// Force label-above-input. Ant's FormItem is a wrapping flex row, so in a
|
||||
// narrow cell its label and control ended up side by side.
|
||||
:deep(.ant-form-item) {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-wrap: nowrap;
|
||||
min-width: 0;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
:deep(.ant-form-item-label),
|
||||
:deep(.ant-form-item-control) {
|
||||
flex: none;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
min-width: 0;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
:deep(.ant-form-item-label) {
|
||||
padding: 0 0 6px;
|
||||
line-height: 1.5;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
:deep(.ant-form-item-label > label) {
|
||||
height: auto;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
color: @inkSoft;
|
||||
|
||||
// Ant's required asterisk — every field here is required, so it's noise.
|
||||
&::before {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
:deep(.ant-input),
|
||||
:deep(.ant-input-affix-wrapper) {
|
||||
border-radius: 14px;
|
||||
border: 1.5px solid @hairline;
|
||||
background: @canvasSoft;
|
||||
font-family: inherit;
|
||||
font-size: 14px;
|
||||
color: @ink;
|
||||
box-shadow: none;
|
||||
transition: border-color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
|
||||
}
|
||||
|
||||
:deep(.ant-input) {
|
||||
min-height: 50px;
|
||||
padding: 12px 14px;
|
||||
}
|
||||
|
||||
:deep(.ant-input-affix-wrapper) {
|
||||
min-height: 50px;
|
||||
padding: 0 14px;
|
||||
|
||||
.ant-input {
|
||||
min-height: 46px;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
:deep(textarea.ant-input) {
|
||||
min-height: 96px;
|
||||
line-height: 1.8;
|
||||
resize: none;
|
||||
}
|
||||
|
||||
:deep(.ant-input-prefix) {
|
||||
margin-inline-end: 10px;
|
||||
color: @inkFaint;
|
||||
transition: color 0.2s ease;
|
||||
}
|
||||
|
||||
:deep(.ant-input::placeholder) {
|
||||
color: #b4b8c0;
|
||||
}
|
||||
|
||||
:deep(.ant-input:hover),
|
||||
:deep(.ant-input-affix-wrapper:hover) {
|
||||
border-color: darken(@hairline, 8%);
|
||||
}
|
||||
|
||||
:deep(.ant-input:focus),
|
||||
:deep(.ant-input-focused),
|
||||
:deep(.ant-input-affix-wrapper-focused) {
|
||||
border-color: @wine;
|
||||
background: @canvas;
|
||||
box-shadow: 0 0 0 4px fade(@wine, 10%);
|
||||
|
||||
.ant-input-prefix {
|
||||
color: @wine;
|
||||
}
|
||||
}
|
||||
|
||||
:deep(.ant-input-affix-wrapper-focused .ant-input-prefix) {
|
||||
color: @wine;
|
||||
}
|
||||
|
||||
// Errors
|
||||
:deep(.ant-form-item-has-error .ant-input),
|
||||
:deep(.ant-form-item-has-error .ant-input-affix-wrapper) {
|
||||
border-color: @red !important;
|
||||
background: fade(@red, 3%);
|
||||
}
|
||||
|
||||
:deep(.ant-form-item-has-error .ant-input:focus),
|
||||
:deep(.ant-form-item-has-error .ant-input-affix-wrapper-focused) {
|
||||
box-shadow: 0 0 0 4px fade(@red, 10%) !important;
|
||||
}
|
||||
|
||||
:deep(.ant-form-item-has-error .ant-input-affix-wrapper .ant-input) {
|
||||
background: transparent;
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
:deep(.ant-form-item-explain),
|
||||
:deep(.ant-form-item-extra) {
|
||||
min-height: 0;
|
||||
margin-top: 6px;
|
||||
font-size: 11.5px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
:deep(.ant-form-item-extra) {
|
||||
color: @inkFaint;
|
||||
}
|
||||
|
||||
// Ant's own feedback icons duplicate the red border.
|
||||
:deep(.ant-form-item-children-icon) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Numbers are typed left-to-right but stay aligned with the RTL labels.
|
||||
.reg__num :deep(input) {
|
||||
direction: ltr;
|
||||
text-align: right;
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
|
||||
.reg__note {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 10px;
|
||||
margin-top: 4px;
|
||||
padding: 12px 14px;
|
||||
border-radius: 14px;
|
||||
background: @wineWash;
|
||||
color: @wine;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
line-height: 1.8;
|
||||
|
||||
:deep(svg) {
|
||||
flex: 0 0 auto;
|
||||
margin-top: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------- Sticky footer ---------- */
|
||||
|
||||
.reg__footer {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 15;
|
||||
padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px));
|
||||
background: fade(@canvas, 86%);
|
||||
-webkit-backdrop-filter: blur(16px) saturate(180%);
|
||||
backdrop-filter: blur(16px) saturate(180%);
|
||||
border-top: 1px solid @hairline;
|
||||
}
|
||||
|
||||
.reg__footerInner {
|
||||
max-width: 736px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.reg__cta {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 8px;
|
||||
width: 100%;
|
||||
min-height: 52px;
|
||||
padding: 0 18px;
|
||||
border: 0;
|
||||
cursor: pointer;
|
||||
border-radius: 16px;
|
||||
font-family: inherit;
|
||||
font-size: 14px;
|
||||
font-weight: 800;
|
||||
color: #fff;
|
||||
background: @ink;
|
||||
box-shadow: 0 10px 22px -12px fade(@ink, 70%);
|
||||
transition: transform 0.15s ease, opacity 0.2s ease;
|
||||
|
||||
&:active {
|
||||
transform: scale(0.98);
|
||||
}
|
||||
|
||||
&.is-loading,
|
||||
&:disabled {
|
||||
opacity: 0.75;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
:deep(svg) {
|
||||
transition: transform 0.2s ease;
|
||||
}
|
||||
|
||||
&:active :deep(svg) {
|
||||
transform: translateX(-3px);
|
||||
}
|
||||
}
|
||||
|
||||
.reg__spinner {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border-radius: 50%;
|
||||
border: 2px solid fade(#fff, 35%);
|
||||
border-top-color: #fff;
|
||||
animation: reg-spin 0.7s linear infinite;
|
||||
}
|
||||
|
||||
.reg__ghost {
|
||||
width: 100%;
|
||||
min-height: 50px;
|
||||
border: 1.5px solid @hairline;
|
||||
border-radius: 16px;
|
||||
background: @canvas;
|
||||
cursor: pointer;
|
||||
font-family: inherit;
|
||||
font-size: 13.5px;
|
||||
font-weight: 700;
|
||||
color: @ink;
|
||||
}
|
||||
|
||||
.reg__switch {
|
||||
margin: 10px 0 0;
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
color: @inkMuted;
|
||||
|
||||
button {
|
||||
border: 0;
|
||||
background: none;
|
||||
cursor: pointer;
|
||||
padding: 0 3px;
|
||||
font-family: inherit;
|
||||
font-size: 12px;
|
||||
font-weight: 800;
|
||||
color: @wine;
|
||||
}
|
||||
}
|
||||
|
||||
/* ---------- Success ---------- */
|
||||
|
||||
.reg__done {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
padding-bottom: 24px;
|
||||
padding-top: 120px;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
|
||||
.auth__mark {
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
border-radius: 50%;
|
||||
.reg__doneMark {
|
||||
position: relative;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
color: @wine;
|
||||
background: @wineWash;
|
||||
width: 88px;
|
||||
height: 88px;
|
||||
border-radius: 26px;
|
||||
color: @green;
|
||||
background: fade(@green, 10%);
|
||||
animation: reg-pop 0.6s cubic-bezier(0.2, 1.5, 0.4, 1) both;
|
||||
|
||||
:deep(svg) {
|
||||
animation: reg-pop 0.6s 0.15s cubic-bezier(0.2, 1.6, 0.4, 1) both;
|
||||
}
|
||||
}
|
||||
|
||||
.auth__title {
|
||||
margin: 14px 0 0;
|
||||
font-size: 16px;
|
||||
.reg__doneRing {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
border-radius: inherit;
|
||||
border: 2px solid @green;
|
||||
opacity: 0;
|
||||
animation: reg-ring 1.1s 0.3s ease-out both;
|
||||
}
|
||||
|
||||
.reg__doneTitle {
|
||||
margin: 22px 0 0;
|
||||
font-size: 19px;
|
||||
font-weight: 800;
|
||||
color: @ink;
|
||||
}
|
||||
|
||||
.auth__sub {
|
||||
margin: 6px 0 0;
|
||||
font-size: 12.5px;
|
||||
color: @inkFaint;
|
||||
}
|
||||
|
||||
.auth__card {
|
||||
padding: 18px 16px 20px;
|
||||
border: 1px solid @hairline;
|
||||
border-radius: 20px;
|
||||
background: @canvasSoft;
|
||||
}
|
||||
|
||||
.auth__form :deep(.ant-form-item-label > label) {
|
||||
font-size: 12px;
|
||||
color: @inkMuted;
|
||||
}
|
||||
|
||||
.auth__cta {
|
||||
width: 100%;
|
||||
margin-top: 4px;
|
||||
padding: 13px 18px;
|
||||
border: 0;
|
||||
cursor: pointer;
|
||||
border-radius: 14px;
|
||||
font-family: inherit;
|
||||
.reg__doneText {
|
||||
max-width: 320px;
|
||||
margin: 10px 0 0;
|
||||
font-size: 13px;
|
||||
font-weight: 700;
|
||||
color: #fff;
|
||||
background: @ink;
|
||||
transition: transform 0.15s ease;
|
||||
}
|
||||
|
||||
.auth__cta:active {
|
||||
transform: scale(0.99);
|
||||
}
|
||||
|
||||
.auth__switch {
|
||||
margin: 20px 0 0;
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
line-height: 2;
|
||||
color: @inkMuted;
|
||||
}
|
||||
|
||||
.auth__switch button {
|
||||
border: 0;
|
||||
background: none;
|
||||
cursor: pointer;
|
||||
padding: 0 3px;
|
||||
font-family: inherit;
|
||||
font-size: 12px;
|
||||
.reg__ltr {
|
||||
direction: ltr;
|
||||
unicode-bidi: isolate;
|
||||
font-weight: 700;
|
||||
color: @wine;
|
||||
color: @ink;
|
||||
}
|
||||
|
||||
.reg__doneActions {
|
||||
display: grid;
|
||||
gap: 10px;
|
||||
width: 100%;
|
||||
max-width: 360px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
/* ---------- Motion ---------- */
|
||||
|
||||
.reg-next-enter-active,
|
||||
.reg-next-leave-active,
|
||||
.reg-prev-enter-active,
|
||||
.reg-prev-leave-active {
|
||||
transition: transform 0.28s cubic-bezier(0.65, 0, 0.35, 1), opacity 0.22s ease;
|
||||
}
|
||||
|
||||
// RTL: moving forward slides content toward the left.
|
||||
.reg-next-enter-from,
|
||||
.reg-prev-leave-to {
|
||||
transform: translateX(-24px);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.reg-next-leave-to,
|
||||
.reg-prev-enter-from {
|
||||
transform: translateX(24px);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.reg-fade-enter-active,
|
||||
.reg-fade-leave-active {
|
||||
transition: opacity 0.25s ease;
|
||||
}
|
||||
|
||||
.reg-fade-enter-from,
|
||||
.reg-fade-leave-to {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
@keyframes reg-spin {
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes reg-pop {
|
||||
0% {
|
||||
transform: scale(0.4);
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes reg-ring {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
opacity: 0.6;
|
||||
}
|
||||
100% {
|
||||
transform: scale(1.55);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.reg-next-enter-active,
|
||||
.reg-next-leave-active,
|
||||
.reg-prev-enter-active,
|
||||
.reg-prev-leave-active {
|
||||
transition: opacity 0.2s ease;
|
||||
}
|
||||
.reg-next-enter-from,
|
||||
.reg-next-leave-to,
|
||||
.reg-prev-enter-from,
|
||||
.reg-prev-leave-to {
|
||||
transform: none;
|
||||
}
|
||||
.reg__doneMark,
|
||||
.reg__doneMark :deep(svg),
|
||||
.reg__doneRing {
|
||||
animation: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -1 +1 @@
|
||||
.ci[data-v-52807f97]{display:flex;gap:14px;padding:16px;background:#fff;border:1px solid #ECEDEF;border-radius:18px}.ci__art[data-v-52807f97]{flex:0 0 84px;width:84px;height:84px;display:flex;align-items:center;justify-content:center;border-radius:13px;overflow:hidden;background:#f4f5f6}.ci__art img[data-v-52807f97]{width:90px;height:90px;-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center;display:block}.ci__artEmpty[data-v-52807f97]{width:100%;height:100%;display:grid;place-items:center;color:#8a909c}.ci__main[data-v-52807f97]{flex:1;min-width:0}.ci__title[data-v-52807f97]{margin:0;font-size:13px;font-weight:700;color:#14161a;line-height:1.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ci__meta[data-v-52807f97]{display:flex;align-items:center;gap:7px;padding-top:5px}.ci__weight[data-v-52807f97]{font-size:11.5px;font-weight:700;color:#22262e}.ci__wage[data-v-52807f97]{font-size:10.5px;color:#8a909c;padding-inline-start:7px;border-inline-start:1px solid #ECEDEF}.ci__row[data-v-52807f97]{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:10px}.ci__qty[data-v-52807f97]{display:inline-flex;align-items:center;gap:4px;padding:3px;border-radius:999px;background:#f4f5f6;border:1px solid #ECEDEF}.ci__qtyBtn[data-v-52807f97]{width:27px;height:27px;border:0;cursor:pointer;border-radius:50%;display:grid;place-items:center;color:#22262e;background:#fff;transition:transform .15s ease,color .15s ease}.ci__qtyBtn--danger[data-v-52807f97]{color:#7a1b33}.ci__qtyBtn[data-v-52807f97]:active{transform:scale(.9)}.ci__qtyValue[data-v-52807f97]{min-width:22px;text-align:center;font-size:12.5px;font-weight:700;color:#14161a}.ci__note[data-v-52807f97]{display:inline-flex;align-items:center;gap:5px;border:0;background:none;cursor:pointer;padding:0;font-family:inherit;font-size:11.5px;font-weight:700;color:#7a1b33;white-space:nowrap}.ci__noteText[data-v-52807f97]{margin:8px 0 0;padding:8px 10px;border-radius:11px;background:#f4f5f6;font-size:11.5px;line-height:1.7;color:#5b616e}.cart[data-v-1b1ebdf9]{background:#fff;min-height:100vh}.cart__body[data-v-1b1ebdf9]{padding-top:76px;padding-bottom:150px}.cart__items[data-v-1b1ebdf9]{display:flex;flex-direction:column;gap:11px;padding-top:16px}.cart__empty[data-v-1b1ebdf9]{margin-top:8px;padding:38px 20px;border:1px dashed #ECEDEF;border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:#8a909c}.cart__empty p[data-v-1b1ebdf9]{margin:0;font-size:12.5px}.cart__emptyCta[data-v-1b1ebdf9]{margin-top:4px;padding:9px 18px;border:0;cursor:pointer;border-radius:999px;font-family:inherit;font-size:12.5px;font-weight:700;color:#fff;background:#14161a}.cart__done[data-v-1b1ebdf9]{margin-top:20px;padding:34px 22px;border:1px solid #ECEDEF;border-radius:20px;display:flex;flex-direction:column;align-items:center;text-align:center}.cart__doneIcon[data-v-1b1ebdf9]{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;color:#7a1b33;background:#fbf2f4}.cart__doneTitle[data-v-1b1ebdf9]{margin:14px 0 0;font-size:15px;font-weight:800;color:#14161a}.cart__doneSub[data-v-1b1ebdf9]{margin:8px 0 0;font-size:12.5px;color:#5b616e}.cart__doneSub b[data-v-1b1ebdf9]{color:#14161a}.cart__doneHint[data-v-1b1ebdf9]{margin:5px 0 0;font-size:11.5px;color:#8a909c}.cart__doneCta[data-v-1b1ebdf9]{margin-top:18px;padding:11px 22px;border:0;cursor:pointer;border-radius:999px;font-family:inherit;font-size:12.5px;font-weight:700;color:#fff;background:#14161a}.cart__bar[data-v-1b1ebdf9]{position:fixed;bottom:0;left:0;right:0;z-index:5;background:#ffffffeb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid #ECEDEF;padding-bottom:66px}.cart__barInner[data-v-1b1ebdf9]{max-width:768px;margin:0 auto;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:14px}.cart__total[data-v-1b1ebdf9]{display:flex;flex-direction:column;gap:3px}.cart__totalLabel[data-v-1b1ebdf9]{font-size:11px;color:#8a909c}.cart__totalValue[data-v-1b1ebdf9]{font-size:16px;font-weight:800;color:#14161a}.cart__totalValue i[data-v-1b1ebdf9]{font-style:normal;font-size:11px;font-weight:600;color:#8a909c;padding-inline-start:3px}.cart__submit[data-v-1b1ebdf9]{flex:1;max-width:200px;padding:13px 18px;border:0;cursor:pointer;border-radius:14px;font-family:inherit;font-size:13px;font-weight:700;color:#fff;background:#14161a;transition:transform .15s ease}.cart__submit[data-v-1b1ebdf9]:active{transform:scale(.98)}.sheet[data-v-1b1ebdf9]{padding:18px 16px 22px}.sheet__title[data-v-1b1ebdf9]{margin:0 0 14px;font-size:13.5px;font-weight:800;color:#14161a}.sheet__cta[data-v-1b1ebdf9]{width:100%;padding:12px 18px;border:0;cursor:pointer;border-radius:14px;font-family:inherit;font-size:13px;font-weight:700;color:#fff;background:#14161a}
|
||||
.ci[data-v-52807f97]{display:flex;gap:14px;padding:16px;background:#fff;border:1px solid #ECEDEF;border-radius:18px}.ci__art[data-v-52807f97]{flex:0 0 84px;width:84px;height:84px;display:flex;align-items:center;justify-content:center;border-radius:13px;overflow:hidden;background:#f4f5f6}.ci__art img[data-v-52807f97]{width:90px;height:90px;-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center;display:block}.ci__artEmpty[data-v-52807f97]{width:100%;height:100%;display:grid;place-items:center;color:#8a909c}.ci__main[data-v-52807f97]{flex:1;min-width:0}.ci__title[data-v-52807f97]{margin:0;font-size:13px;font-weight:700;color:#14161a;line-height:1.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ci__meta[data-v-52807f97]{display:flex;align-items:center;gap:7px;padding-top:5px}.ci__weight[data-v-52807f97]{font-size:11.5px;font-weight:700;color:#22262e}.ci__wage[data-v-52807f97]{font-size:10.5px;color:#8a909c;padding-inline-start:7px;border-inline-start:1px solid #ECEDEF}.ci__row[data-v-52807f97]{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:10px}.ci__qty[data-v-52807f97]{display:inline-flex;align-items:center;gap:4px;padding:3px;border-radius:999px;background:#f4f5f6;border:1px solid #ECEDEF}.ci__qtyBtn[data-v-52807f97]{width:27px;height:27px;border:0;cursor:pointer;border-radius:50%;display:grid;place-items:center;color:#22262e;background:#fff;transition:transform .15s ease,color .15s ease}.ci__qtyBtn--danger[data-v-52807f97]{color:#7a1b33}.ci__qtyBtn[data-v-52807f97]:active{transform:scale(.9)}.ci__qtyValue[data-v-52807f97]{min-width:22px;text-align:center;font-size:12.5px;font-weight:700;color:#14161a}.ci__note[data-v-52807f97]{display:inline-flex;align-items:center;gap:5px;border:0;background:none;cursor:pointer;padding:0;font-family:inherit;font-size:11.5px;font-weight:700;color:#7a1b33;white-space:nowrap}.ci__noteText[data-v-52807f97]{margin:8px 0 0;padding:8px 10px;border-radius:11px;background:#f4f5f6;font-size:11.5px;line-height:1.7;color:#5b616e}.cart[data-v-cb7a6c16]{background:#fff;min-height:100vh}.cart__body[data-v-cb7a6c16]{padding-top:76px;padding-bottom:150px}.cart__items[data-v-cb7a6c16]{display:flex;flex-direction:column;gap:11px;padding-top:16px}.cart__empty[data-v-cb7a6c16]{margin-top:8px;padding:38px 20px;border:1px dashed #ECEDEF;border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:#8a909c}.cart__empty p[data-v-cb7a6c16]{margin:0;font-size:12.5px}.cart__emptyCta[data-v-cb7a6c16]{margin-top:4px;padding:9px 18px;border:0;cursor:pointer;border-radius:999px;font-family:inherit;font-size:12.5px;font-weight:700;color:#fff;background:#23493c}.cart__done[data-v-cb7a6c16]{margin-top:20px;padding:34px 22px;border:1px solid #ECEDEF;border-radius:20px;display:flex;flex-direction:column;align-items:center;text-align:center}.cart__doneIcon[data-v-cb7a6c16]{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;color:#7a1b33;background:#fbf2f4}.cart__doneTitle[data-v-cb7a6c16]{margin:14px 0 0;font-size:15px;font-weight:800;color:#14161a}.cart__doneSub[data-v-cb7a6c16]{margin:8px 0 0;font-size:12.5px;color:#5b616e}.cart__doneSub b[data-v-cb7a6c16]{color:#14161a}.cart__doneHint[data-v-cb7a6c16]{margin:5px 0 0;font-size:11.5px;color:#8a909c}.cart__doneCta[data-v-cb7a6c16]{margin-top:18px;padding:11px 22px;border:0;cursor:pointer;border-radius:999px;font-family:inherit;font-size:12.5px;font-weight:700;color:#fff;background:#23493c}.cart__bar[data-v-cb7a6c16]{position:fixed;bottom:0;left:0;right:0;z-index:5;background:#ffffffeb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid #ECEDEF;padding-bottom:66px}.cart__barInner[data-v-cb7a6c16]{max-width:768px;margin:0 auto;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:14px}.cart__total[data-v-cb7a6c16]{display:flex;flex-direction:column;gap:3px}.cart__totalLabel[data-v-cb7a6c16]{font-size:11px;color:#8a909c}.cart__totalValue[data-v-cb7a6c16]{font-size:16px;font-weight:800;color:#14161a}.cart__totalValue i[data-v-cb7a6c16]{font-style:normal;font-size:11px;font-weight:600;color:#8a909c;padding-inline-start:3px}.cart__submit[data-v-cb7a6c16]{flex:1;max-width:200px;padding:13px 18px;border:0;cursor:pointer;border-radius:14px;font-family:inherit;font-size:13px;font-weight:700;color:#fff;background:#23493c;transition:transform .15s ease}.cart__submit[data-v-cb7a6c16]:active{transform:scale(.98)}.sheet[data-v-cb7a6c16]{padding:18px 16px 22px}.sheet__title[data-v-cb7a6c16]{margin:0 0 14px;font-size:13.5px;font-weight:800;color:#14161a}.sheet__cta[data-v-cb7a6c16]{width:100%;padding:12px 18px;border:0;cursor:pointer;border-radius:14px;font-family:inherit;font-size:13px;font-weight:700;color:#fff;background:#23493c}
|
||||
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
.cho__barExtra[data-v-a0cb9c46]{padding:0 16px 12px}.cho__body[data-v-a0cb9c46]{padding-top:132px;padding-bottom:90px}.cho__list[data-v-a0cb9c46]{display:flex;flex-direction:column;padding-top:16px;gap:11px}.cho__card[data-v-a0cb9c46]{padding:16px;background:#fff;border:1px solid #ECEDEF;border-radius:18px;cursor:pointer;transition:transform .2s ease}.cho__card[data-v-a0cb9c46]:active{transform:scale(.99)}.cho__top[data-v-a0cb9c46]{display:flex;justify-content:space-between;gap:12px}.cho__right[data-v-a0cb9c46]{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.cho__num[data-v-a0cb9c46]{font-size:15px;font-weight:700;margin-bottom:10px}.cho__muted[data-v-a0cb9c46]{color:#5b616e;font-weight:500;margin-left:4px}.cho__meta[data-v-a0cb9c46]{display:flex;align-items:baseline;gap:4px}.cho__strong[data-v-a0cb9c46]{font-size:15px;font-weight:700}.cho__unit[data-v-a0cb9c46]{font-size:12px;color:#5b616e}.cho__status[data-v-a0cb9c46]{padding:5px 14px;border-radius:8px;font-size:12px;font-weight:600;color:#06b6d4;background:#ecfeff;white-space:nowrap}.cho__divider[data-v-a0cb9c46]{height:1px;background:#ecedef;margin:12px 0}.cho__bottom[data-v-a0cb9c46]{display:flex;justify-content:space-between;align-items:center}.cho__customer[data-v-a0cb9c46]{font-size:14px;font-weight:600;color:#5b616e}.cho__more[data-v-a0cb9c46],.cho__sentinel[data-v-a0cb9c46]{padding:12px 0;text-align:center;font-size:12px;color:#5b616e}.cho__empty[data-v-a0cb9c46]{margin-top:8px;padding:34px 20px;border:1px dashed #ECEDEF;border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:#5b616e;font-size:13px}.cho__retry[data-v-a0cb9c46]{padding:8px 18px;border-radius:999px;border:1px solid #ECEDEF;background:#fff;font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.cho__detail[data-v-a0cb9c46]{padding:20px 16px 24px}.cho__detailTitle[data-v-a0cb9c46]{margin:0 0 16px;font-size:17px;font-weight:700}.cho__rows[data-v-a0cb9c46]{margin:0;display:flex;flex-direction:column;gap:2px}.cho__row[data-v-a0cb9c46]{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;background:#fafafa;border-radius:10px}.cho__row dt[data-v-a0cb9c46]{font-size:13px;color:#5b616e}.cho__row dd[data-v-a0cb9c46]{margin:0;font-size:14px;font-weight:600}.cho__close[data-v-a0cb9c46]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:#23493c;color:#fff;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
|
||||
@@ -1 +0,0 @@
|
||||
.cho__barExtra[data-v-43de2787]{padding:0 16px 12px}.cho__body[data-v-43de2787]{padding-top:132px;padding-bottom:90px}.cho__list[data-v-43de2787]{display:flex;flex-direction:column;padding-top:16px;gap:11px}.cho__card[data-v-43de2787]{padding:16px;background:#fff;border:1px solid #ECEDEF;border-radius:18px;cursor:pointer;transition:transform .2s ease}.cho__card[data-v-43de2787]:active{transform:scale(.99)}.cho__top[data-v-43de2787]{display:flex;justify-content:space-between;gap:12px}.cho__right[data-v-43de2787]{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.cho__num[data-v-43de2787]{font-size:15px;font-weight:700;margin-bottom:10px}.cho__muted[data-v-43de2787]{color:#5b616e;font-weight:500;margin-left:4px}.cho__meta[data-v-43de2787]{display:flex;align-items:baseline;gap:4px}.cho__strong[data-v-43de2787]{font-size:15px;font-weight:700}.cho__unit[data-v-43de2787]{font-size:12px;color:#5b616e}.cho__status[data-v-43de2787]{padding:5px 14px;border-radius:8px;font-size:12px;font-weight:600;color:#06b6d4;background:#ecfeff;white-space:nowrap}.cho__divider[data-v-43de2787]{height:1px;background:#ecedef;margin:12px 0}.cho__bottom[data-v-43de2787]{display:flex;justify-content:space-between;align-items:center}.cho__customer[data-v-43de2787]{font-size:14px;font-weight:600;color:#5b616e}.cho__more[data-v-43de2787],.cho__sentinel[data-v-43de2787]{padding:12px 0;text-align:center;font-size:12px;color:#5b616e}.cho__empty[data-v-43de2787]{margin-top:8px;padding:34px 20px;border:1px dashed #ECEDEF;border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:#5b616e;font-size:13px}.cho__retry[data-v-43de2787]{padding:8px 18px;border-radius:999px;border:1px solid #ECEDEF;background:#fff;font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.cho__detail[data-v-43de2787]{padding:20px 16px 24px}.cho__detailTitle[data-v-43de2787]{margin:0 0 16px;font-size:17px;font-weight:700}.cho__rows[data-v-43de2787]{margin:0;display:flex;flex-direction:column;gap:2px}.cho__row[data-v-43de2787]{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;background:#fafafa;border-radius:10px}.cho__row dt[data-v-43de2787]{font-size:13px;color:#5b616e}.cho__row dd[data-v-43de2787]{margin:0;font-size:14px;font-weight:600}.cho__close[data-v-43de2787]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:#14161a;color:#fff;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
|
||||
@@ -0,0 +1 @@
|
||||
import{d as f,o as v,q as g,c as s,k as e,s as u,g as d,h as p,i as t,F as y,r as k,I as P,b as x,f as C,v as b,K as h,x as B,_ as V}from"./index-CRQPRp-C.js";import{P as w}from"./PageBar-DcURmszD.js";import{a as I}from"./Spinner.vue_vue_type_style_index_0_lang-uVHC4xq0.js";import{S as N}from"./SectionHead-BjbRzluB.js";import{P as q}from"./ProductCard-wJY0AmTh.js";import"./_commonjsHelpers-Cpj98o6Y.js";import"./SingleProduct-DKqhvwd1.js";import"./DialogVant.vue_vue_type_style_index_0_lang-DFKmWR5Z.js";import"./cartStore-CIlq1T4-.js";import"./dialogEmpty1-E3h_JfwQ.js";import"./index-BVow2xBt.js";import"./classCallCheck-CJTmwORh.js";const F={class:"coll"},S={key:0,class:"coll__grid"},z={key:1,class:"coll__empty"},E=f({__name:"CollectionView",setup(H){const l=h(),o=d(!1),n=d([]),m=p(()=>l.query.page||"مجموعه"),c=p(()=>n.value.filter(i=>i.collections.some(a=>a.collectionId===l.params.id)));return v(async()=>{o.value=!0;try{n.value=await g.listProducts()}finally{o.value=!1}}),(i,a)=>{const _=b("container");return t(),s("div",F,[e(w,{title:m.value,"back-to":"search"},null,8,["title"]),e(I,{spinning:o.value,tip:"درحال دریافت اطلاعات"},{default:u(()=>[e(_,{class:"coll__body"},{default:u(()=>[e(N,{title:"محصولات این مجموعه",subtitle:"برای دیدن جزئیات، روی محصول ضربه بزنید"}),c.value.length?(t(),s("div",S,[(t(!0),s(y,null,k(c.value,r=>(t(),B(q,{key:r.id,value:r},null,8,["value"]))),128))])):o.value?C("",!0):(t(),s("section",z,[e(P,{icon:"vuesax-linear:box",size:"26"}),a[0]||(a[0]=x("p",null,"در این مجموعه محصولی ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"])])}}}),Q=V(E,[["__scopeId","data-v-4e05d52b"]]);export{Q as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{d as f,o as v,q as g,c as s,k as e,s as u,g as p,h as m,i as t,F as y,r as k,I as P,b as x,f as C,v as b,K as h,x as B,_ as V}from"./index-BLEa2dU-.js";import{P as w}from"./PageBar-IlBZ6uld.js";import{a as I}from"./Spinner.vue_vue_type_style_index_0_lang-qGBuw_hS.js";import{S as N}from"./SectionHead-BA4SOlK7.js";import{P as q}from"./ProductCard-D-GU5P_U.js";import"./_commonjsHelpers-Cpj98o6Y.js";import"./SingleProduct-8QiMtS5l.js";import"./NotifyVant.vue_vue_type_script_setup_true_lang-1ZprOz0l.js";import"./index-BZfaFJkz.js";import"./DialogVant.vue_vue_type_style_index_0_lang-CV2_T34Y.js";import"./cartStore-DfRVSG0q.js";import"./dialogEmpty1-E3h_JfwQ.js";import"./index-DBmNdnBg.js";import"./classCallCheck-BHfqvuTP.js";const F={class:"coll"},S={key:0,class:"coll__grid"},z={key:1,class:"coll__empty"},E=f({__name:"CollectionView",setup(H){const l=h(),o=p(!1),n=p([]),d=m(()=>l.query.page||"مجموعه"),i=m(()=>n.value.filter(r=>r.collections.some(a=>a.collectionId===l.params.id)));return v(async()=>{o.value=!0;try{n.value=await g.listProducts()}finally{o.value=!1}}),(r,a)=>{const _=b("container");return t(),s("div",F,[e(w,{title:d.value,"back-to":"search"},null,8,["title"]),e(I,{spinning:o.value,tip:"درحال دریافت اطلاعات"},{default:u(()=>[e(_,{class:"coll__body"},{default:u(()=>[e(N,{title:"محصولات این مجموعه",subtitle:"برای دیدن جزئیات، روی محصول ضربه بزنید"}),i.value.length?(t(),s("div",S,[(t(!0),s(y,null,k(i.value,c=>(t(),B(q,{key:c.id,value:c},null,8,["value"]))),128))])):o.value?C("",!0):(t(),s("section",z,[e(P,{icon:"vuesax-linear:box",size:"26"}),a[0]||(a[0]=x("p",null,"در این مجموعه محصولی ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"])])}}}),W=V(E,[["__scopeId","data-v-4e05d52b"]]);export{W as default};
|
||||
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
.siu__input[data-v-6ccc0338]{display:none}.siu__box[data-v-6ccc0338]{position:relative;width:100%;min-height:132px;padding:20px 16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border:1px dashed #ECEDEF;border-radius:18px;background:#fafafa;font-family:inherit;cursor:pointer;overflow:hidden;transition:border-color .2s ease}.siu__box[data-v-6ccc0338]:disabled{cursor:progress}.is-done .siu__box[data-v-6ccc0338]{border-style:solid;border-color:#16a34a}.is-error .siu__box[data-v-6ccc0338]{border-color:#dc2626}.siu__preview[data-v-6ccc0338]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;opacity:.32}.siu__icon[data-v-6ccc0338],.siu__text[data-v-6ccc0338]{position:relative;z-index:1}.siu__text[data-v-6ccc0338]{font-size:13px;font-weight:600;color:#5b616e}.siu__badge[data-v-6ccc0338]{position:absolute;top:10px;left:10px;z-index:1;display:flex;color:#16a34a}.siu__error[data-v-6ccc0338]{margin:7px 2px 0;font-size:12px;color:#dc2626}.cpf__body[data-v-3d5482f8]{padding-top:90px;padding-bottom:40px}.cpf__lead[data-v-3d5482f8]{margin:4px 0 18px;font-size:13px;color:#5b616e}.cpf__form[data-v-3d5482f8]{display:flex;flex-direction:column;gap:14px}.cpf__error[data-v-3d5482f8]{margin:2px;font-size:12.5px;color:#dc2626}.cpf__submit[data-v-3d5482f8]{margin-top:6px;width:100%;padding:14px;border:none;border-radius:14px;background:#14161a;color:#fff;font-family:inherit;font-size:15px;font-weight:700;cursor:pointer}.cpf__submit[data-v-3d5482f8]:disabled{opacity:.6;cursor:progress}.cpf__dialogText[data-v-3d5482f8]{padding:20px;line-height:1.9;text-align:justify;font-size:14px}.cpf__dialogBtn[data-v-3d5482f8]{text-align:center;cursor:pointer}
|
||||
.siu__input[data-v-6ccc0338]{display:none}.siu__box[data-v-6ccc0338]{position:relative;width:100%;min-height:132px;padding:20px 16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border:1px dashed #ECEDEF;border-radius:18px;background:#fafafa;font-family:inherit;cursor:pointer;overflow:hidden;transition:border-color .2s ease}.siu__box[data-v-6ccc0338]:disabled{cursor:progress}.is-done .siu__box[data-v-6ccc0338]{border-style:solid;border-color:#16a34a}.is-error .siu__box[data-v-6ccc0338]{border-color:#dc2626}.siu__preview[data-v-6ccc0338]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;opacity:.32}.siu__icon[data-v-6ccc0338],.siu__text[data-v-6ccc0338]{position:relative;z-index:1}.siu__text[data-v-6ccc0338]{font-size:13px;font-weight:600;color:#5b616e}.siu__badge[data-v-6ccc0338]{position:absolute;top:10px;left:10px;z-index:1;display:flex;color:#16a34a}.siu__error[data-v-6ccc0338]{margin:7px 2px 0;font-size:12px;color:#dc2626}.cpf__body[data-v-95ead48e]{padding-top:90px;padding-bottom:40px}.cpf__lead[data-v-95ead48e]{margin:4px 0 18px;font-size:13px;color:#5b616e}.cpf__form[data-v-95ead48e]{display:flex;flex-direction:column;gap:14px}.cpf__error[data-v-95ead48e]{margin:2px;font-size:12.5px;color:#dc2626}.cpf__submit[data-v-95ead48e]{margin-top:6px;width:100%;padding:14px;border:none;border-radius:14px;background:#23493c;color:#fff;font-family:inherit;font-size:15px;font-weight:700;cursor:pointer}.cpf__submit[data-v-95ead48e]:disabled{opacity:.6;cursor:progress}.cpf__dialogText[data-v-95ead48e]{padding:20px;line-height:1.9;text-align:justify;font-size:14px}.cpf__dialogBtn[data-v-95ead48e]{text-align:center;cursor:pointer}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user