feat: accounting integration (D27), SMS relay driver (D26), rebuild user apps

- Add Tahesab/Zarrin accounting sync module with admin panel UI
- Add SMS relay driver as default provider, refactor SMS into driver pattern
- Update customer services, orders, products, and catalog queries
- Rebuild user-app and user-app-v2 dist assets
- Add Prisma migration for accounting tables
- Update docker-compose and env examples
- Update parity docs (DECISIONS, ISSUES, PROGRESS)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
s.esmaeili
2026-10-06 16:48:36 +03:30
co-authored by Claude Opus 4.6
parent a72fa607a5
commit 19d490e790
179 changed files with 12538 additions and 370 deletions
@@ -1 +1 @@
import{d,f as i,c as _,i as r,b as e,_ as h,u as v,p as o,z as b,B as k,F as f,r as w,m as n,t as u,e as x,I as c,N as g}from"./index-BWyw3RAx.js";import{P as y}from"./PageBar-D5DXU6sO.js";const C=d({__name:"ToggleSwitch",props:{on:{type:Boolean}},setup(p){return(a,l)=>(i(),_("span",{class:r(["tsw",{"is-on":p.on}]),"aria-hidden":"true"},[...l[0]||(l[0]=[e("span",{class:"tsw__knob"},null,-1)])],2))}}),B=h(C,[["__scopeId","data-v-3f7a6b1f"]]),T={class:"ap"},S={class:"ap__section"},V={class:"ap__themes",role:"radiogroup","aria-labelledby":"ap-theme"},z=["aria-checked","onClick"],I={class:"ap__themeLabel"},L={class:"ap__check","aria-hidden":"true"},M={key:0,class:"ap__note"},N={class:"ap__section"},$=["aria-checked"],A={class:"ap__rowIcon","aria-hidden":"true"},E=d({__name:"AppearanceView",setup(p){const a=v(),l=[{value:"light",label:"روشن",icon:"vuesax-linear:sun-1"},{value:"dark",label:"تیره",icon:"vuesax-linear:moon"},{value:"system",label:"مطابق سیستم",icon:"vuesax-linear:monitor-mobbile"}];return(P,s)=>{const m=k("container");return i(),_("div",T,[o(y,{title:"تنظیمات ظاهری","back-to":"userPage::hasSubRoute"}),o(m,{class:"ap__body"},{default:b(()=>[e("section",S,[s[2]||(s[2]=e("header",{class:"ap__head"},[e("h2",{id:"ap-theme",class:"ap__title"},"پوسته برنامه"),e("p",{class:"ap__sub"},"ظاهر روشن یا تیره، یا هماهنگ با تنظیمات گوشی شما")],-1)),e("div",V,[(i(),_(f,null,w(l,t=>e("button",{key:t.value,type:"button",role:"radio",class:r(["ap__theme",{"is-on":n(a).theme===t.value}]),"aria-checked":n(a).theme===t.value,onClick:F=>n(a).setTheme(t.value)},[e("span",{class:r(["ap__preview",`ap__preview--${t.value}`]),"aria-hidden":"true"},[...s[1]||(s[1]=[e("span",{class:"ap__pvBar"},null,-1),e("span",{class:"ap__pvCard"},null,-1),e("span",{class:"ap__pvLine"},null,-1),e("span",{class:"ap__pvLine ap__pvLine--short"},null,-1),e("span",{class:"ap__pvBtn"},null,-1)])],2),e("span",I,[o(c,{icon:t.icon,size:"15"},null,8,["icon"]),g(" "+u(t.label),1)]),e("span",L,[o(c,{icon:"vuesax-linear:tick-circle",size:"18"})])],10,z)),64))]),n(a).theme==="system"?(i(),_("p",M," الان "+u(n(a).resolvedTheme==="dark"?"تیره":"روشن")+" است، مطابق تنظیمات گوشی. ",1)):x("",!0)]),e("section",N,[s[4]||(s[4]=e("header",{class:"ap__head"},[e("h2",{class:"ap__title"},"انیمیشن‌ها"),e("p",{class:"ap__sub"},"برای سرعت بیشتر روی گوشی‌های ضعیف‌تر")],-1)),e("button",{type:"button",role:"switch",class:"ap__row","aria-checked":n(a).reduceMotion,onClick:s[0]||(s[0]=t=>n(a).setReduceMotion(!n(a).reduceMotion))},[e("span",A,[o(c,{icon:"vuesax-linear:flash",size:"18"})]),s[3]||(s[3]=e("span",{class:"ap__rowText"},[e("b",null,"حالت سبک و سریع"),e("small",null," حرکت‌های سنگین، افکت‌های شیشه‌ای و اسلاید خودکار خاموش می‌شوند؛ بازخورد کوتاه لمس‌ها و جابه‌جایی‌های سریع باقی می‌مانند تا برنامه خشک و بی‌روح نشود. ")],-1)),o(B,{on:n(a).reduceMotion},null,8,["on"])],8,$)])]),_:1})])}}}),H=h(E,[["__scopeId","data-v-d05eb581"]]);export{H as default};
import{d,f as i,c as _,i as r,b as e,_ as h,u as v,p as o,z as b,B as k,F as f,r as w,m as n,t as u,e as x,I as c,N as g}from"./index-Dp9sxvBv.js";import{P as y}from"./PageBar-El-laHqK.js";const C=d({__name:"ToggleSwitch",props:{on:{type:Boolean}},setup(p){return(a,l)=>(i(),_("span",{class:r(["tsw",{"is-on":p.on}]),"aria-hidden":"true"},[...l[0]||(l[0]=[e("span",{class:"tsw__knob"},null,-1)])],2))}}),B=h(C,[["__scopeId","data-v-3f7a6b1f"]]),T={class:"ap"},S={class:"ap__section"},V={class:"ap__themes",role:"radiogroup","aria-labelledby":"ap-theme"},z=["aria-checked","onClick"],I={class:"ap__themeLabel"},L={class:"ap__check","aria-hidden":"true"},M={key:0,class:"ap__note"},N={class:"ap__section"},$=["aria-checked"],A={class:"ap__rowIcon","aria-hidden":"true"},E=d({__name:"AppearanceView",setup(p){const a=v(),l=[{value:"light",label:"روشن",icon:"vuesax-linear:sun-1"},{value:"dark",label:"تیره",icon:"vuesax-linear:moon"},{value:"system",label:"مطابق سیستم",icon:"vuesax-linear:monitor-mobbile"}];return(P,s)=>{const m=k("container");return i(),_("div",T,[o(y,{title:"تنظیمات ظاهری","back-to":"userPage::hasSubRoute"}),o(m,{class:"ap__body"},{default:b(()=>[e("section",S,[s[2]||(s[2]=e("header",{class:"ap__head"},[e("h2",{id:"ap-theme",class:"ap__title"},"پوسته برنامه"),e("p",{class:"ap__sub"},"ظاهر روشن یا تیره، یا هماهنگ با تنظیمات گوشی شما")],-1)),e("div",V,[(i(),_(f,null,w(l,t=>e("button",{key:t.value,type:"button",role:"radio",class:r(["ap__theme",{"is-on":n(a).theme===t.value}]),"aria-checked":n(a).theme===t.value,onClick:F=>n(a).setTheme(t.value)},[e("span",{class:r(["ap__preview",`ap__preview--${t.value}`]),"aria-hidden":"true"},[...s[1]||(s[1]=[e("span",{class:"ap__pvBar"},null,-1),e("span",{class:"ap__pvCard"},null,-1),e("span",{class:"ap__pvLine"},null,-1),e("span",{class:"ap__pvLine ap__pvLine--short"},null,-1),e("span",{class:"ap__pvBtn"},null,-1)])],2),e("span",I,[o(c,{icon:t.icon,size:"15"},null,8,["icon"]),g(" "+u(t.label),1)]),e("span",L,[o(c,{icon:"vuesax-linear:tick-circle",size:"18"})])],10,z)),64))]),n(a).theme==="system"?(i(),_("p",M," الان "+u(n(a).resolvedTheme==="dark"?"تیره":"روشن")+" است، مطابق تنظیمات گوشی. ",1)):x("",!0)]),e("section",N,[s[4]||(s[4]=e("header",{class:"ap__head"},[e("h2",{class:"ap__title"},"انیمیشن‌ها"),e("p",{class:"ap__sub"},"برای سرعت بیشتر روی گوشی‌های ضعیف‌تر")],-1)),e("button",{type:"button",role:"switch",class:"ap__row","aria-checked":n(a).reduceMotion,onClick:s[0]||(s[0]=t=>n(a).setReduceMotion(!n(a).reduceMotion))},[e("span",A,[o(c,{icon:"vuesax-linear:flash",size:"18"})]),s[3]||(s[3]=e("span",{class:"ap__rowText"},[e("b",null,"حالت سبک و سریع"),e("small",null," حرکت‌های سنگین، افکت‌های شیشه‌ای و اسلاید خودکار خاموش می‌شوند؛ بازخورد کوتاه لمس‌ها و جابه‌جایی‌های سریع باقی می‌مانند تا برنامه خشک و بی‌روح نشود. ")],-1)),o(B,{on:n(a).reduceMotion},null,8,["on"])],8,$)])]),_:1})])}}}),H=h(E,[["__scopeId","data-v-d05eb581"]]);export{H as default};
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 @@
.cho__barExtra[data-v-24fb71cb]{padding:0 16px 12px}.cho__body[data-v-24fb71cb]{padding-top:132px;padding-bottom:90px}.cho__list[data-v-24fb71cb]{display:flex;flex-direction:column;padding-top:8px}.cho__card[data-v-24fb71cb]{padding:18px 2px;background:transparent;border:none;border-bottom:1px solid var(--c-hairline);cursor:pointer}.cho__card[data-v-24fb71cb]:last-child{border-bottom:none}.cho__card[data-v-24fb71cb]:active{opacity:.75}.cho__top[data-v-24fb71cb]{display:flex;justify-content:space-between;gap:12px}.cho__right[data-v-24fb71cb]{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.cho__num[data-v-24fb71cb]{font-size:15px;font-weight:700;margin-bottom:10px}.cho__muted[data-v-24fb71cb]{color:var(--c-inkFaint);font-weight:500;margin-left:4px}.cho__meta[data-v-24fb71cb]{display:flex;align-items:baseline;gap:4px}.cho__strong[data-v-24fb71cb]{font-size:15px;font-weight:700}.cho__unit[data-v-24fb71cb]{font-size:12px;color:var(--c-inkFaint)}.cho__status[data-v-24fb71cb]{padding:5px 14px;border-radius:999px;font-size:11.5px;font-weight:600;color:#06b6d4;background:#06b6d41f;white-space:nowrap}.cho__divider[data-v-24fb71cb]{height:10px}.cho__bottom[data-v-24fb71cb]{display:flex;justify-content:space-between;align-items:center}.cho__customer[data-v-24fb71cb]{font-size:13.5px;font-weight:600;color:var(--c-inkMuted)}.cho__more[data-v-24fb71cb],.cho__sentinel[data-v-24fb71cb]{padding:12px 0;text-align:center;font-size:12px;color:var(--c-inkFaint)}.cho__empty[data-v-24fb71cb]{margin-top:8px;padding:34px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkFaint)}.cho__empty p[data-v-24fb71cb]{margin:0;font-size:12.5px}.cho__retry[data-v-24fb71cb]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.cho__detail[data-v-24fb71cb]{padding:20px 16px 24px}.cho__detailTitle[data-v-24fb71cb]{margin:0 0 16px;font-size:17px;font-weight:700}.cho__rows[data-v-24fb71cb]{margin:0;display:flex;flex-direction:column}.cho__row[data-v-24fb71cb]{display:flex;justify-content:space-between;align-items:center;padding:13px 2px;border-bottom:1px solid var(--c-hairline)}.cho__row[data-v-24fb71cb]:last-child{border-bottom:none}.cho__row dt[data-v-24fb71cb]{font-size:13px;color:var(--c-inkFaint)}.cho__row dd[data-v-24fb71cb]{margin:0;font-size:14px;font-weight:600}.cho__close[data-v-24fb71cb]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:var(--c-ink);color:var(--c-onInk);font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
.cho__barExtra[data-v-83f2fdbb]{padding:0 16px 12px}.cho__body[data-v-83f2fdbb]{padding-top:132px;padding-bottom:90px}.cho__list[data-v-83f2fdbb]{display:flex;flex-direction:column;padding-top:8px}.cho__card[data-v-83f2fdbb]{padding:18px 2px;background:transparent;border:none;border-bottom:1px solid var(--c-hairline);cursor:pointer}.cho__card[data-v-83f2fdbb]:last-child{border-bottom:none}.cho__card[data-v-83f2fdbb]:active{opacity:.75}.cho__top[data-v-83f2fdbb]{display:flex;justify-content:space-between;gap:12px}.cho__right[data-v-83f2fdbb]{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.cho__num[data-v-83f2fdbb]{font-size:15px;font-weight:700;margin-bottom:10px}.cho__muted[data-v-83f2fdbb]{color:var(--c-inkFaint);font-weight:500;margin-left:4px}.cho__meta[data-v-83f2fdbb]{display:flex;align-items:baseline;gap:4px}.cho__strong[data-v-83f2fdbb]{font-size:15px;font-weight:700}.cho__unit[data-v-83f2fdbb]{font-size:12px;color:var(--c-inkFaint)}.cho__status[data-v-83f2fdbb]{padding:5px 14px;border-radius:999px;font-size:11.5px;font-weight:600;color:#06b6d4;background:#06b6d41f;white-space:nowrap}.cho__divider[data-v-83f2fdbb]{height:10px}.cho__bottom[data-v-83f2fdbb]{display:flex;justify-content:space-between;align-items:center}.cho__customer[data-v-83f2fdbb]{font-size:13.5px;font-weight:600;color:var(--c-inkMuted)}.cho__more[data-v-83f2fdbb],.cho__sentinel[data-v-83f2fdbb]{padding:12px 0;text-align:center;font-size:12px;color:var(--c-inkFaint)}.cho__empty[data-v-83f2fdbb]{margin-top:8px;padding:34px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkFaint)}.cho__empty p[data-v-83f2fdbb]{margin:0;font-size:12.5px}.cho__retry[data-v-83f2fdbb]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.cho__detail[data-v-83f2fdbb]{padding:20px 16px 24px}.cho__detailTitle[data-v-83f2fdbb]{margin:0 0 16px;font-size:17px;font-weight:700}.cho__rows[data-v-83f2fdbb]{margin:0;display:flex;flex-direction:column}.cho__row[data-v-83f2fdbb]{display:flex;justify-content:space-between;align-items:center;padding:13px 2px;border-bottom:1px solid var(--c-hairline)}.cho__row[data-v-83f2fdbb]:last-child{border-bottom:none}.cho__row dt[data-v-83f2fdbb]{font-size:13px;color:var(--c-inkFaint)}.cho__row dd[data-v-83f2fdbb]{margin:0;font-size:14px;font-weight:600}.cho__close[data-v-83f2fdbb]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:var(--c-ink);color:var(--c-onInk);font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{d as f,o as v,s as g,c as s,p as e,z as u,J as y,g as d,h as _,f as t,F as P,r as k,I as C,b as h,e as x,B,S as b,j as V,_ as w}from"./index-BWyw3RAx.js";import{P as I}from"./PageBar-D5DXU6sO.js";import{S as N}from"./SectionHead-BiCEpXAe.js";import{P as S}from"./ProductCard-nL92ZIkB.js";const z={class:"coll"},F={key:0,class:"coll__grid"},j={key:1,class:"coll__empty"},q=f({__name:"CollectionView",setup(E){const l=b(),o=d(!1),n=d([]),p=_(()=>l.query.page||"مجموعه"),c=_(()=>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 m=B("container");return t(),s("div",z,[e(I,{title:p.value,"back-to":"search"},null,8,["title"]),e(y,{spinning:o.value,tip:"درحال دریافت اطلاعات"},{default:u(()=>[e(m,{class:"coll__body"},{default:u(()=>[e(N,{title:"محصولات این مجموعه",subtitle:"برای دیدن جزئیات، روی محصول ضربه بزنید"}),c.value.length?(t(),s("div",F,[(t(!0),s(P,null,k(c.value,r=>(t(),V(S,{key:r.id,value:r},null,8,["value"]))),128))])):o.value?x("",!0):(t(),s("section",j,[e(C,{icon:"vuesax-linear:box",size:"26"}),a[0]||(a[0]=h("p",null,"در این مجموعه محصولی ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"])])}}}),R=w(q,[["__scopeId","data-v-7e172d86"]]);export{R as default};
import{d as f,o as v,s as g,c as s,p as e,z as u,J as y,g as d,h as _,f as t,F as P,r as k,I as C,b as h,e as x,B,S as b,j as V,_ as w}from"./index-Dp9sxvBv.js";import{P as I}from"./PageBar-El-laHqK.js";import{S as N}from"./SectionHead-DNG9ywW4.js";import{P as S}from"./ProductCard-CvKEozHI.js";const z={class:"coll"},F={key:0,class:"coll__grid"},j={key:1,class:"coll__empty"},q=f({__name:"CollectionView",setup(E){const l=b(),o=d(!1),n=d([]),p=_(()=>l.query.page||"مجموعه"),c=_(()=>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 m=B("container");return t(),s("div",z,[e(I,{title:p.value,"back-to":"search"},null,8,["title"]),e(y,{spinning:o.value,tip:"درحال دریافت اطلاعات"},{default:u(()=>[e(m,{class:"coll__body"},{default:u(()=>[e(N,{title:"محصولات این مجموعه",subtitle:"برای دیدن جزئیات، روی محصول ضربه بزنید"}),c.value.length?(t(),s("div",F,[(t(!0),s(P,null,k(c.value,r=>(t(),V(S,{key:r.id,value:r},null,8,["value"]))),128))])):o.value?x("",!0):(t(),s("section",j,[e(C,{icon:"vuesax-linear:box",size:"26"}),a[0]||(a[0]=h("p",null,"در این مجموعه محصولی ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"])])}}}),R=w(q,[["__scopeId","data-v-7e172d86"]]);export{R as default};
@@ -1 +1 @@
import{d as B,f as r,c,i as $,b as d,p as n,I as w,t as h,e as x,g as o,s as P,_ as I,z as C,J as S,P as U,aN as z,K as D,B as V,C as N,U as R}from"./index-BWyw3RAx.js";import{P as T}from"./PageBar-D5DXU6sO.js";const j=["disabled"],E=["src"],L={key:1,class:"siu__icon"},M={class:"siu__text"},A={key:2,class:"siu__badge"},J={key:0,class:"siu__error"},K=8*1024*1024,O=B({__name:"SingleImageUploader",props:{uploadText:{},purpose:{}},emits:["done"],setup(g,{emit:b}){const a=g,_=b,l=o(null),i=o(!1),t=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(t.value=null,p.size>K){t.value="حجم فایل بیش از حد مجاز است (۸ مگابایت)";return}i.value=!0;try{const k=await P.uploadDocument(p,a.purpose);u.value=k.id,m.value=p.type.startsWith("image/")?URL.createObjectURL(p):null,_("done",k.id)}catch{t.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":!!t.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,E)):(r(),c("span",L,[n(w,{icon:i.value?"vuesax-linear:refresh":"vuesax-linear:gallery-add",size:"26"},null,8,["icon"])])),d("span",M,h(i.value?"در حال بارگذاری…":u.value?"تغییر تصویر":g.uploadText),1),u.value&&!i.value?(r(),c("span",A,[n(w,{icon:"vuesax-linear:tick-circle",size:"16"})])):x("",!0)],8,j),t.value?(r(),c("p",J,h(t.value),1)):x("",!0)],2))}}),y=I(O,[["__scopeId","data-v-3a42e270"]]),W={class:"cpf"},X={key:0,class:"cpf__error"},Y=["disabled"],q=B({__name:"CompleteProfileView",setup(g){const b=N(),a=D({business_license_image_id:null,shop_image_id:null,ncode_image_id:null}),_=o(!1),l=o(!1),i=o(null);async function t(){if(i.value=null,!a.business_license_image_id||!a.shop_image_id||!a.ncode_image_id){R.warning("لطفا تمامی عکس های خواسته شده را آپلود کنید");return}_.value=!0;try{await P.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",W,[n(T,{title:"تکمیل پروفایل","back-to":"userPage::hasSubRoute"}),n(S,{spinning:_.value,tip:"در حال ثبت اطلاعات"},{default:C(()=>[n(v,{class:"cpf__body"},{default:C(()=>[s[4]||(s[4]=d("p",{class:"cpf__lead"}," برای تکمیل پروفایل، سه مدرک زیر را بارگذاری کنید. ",-1)),d("form",{class:"cpf__form",onSubmit:z(t,["prevent"])},[n(y,{"upload-text":"بارگذاری عکس جواز کسب",purpose:"business-license",onDone:s[0]||(s[0]=e=>a.business_license_image_id=e)}),n(y,{"upload-text":"بارگذاری عکس سردر مغازه",purpose:"shop-image",onDone:s[1]||(s[1]=e=>a.shop_image_id=e)}),n(y,{"upload-text":"بارگذاری عکس کارت ملی",purpose:"national-card",onDone:s[2]||(s[2]=e=>a.ncode_image_id=e)}),i.value?(r(),c("p",X,h(i.value),1)):x("",!0),d("button",{type:"submit",class:"cpf__submit",disabled:_.value}," بارگذاری اطلاعات ",8,Y)],32)]),_:1})]),_:1},8,["spinning"]),n(U,{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"])])}}}),H=I(q,[["__scopeId","data-v-630e0720"]]);export{H as default};
import{d as B,f as r,c,i as $,b as d,p as n,I as w,t as h,e as x,g as o,s as P,_ as I,z as C,J as S,P as U,aN as z,K as D,B as V,C as N,U as R}from"./index-Dp9sxvBv.js";import{P as T}from"./PageBar-El-laHqK.js";const j=["disabled"],E=["src"],L={key:1,class:"siu__icon"},M={class:"siu__text"},A={key:2,class:"siu__badge"},J={key:0,class:"siu__error"},K=8*1024*1024,O=B({__name:"SingleImageUploader",props:{uploadText:{},purpose:{}},emits:["done"],setup(g,{emit:b}){const a=g,_=b,l=o(null),i=o(!1),t=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(t.value=null,p.size>K){t.value="حجم فایل بیش از حد مجاز است (۸ مگابایت)";return}i.value=!0;try{const k=await P.uploadDocument(p,a.purpose);u.value=k.id,m.value=p.type.startsWith("image/")?URL.createObjectURL(p):null,_("done",k.id)}catch{t.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":!!t.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,E)):(r(),c("span",L,[n(w,{icon:i.value?"vuesax-linear:refresh":"vuesax-linear:gallery-add",size:"26"},null,8,["icon"])])),d("span",M,h(i.value?"در حال بارگذاری…":u.value?"تغییر تصویر":g.uploadText),1),u.value&&!i.value?(r(),c("span",A,[n(w,{icon:"vuesax-linear:tick-circle",size:"16"})])):x("",!0)],8,j),t.value?(r(),c("p",J,h(t.value),1)):x("",!0)],2))}}),y=I(O,[["__scopeId","data-v-3a42e270"]]),W={class:"cpf"},X={key:0,class:"cpf__error"},Y=["disabled"],q=B({__name:"CompleteProfileView",setup(g){const b=N(),a=D({business_license_image_id:null,shop_image_id:null,ncode_image_id:null}),_=o(!1),l=o(!1),i=o(null);async function t(){if(i.value=null,!a.business_license_image_id||!a.shop_image_id||!a.ncode_image_id){R.warning("لطفا تمامی عکس های خواسته شده را آپلود کنید");return}_.value=!0;try{await P.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",W,[n(T,{title:"تکمیل پروفایل","back-to":"userPage::hasSubRoute"}),n(S,{spinning:_.value,tip:"در حال ثبت اطلاعات"},{default:C(()=>[n(v,{class:"cpf__body"},{default:C(()=>[s[4]||(s[4]=d("p",{class:"cpf__lead"}," برای تکمیل پروفایل، سه مدرک زیر را بارگذاری کنید. ",-1)),d("form",{class:"cpf__form",onSubmit:z(t,["prevent"])},[n(y,{"upload-text":"بارگذاری عکس جواز کسب",purpose:"business-license",onDone:s[0]||(s[0]=e=>a.business_license_image_id=e)}),n(y,{"upload-text":"بارگذاری عکس سردر مغازه",purpose:"shop-image",onDone:s[1]||(s[1]=e=>a.shop_image_id=e)}),n(y,{"upload-text":"بارگذاری عکس کارت ملی",purpose:"national-card",onDone:s[2]||(s[2]=e=>a.ncode_image_id=e)}),i.value?(r(),c("p",X,h(i.value),1)):x("",!0),d("button",{type:"submit",class:"cpf__submit",disabled:_.value}," بارگذاری اطلاعات ",8,Y)],32)]),_:1})]),_:1},8,["spinning"]),n(U,{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"])])}}}),H=I(q,[["__scopeId","data-v-630e0720"]]);export{H as default};
@@ -1 +0,0 @@
.cch__barExtra[data-v-e8f131ad]{padding:0 16px 12px}.cch__body[data-v-e8f131ad]{padding-top:132px;padding-bottom:90px}.cch__list[data-v-e8f131ad]{display:flex;flex-direction:column;padding-top:8px}.cch__card[data-v-e8f131ad]{padding:18px 2px;background:transparent;border:none;border-bottom:1px solid var(--c-hairline);cursor:pointer}.cch__card[data-v-e8f131ad]:last-child{border-bottom:none}.cch__card[data-v-e8f131ad]:active{opacity:.75}.cch__head[data-v-e8f131ad]{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.cch__name[data-v-e8f131ad]{margin:0;font-size:15.5px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cch__state[data-v-e8f131ad]{flex:0 0 auto;padding:4px 12px;border-radius:999px;font-size:11.5px;font-weight:600}.cch__state.is-on[data-v-e8f131ad]{color:var(--c-green);background:rgb(var(--c-green-rgb) / 14%)}.cch__state.is-off[data-v-e8f131ad]{color:var(--c-red);background:rgb(var(--c-red-rgb) / 12%)}.cch__facts[data-v-e8f131ad]{display:flex;flex-direction:column;gap:7px}.cch__fact[data-v-e8f131ad]{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--c-inkFaint)}.cch__empty[data-v-e8f131ad]{margin-top:8px;padding:34px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkFaint)}.cch__empty p[data-v-e8f131ad]{margin:0;font-size:12.5px}.cch__retry[data-v-e8f131ad]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.cch__detail[data-v-e8f131ad]{padding:20px 16px 24px}.cch__detailTitle[data-v-e8f131ad]{margin:0 0 16px;font-size:17px;font-weight:700}.cch__rows[data-v-e8f131ad]{margin:0;display:flex;flex-direction:column}.cch__row[data-v-e8f131ad]{display:flex;justify-content:space-between;align-items:center;padding:13px 2px;border-bottom:1px solid var(--c-hairline)}.cch__row[data-v-e8f131ad]:last-child{border-bottom:none}.cch__row dt[data-v-e8f131ad]{font-size:13px;color:var(--c-inkFaint)}.cch__row dd[data-v-e8f131ad]{margin:0;font-size:14px;font-weight:600}.cch__close[data-v-e8f131ad]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:var(--c-ink);color:var(--c-onInk);font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
@@ -0,0 +1 @@
import{d as S,o as B,c,p as o,z as i,J as N,m as u,g as d,s as P,f as r,b as s,F as D,r as F,I as v,t as l,e as g,B as I,i as E,_ as L}from"./index-Dp9sxvBv.js";import{P as R}from"./PageBar-El-laHqK.js";import{S as $}from"./SearchInput-OrOd8Tqr.js";import{D as U}from"./index-UuozCFb-.js";import{P as J,L as w}from"./index-B0RgkHMm.js";import"./KeyCode-DAs3W-5E.js";import"./classCallCheck-BTVV3tFI.js";import"./raf-nDFcuFT6.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"},K={dir:"ltr"},Q={class:"cch__fact"},W={dir:"ltr"},X={key:0,class:"cch__fact"},Y={key:1,class:"cch__empty"},Z={key:2,class:"cch__empty"},ss={key:0,class:"cch__detail"},es={class:"cch__detailTitle"},ts={class:"cch__rows"},os={class:"cch__row"},ls={dir:"ltr"},as={class:"cch__row"},ns={dir:"ltr"},is={class:"cch__row"},cs={class:"cch__row"},rs={class:"cch__row"},ds={dir:"ltr"},_s={class:"cch__row"},us={dir:"ltr"},vs={class:"cch__row"},hs=S({__name:"CustomerChoiceView",setup(ps){const _=d([]),h=d(!1),b=d(!1),p=d(!1),y=d(null),f=d(!1),a=d(null);function C(n){const e=Number(n??0);return Number.isFinite(e)?e.toFixed(3):"0.000"}async function m(){h.value=!0,p.value=!1;try{_.value=await P.getExpertCustomers(y.value)}catch{p.value=!0,_.value=[]}finally{h.value=!1}}async function k(n){y.value=n!=null&&n.trim()?n.trim():null,await m()}async function x(){await m(),b.value=!1}function z(n){a.value=n,f.value=!0}return B(m),(n,e)=>{const V=I("container");return r(),c("div",M,[o(R,{title:"لیست مشتریان","back-to":"userPage::hasSubRoute"},{below:i(()=>[s("div",O,[o($,{onSearch:k,"place-holder":"جستجو"})])]),_:1}),o(N,{spinning:h.value&&!_.value.length,tip:"درحال دریافت اطلاعات"},{default:i(()=>[o(u(J),{modelValue:b.value,"onUpdate:modelValue":e[0]||(e[0]=t=>b.value=t),onRefresh:x},{pulling:i(()=>[o(u(w),{size:"18"})]),loosing:i(()=>[o(u(w),{size:"18"})]),loading:i(()=>[o(u(w),{size:"18"})]),success:i(()=>[...e[3]||(e[3]=[s("span",null,null,-1)])]),default:i(()=>[o(V,{class:"cch__body"},{default:i(()=>[_.value.length?(r(),c("div",T,[(r(!0),c(D,null,F(_.value,t=>(r(),c("article",{key:t.id,class:"cch__card",onClick:fs=>z(t)},[s("div",q,[s("h3",A,l(t.name),1),s("span",{class:E(["cch__state",t.active===1?"is-on":"is-off"])},l(t.active===1?"فعال":"غیرفعال"),3)]),s("div",G,[s("div",H,[o(v,{icon:"vuesax-linear:mobile",size:"15"}),s("span",K,l(t.mobile||"—"),1)]),s("div",Q,[o(v,{icon:"vuesax-linear:call",size:"15"}),s("span",W,l(t.phone||"—"),1)]),t.store_name?(r(),c("div",X,[o(v,{icon:"vuesax-linear:shop",size:"15"}),s("span",null,l(t.store_name),1)])):g("",!0)])],8,j))),128))])):!h.value&&!p.value?(r(),c("section",Y,[o(v,{icon:"vuesax-linear:profile-2user",size:"26"}),s("p",null,l(y.value?"مشتری با این مشخصات پیدا نشد.":"هنوز مشتری‌ای به شما معرفی نشده است."),1)])):g("",!0),p.value?(r(),c("section",Z,[o(v,{icon:"vuesax-linear:danger",size:"26"}),e[4]||(e[4]=s("p",null,"دریافت اطلاعات با خطا روبه‌رو شد.",-1)),s("button",{type:"button",class:"cch__retry",onClick:m},"تلاش دوباره")])):g("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["spinning"]),o(u(U),{open:f.value,"onUpdate:open":e[2]||(e[2]=t=>f.value=t),placement:"bottom",height:"auto",closable:!1,"body-style":{padding:"0"}},{default:i(()=>[a.value?(r(),c("div",ss,[s("h2",es,l(a.value.name),1),s("dl",ts,[s("div",os,[e[5]||(e[5]=s("dt",null,"موبایل",-1)),s("dd",ls,l(a.value.mobile||"—"),1)]),s("div",as,[e[6]||(e[6]=s("dt",null,"تلفن",-1)),s("dd",ns,l(a.value.phone||"—"),1)]),s("div",is,[e[7]||(e[7]=s("dt",null,"نام مغازه",-1)),s("dd",null,l(a.value.store_name||"—"),1)]),s("div",cs,[e[8]||(e[8]=s("dt",null,"نام پاساژ",-1)),s("dd",null,l(a.value.pasazh_name||"—"),1)]),s("div",rs,[e[9]||(e[9]=s("dt",null,"سقف اعتبار",-1)),s("dd",ds,l(C(a.value.gram_level))+" گرم",1)]),s("div",_s,[e[10]||(e[10]=s("dt",null,"بدهی گرمی",-1)),s("dd",us,l(C(a.value.remain))+" گرم",1)]),s("div",vs,[e[11]||(e[11]=s("dt",null,"وضعیت",-1)),s("dd",null,l(a.value.active===1?"فعال":"غیرفعال"),1)])]),s("button",{type:"button",class:"cch__close",onClick:e[1]||(e[1]=t=>f.value=!1)},"بستن")])):g("",!0)]),_:1},8,["open"])])}}}),zs=L(hs,[["__scopeId","data-v-b1fb7f3c"]]);export{zs as default};
@@ -0,0 +1 @@
.cch__barExtra[data-v-b1fb7f3c]{padding:0 16px 12px}.cch__body[data-v-b1fb7f3c]{padding-top:132px;padding-bottom:90px}.cch__list[data-v-b1fb7f3c]{display:flex;flex-direction:column;padding-top:8px}.cch__card[data-v-b1fb7f3c]{padding:18px 2px;background:transparent;border:none;border-bottom:1px solid var(--c-hairline);cursor:pointer}.cch__card[data-v-b1fb7f3c]:last-child{border-bottom:none}.cch__card[data-v-b1fb7f3c]:active{opacity:.75}.cch__head[data-v-b1fb7f3c]{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.cch__name[data-v-b1fb7f3c]{margin:0;font-size:15.5px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cch__state[data-v-b1fb7f3c]{flex:0 0 auto;padding:4px 12px;border-radius:999px;font-size:11.5px;font-weight:600}.cch__state.is-on[data-v-b1fb7f3c]{color:var(--c-green);background:rgb(var(--c-green-rgb) / 14%)}.cch__state.is-off[data-v-b1fb7f3c]{color:var(--c-red);background:rgb(var(--c-red-rgb) / 12%)}.cch__facts[data-v-b1fb7f3c]{display:flex;flex-direction:column;gap:7px}.cch__fact[data-v-b1fb7f3c]{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--c-inkFaint)}.cch__empty[data-v-b1fb7f3c]{margin-top:8px;padding:34px 20px;border:1px dashed var(--c-hairline);border-radius:18px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkFaint)}.cch__empty p[data-v-b1fb7f3c]{margin:0;font-size:12.5px}.cch__retry[data-v-b1fb7f3c]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.cch__detail[data-v-b1fb7f3c]{padding:20px 16px 24px}.cch__detailTitle[data-v-b1fb7f3c]{margin:0 0 16px;font-size:17px;font-weight:700}.cch__rows[data-v-b1fb7f3c]{margin:0;display:flex;flex-direction:column}.cch__row[data-v-b1fb7f3c]{display:flex;justify-content:space-between;align-items:center;padding:13px 2px;border-bottom:1px solid var(--c-hairline)}.cch__row[data-v-b1fb7f3c]:last-child{border-bottom:none}.cch__row dt[data-v-b1fb7f3c]{font-size:13px;color:var(--c-inkFaint)}.cch__row dd[data-v-b1fb7f3c]{margin:0;font-size:14px;font-weight:600}.cch__close[data-v-b1fb7f3c]{margin-top:18px;width:100%;padding:13px;border:none;border-radius:14px;background:var(--c-ink);color:var(--c-onInk);font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
@@ -1 +0,0 @@
import{d as V,o as S,c,p as a,z as d,J as B,m as w,g as r,s as N,f as i,b as s,F as P,r as D,I as u,t as o,e as m,B as F,i as I,_ as E}from"./index-BWyw3RAx.js";import{P as R}from"./PageBar-D5DXU6sO.js";import{S as $}from"./SearchInput-BZCG2e_m.js";import{D as U}from"./index-sLHXZqt3.js";import{P as J}from"./index-ecOSUWQv.js";import"./KeyCode-CA5MXqE7.js";import"./classCallCheck-Ou87VTNv.js";import"./raf-nDFcuFT6.js";const L={class:"cch"},M={class:"cch__barExtra"},O={key:0,class:"cch__list"},T=["onClick"],j={class:"cch__head"},q={class:"cch__name"},A={class:"cch__facts"},G={class:"cch__fact"},H={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=V({__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 z=F("container");return i(),c("div",L,[a(R,{title:"لیست مشتریان","back-to":"userPage::hasSubRoute"},{below:d(()=>[s("div",M,[a($,{onSearch:C,"place-holder":"جستجو"})])]),_:1}),a(B,{spinning:v.value&&!_.value.length,tip:"درحال دریافت اطلاعات"},{default:d(()=>[a(w(J),{modelValue:y.value,"onUpdate:modelValue":e[0]||(e[0]=t=>y.value=t),onRefresh:k},{default:d(()=>[a(z,{class:"cch__body"},{default:d(()=>[_.value.length?(i(),c("div",O,[(i(!0),c(P,null,D(_.value,t=>(i(),c("article",{key:t.id,class:"cch__card",onClick:ps=>x(t)},[s("div",j,[s("h3",q,o(t.name),1),s("span",{class:I(["cch__state",t.active===1?"is-on":"is-off"])},o(t.active===1?"فعال":"غیرفعال"),3)]),s("div",A,[s("div",G,[a(u,{icon:"vuesax-linear:mobile",size:"15"}),s("span",H,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,T))),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=E(vs,[["__scopeId","data-v-e8f131ad"]]);export{xs as default};
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 @@
.dash[data-v-244443b2]{background:var(--c-page);min-height:100vh}.dash__bar[data-v-244443b2]{position:fixed;top:0;left:0;right:0;z-index:20;background:rgb(var(--c-canvas-rgb) / 82%);-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);border-bottom:1px solid rgb(var(--c-primary-rgb) / 5%);box-shadow:0 8px 20px -18px rgb(var(--c-primary-rgb) / 55%)}.dash__barInner[data-v-244443b2]{max-width:768px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.dash__brand[data-v-244443b2]{font-size:14.5px;font-weight:800;color:var(--c-ink)}.dash__exit[data-v-244443b2]{flex:0 0 auto;width:34px;height:34px;border:0;cursor:pointer;border-radius:11px;display:grid;place-items:center;color:var(--c-wine);background:var(--c-wineWash);transition:transform .18s ease}.dash__exit[data-v-244443b2]:active{transform:scale(.92)}.dash__body[data-v-244443b2]{padding-top:58px;padding-bottom:90px}.dash__reveal[data-v-244443b2]{opacity:0;transform:translate3d(0,14px,0) scale(.98);will-change:transform,opacity}.is-revealed .dash__reveal[data-v-244443b2]{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-244443b2]{opacity:1;transform:none}.is-revealed .dash__reveal[data-v-244443b2]{transition:none}}.dash__hero[data-v-244443b2]{margin-top:16px;margin-bottom:28px;padding:20px 18px 16px;border-radius:26px;background:linear-gradient(155deg,var(--c-heroSurface) 0%,var(--c-heroSurface) 55%,#5E1427 130%);color:#fff;box-shadow:0 22px 40px -26px #14161a52}.dash__heroTop[data-v-244443b2]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.dash__heroIdentity[data-v-244443b2]{display:flex;flex-direction:column;gap:3px;min-width:0}.dash__heroName[data-v-244443b2]{font-size:13.5px;font-weight:800}.dash__heroMobile[data-v-244443b2]{font-size:11px;color:#ffffff8c;direction:ltr;text-align:right}.dash__heroSeal[data-v-244443b2]{flex:0 0 auto;padding:5px 12px;border-radius:999px;font-size:10.5px;font-weight:700}.dash__heroSeal.is-debtor[data-v-244443b2]{color:#fff;background:var(--c-wineSoft)}.dash__heroSeal.is-creditor[data-v-244443b2]{color:#14161a;background:#ffffffe6}.dash__heroFigure[data-v-244443b2]{margin-top:20px;display:flex;align-items:baseline;gap:8px}.dash__heroNum[data-v-244443b2]{font-size:34px;font-weight:800;letter-spacing:-.5px}.dash__heroUnit[data-v-244443b2]{font-size:12px;font-weight:600;color:#ffffff9e}.dash__heroDebt[data-v-244443b2]{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-244443b2]{font-size:13px;font-weight:700;color:#fff}.dash__heroDebt i[data-v-244443b2]{font-style:normal;font-size:10.5px;font-weight:600;color:#ffffff9e;padding-inline-start:3px}.dash__invite[data-v-244443b2]{margin-top:16px;padding:26px 20px;border-radius:26px;background:var(--c-heroSurface);color:#fff;display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px}.dash__inviteIcon[data-v-244443b2]{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:#ffffff1a;margin-bottom:2px}.dash__invite h3[data-v-244443b2]{margin:0;font-size:14px;font-weight:800}.dash__invite p[data-v-244443b2]{margin:0;font-size:11.5px;color:#fff9;max-width:240px}.dash__inviteCta[data-v-244443b2]{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-244443b2]:active{transform:scale(.96)}.dash__rows[data-v-244443b2]{margin-top:0;display:flex;flex-direction:column;gap:9px}.dash__row[data-v-244443b2]{display:flex;align-items:center;gap:12px;padding:13px 14px;border:1px solid var(--c-hairline);border-radius:17px;cursor:pointer;background:var(--c-canvas);font-family:inherit;text-align:right;transition:transform .18s ease,border-color .18s ease}.dash__row[data-v-244443b2]:active{transform:scale(.985);border-color:rgb(var(--c-wine-rgb) / 20%)}.dash__rowIcon[data-v-244443b2]{flex:0 0 auto;width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:var(--c-wine);background:var(--c-wineWash)}.dash__rowText[data-v-244443b2]{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.dash__rowText b[data-v-244443b2]{font-size:12.5px;font-weight:700;color:var(--c-ink)}.dash__rowText small[data-v-244443b2]{font-size:10.5px;color:var(--c-inkFaint)}.dash__rate[data-v-244443b2]{margin-top:14px}
@@ -0,0 +1 @@
.dash[data-v-d6c76569]{background:var(--c-page);min-height:100vh}.dash__bar[data-v-d6c76569]{position:fixed;top:0;left:0;right:0;z-index:20;background:rgb(var(--c-canvas-rgb) / 82%);-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);border-bottom:1px solid rgb(var(--c-primary-rgb) / 5%);box-shadow:0 8px 20px -18px rgb(var(--c-primary-rgb) / 55%)}.dash__barInner[data-v-d6c76569]{max-width:768px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.dash__brand[data-v-d6c76569]{font-size:14.5px;font-weight:800;color:var(--c-ink)}.dash__exit[data-v-d6c76569]{flex:0 0 auto;width:34px;height:34px;border:0;cursor:pointer;border-radius:11px;display:grid;place-items:center;color:var(--c-wine);background:var(--c-wineWash);transition:transform .18s ease}.dash__exit[data-v-d6c76569]:active{transform:scale(.92)}.dash__body[data-v-d6c76569]{padding-top:58px;padding-bottom:90px}.dash__reveal[data-v-d6c76569]{opacity:0;transform:translate3d(0,14px,0) scale(.98);will-change:transform,opacity}.is-revealed .dash__reveal[data-v-d6c76569]{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-d6c76569]{opacity:1;transform:none}.is-revealed .dash__reveal[data-v-d6c76569]{transition:none}}.dash__hero[data-v-d6c76569]{margin-top:16px;margin-bottom:28px;padding:20px 18px 16px;border-radius:26px;background:linear-gradient(155deg,var(--c-heroSurface) 0%,var(--c-heroSurface) 55%,#5E1427 130%);color:#fff;box-shadow:0 22px 40px -26px #14161a52}.dash__heroTop[data-v-d6c76569]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.dash__heroIdentity[data-v-d6c76569]{display:flex;flex-direction:column;gap:3px;min-width:0}.dash__heroName[data-v-d6c76569]{font-size:13.5px;font-weight:800}.dash__heroMobile[data-v-d6c76569]{font-size:11px;color:#ffffff8c;direction:ltr;text-align:right}.dash__heroSeal[data-v-d6c76569]{flex:0 0 auto;padding:5px 12px;border-radius:999px;font-size:10.5px;font-weight:700}.dash__heroSeal.is-debtor[data-v-d6c76569]{color:#fff;background:var(--c-wineSoft)}.dash__heroSeal.is-creditor[data-v-d6c76569]{color:#14161a;background:#ffffffe6}.dash__heroFigure[data-v-d6c76569]{margin-top:20px;display:flex;align-items:baseline;gap:8px}.dash__heroNum[data-v-d6c76569]{font-size:34px;font-weight:800;letter-spacing:-.5px}.dash__heroUnit[data-v-d6c76569]{font-size:12px;font-weight:600;color:#ffffff9e}.dash__heroDebt[data-v-d6c76569]{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-d6c76569]{font-size:13px;font-weight:700;color:#fff}.dash__heroDebt i[data-v-d6c76569]{font-style:normal;font-size:10.5px;font-weight:600;color:#ffffff9e;padding-inline-start:3px}.dash__invite[data-v-d6c76569]{margin-top:16px;padding:26px 20px;border-radius:26px;background:var(--c-heroSurface);color:#fff;display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px}.dash__inviteIcon[data-v-d6c76569]{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:#ffffff1a;margin-bottom:2px}.dash__invite h3[data-v-d6c76569]{margin:0;font-size:14px;font-weight:800}.dash__invite p[data-v-d6c76569]{margin:0;font-size:11.5px;color:#fff9;max-width:240px}.dash__inviteCta[data-v-d6c76569]{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-d6c76569]:active{transform:scale(.96)}.dash__rows[data-v-d6c76569]{margin-top:0;display:flex;flex-direction:column;gap:9px}.dash__row[data-v-d6c76569]{display:flex;align-items:center;gap:12px;padding:13px 14px;border:1px solid var(--c-hairline);border-radius:17px;cursor:pointer;background:var(--c-canvas);font-family:inherit;text-align:right;transition:transform .18s ease,border-color .18s ease}.dash__row[data-v-d6c76569]:active{transform:scale(.985);border-color:rgb(var(--c-wine-rgb) / 20%)}.dash__rowIcon[data-v-d6c76569]{flex:0 0 auto;width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:var(--c-wine);background:var(--c-wineWash)}.dash__rowText[data-v-d6c76569]{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.dash__rowText b[data-v-d6c76569]{font-size:12.5px;font-weight:700;color:var(--c-ink)}.dash__rowText small[data-v-d6c76569]{font-size:10.5px;color:var(--c-inkFaint)}.dash__rate[data-v-d6c76569]{margin-top:14px}
@@ -1 +1 @@
import{d as m,aM as g,o as y,s as b,c as o,p as e,z as c,J as h,g as d,f as t,F as _,b as l,r as k,I as C,m as P,e as B,C as F,h as x,B as V,j as w,_ as S}from"./index-BWyw3RAx.js";import{P as I}from"./PageBar-D5DXU6sO.js";import{S as N}from"./SectionHead-BiCEpXAe.js";import{P as $}from"./ProductCard-nL92ZIkB.js";const z={class:"favs"},M={class:"favs__grid"},R={key:1,class:"favs__empty"},j=m({__name:"FavoritesView",setup(E){const v=F(),f=g(),a=d(!1),i=d([]),n=x(()=>i.value.filter(u=>f.isFavorite(u.id)));return y(async()=>{a.value=!0;try{i.value=await b.listProducts()}finally{a.value=!1}}),(u,s)=>{const p=V("container");return t(),o("div",z,[e(I,{title:"علاقه‌مندی","back-to":"userPage::hasSubRoute"}),e(h,{spinning:a.value,tip:"در حال دریافت اطلاعات"},{default:c(()=>[e(p,{class:"favs__body"},{default:c(()=>[n.value.length?(t(),o(_,{key:0},[e(N,{title:"ذخیره‌شده‌ها",subtitle:`${n.value.length} محصول`},null,8,["subtitle"]),l("div",M,[(t(!0),o(_,null,k(n.value,r=>(t(),w($,{key:r.id,value:r},null,8,["value"]))),128))])],64)):a.value?B("",!0):(t(),o("section",R,[e(C,{icon:"vuesax-linear:heart",size:"26"}),s[1]||(s[1]=l("p",null,"هنوز محصولی را به علاقه‌مندی‌ها اضافه نکرده‌اید.",-1)),l("button",{type:"button",class:"favs__emptyCta",onClick:s[0]||(s[0]=r=>P(v).push({name:"home"}))}," دیدن محصولات ")]))]),_:1})]),_:1},8,["spinning"])])}}}),A=S(j,[["__scopeId","data-v-d58ee1f5"]]);export{A as default};
import{d as m,aM as g,o as y,s as b,c as o,p as e,z as c,J as h,g as d,f as t,F as _,b as l,r as k,I as C,m as P,e as B,C as F,h as x,B as V,j as w,_ as S}from"./index-Dp9sxvBv.js";import{P as I}from"./PageBar-El-laHqK.js";import{S as N}from"./SectionHead-DNG9ywW4.js";import{P as $}from"./ProductCard-CvKEozHI.js";const z={class:"favs"},M={class:"favs__grid"},R={key:1,class:"favs__empty"},j=m({__name:"FavoritesView",setup(E){const v=F(),f=g(),a=d(!1),i=d([]),n=x(()=>i.value.filter(u=>f.isFavorite(u.id)));return y(async()=>{a.value=!0;try{i.value=await b.listProducts()}finally{a.value=!1}}),(u,s)=>{const p=V("container");return t(),o("div",z,[e(I,{title:"علاقه‌مندی","back-to":"userPage::hasSubRoute"}),e(h,{spinning:a.value,tip:"در حال دریافت اطلاعات"},{default:c(()=>[e(p,{class:"favs__body"},{default:c(()=>[n.value.length?(t(),o(_,{key:0},[e(N,{title:"ذخیره‌شده‌ها",subtitle:`${n.value.length} محصول`},null,8,["subtitle"]),l("div",M,[(t(!0),o(_,null,k(n.value,r=>(t(),w($,{key:r.id,value:r},null,8,["value"]))),128))])],64)):a.value?B("",!0):(t(),o("section",R,[e(C,{icon:"vuesax-linear:heart",size:"26"}),s[1]||(s[1]=l("p",null,"هنوز محصولی را به علاقه‌مندی‌ها اضافه نکرده‌اید.",-1)),l("button",{type:"button",class:"favs__emptyCta",onClick:s[0]||(s[0]=r=>P(v).push({name:"home"}))}," دیدن محصولات ")]))]),_:1})]),_:1},8,["spinning"])])}}}),A=S(j,[["__scopeId","data-v-d58ee1f5"]]);export{A as default};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{a9 as d,h as f,an as g,d as P,ab as p,L as C,Q as T,Y as h,x as m,a as x,p as R,bj as y}from"./index-BWyw3RAx.js";var E=!1;try{var c=Object.defineProperty({},"passive",{get:function(){E=!0}});window.addEventListener("testPassive",null,c),window.removeEventListener("testPassive",null,c)}catch{}var j=Symbol("TriggerContextKey"),K=function(e){return e?d(j,{setPortal:function(){},popPortal:!1}):{setPortal:function(){},popPortal:!1}},v=Symbol("PortalContextKey"),b=function(e){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{inTriggerContext:!0};g(v,{inTriggerContext:i.inTriggerContext,shouldRender:f(function(){var n=e||{},u=n.sPopupVisible,t=n.popupRef,l=n.forceRender,r=n.autoDestroy,s=!1;return(u||t||l)&&(s=!0),!u&&r&&(s=!1),s})})},D=function(){b({},{inTriggerContext:!1});var e=d(v,{shouldRender:f(function(){return!1}),inTriggerContext:!1});return{shouldRender:f(function(){return e.shouldRender.value||e.inTriggerContext===!1})}};const N=P({compatConfig:{MODE:3},name:"Portal",inheritAttrs:!1,props:{getContainer:p.func.isRequired,didUpdate:Function},setup:function(e,i){var n=i.slots,u=!0,t,l=D(),r=l.shouldRender;C(function(){u=!1,r.value&&(t=e.getContainer())});var s=T(r,function(){r.value&&!t&&(t=e.getContainer()),t&&s()});return h(function(){m(function(){if(r.value){var o;(o=e.didUpdate)===null||o===void 0||o.call(e,e)}})}),x(function(){t&&t.parentNode&&t.parentNode.removeChild(t)}),function(){if(!r.value)return null;if(u){var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}return t?R(y,{to:t},n):null}}});var w={ESC:27,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40};export{w as K,N as P,K as a,E as s,b as u};
import{a9 as d,h as f,an as g,d as P,ab as p,L as C,Q as T,Y as h,x as m,a as x,p as R,bj as y}from"./index-Dp9sxvBv.js";var E=!1;try{var c=Object.defineProperty({},"passive",{get:function(){E=!0}});window.addEventListener("testPassive",null,c),window.removeEventListener("testPassive",null,c)}catch{}var j=Symbol("TriggerContextKey"),K=function(e){return e?d(j,{setPortal:function(){},popPortal:!1}):{setPortal:function(){},popPortal:!1}},v=Symbol("PortalContextKey"),b=function(e){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{inTriggerContext:!0};g(v,{inTriggerContext:i.inTriggerContext,shouldRender:f(function(){var n=e||{},u=n.sPopupVisible,t=n.popupRef,l=n.forceRender,r=n.autoDestroy,s=!1;return(u||t||l)&&(s=!0),!u&&r&&(s=!1),s})})},D=function(){b({},{inTriggerContext:!1});var e=d(v,{shouldRender:f(function(){return!1}),inTriggerContext:!1});return{shouldRender:f(function(){return e.shouldRender.value||e.inTriggerContext===!1})}};const N=P({compatConfig:{MODE:3},name:"Portal",inheritAttrs:!1,props:{getContainer:p.func.isRequired,didUpdate:Function},setup:function(e,i){var n=i.slots,u=!0,t,l=D(),r=l.shouldRender;C(function(){u=!1,r.value&&(t=e.getContainer())});var s=T(r,function(){r.value&&!t&&(t=e.getContainer()),t&&s()});return h(function(){m(function(){if(r.value){var o;(o=e.didUpdate)===null||o===void 0||o.call(e,e)}})}),x(function(){t&&t.parentNode&&t.parentNode.removeChild(t)}),function(){if(!r.value)return null;if(u){var o;return(o=n.default)===null||o===void 0?void 0:o.call(n)}return t?R(y,{to:t},n):null}}});var w={ESC:27,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40};export{w as K,N as P,K as a,E as s,b as u};
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{d as p,f as n,c,p as a,m as r,E as P,D as b,G as k,n as S,H as B,J as v,j as y,e as h,g as u,s as E,K as L,L as C,z as d,F as I,r as N,I as V,b as $,h as A,B as F,_ as z}from"./index-BWyw3RAx.js";import{P as D}from"./PageBar-D5DXU6sO.js";import{S as H}from"./SectionHead-BiCEpXAe.js";import{P as j}from"./ProductCard-nL92ZIkB.js";const G={class:"flex justify-center items-center empty"},T=p({__name:"EmptyState",props:{description:{},image:{}},setup(e){return(t,s)=>(n(),c("div",G,[a(r(P),{description:"موردی یافت نشد",image:e.image,class:"h-[200px] w-[200px] opacity-70"},null,8,["image"])]))}}),J="/assets/favoritEmpty-kbtPAdi5.svg",K=p({__name:"ScrollFetchSearch",props:{loading:{type:Boolean},flag:{type:Boolean},padding:{}},emits:["fetch"],setup(e,{emit:t}){const s=t,o=b(),l=u(null);return k(l,()=>{s("fetch")},{distance:50}),(i,f)=>(n(),c("main",{class:"flex flex-col flex-1 overflow-auto no-scrollbar w-[100vw] max-w-screen-md m-auto",style:S({paddingTop:e.padding||r(o).headerHeight+"px"}),ref_key:"scrollArea",ref:l},[B(i.$slots,"default"),a(v,{cls:"my-[10px]",spinning:e.loading,indicator:!0,tip:"درحال دریافت اطلاعات"},null,8,["spinning"]),e.flag?(n(),y(T,{key:0,image:r(J)},null,8,["image"])):h("",!0)],4))}});function M(){const e=L({totalPages:0,productList:[],flag:!1});return{productsData:e,getProducts:async(s,o=!1)=>{if(!o){s.value=!0;try{e.productList=await E.listProducts(),e.flag=e.productList.length<1}catch(l){console.log(l)}finally{s.value=!1}}}}}const Z={class:"newest"},q={key:0,class:"newest__grid"},O={key:1,class:"newest__empty"},g=20,Q=p({__name:"NewestView",setup(e){const{productsData:t,getProducts:s}=M(),o=u(!1),l=u(!1),i=u(g),f=A(()=>t.productList.slice(0,i.value));C(async()=>{await s(o,!1)});const w=async()=>{if(i.value<t.productList.length){i.value+=g;return}await s(l,!0)};return(R,m)=>{const x=F("container");return n(),c("div",Z,[a(D,{title:"جدیدترین محصولات","back-to":"home"}),a(v,{spinning:o.value,tip:"درحال دریافت اطلاعات"},{default:d(()=>[a(K,{class:"newest__scroll",loading:l.value,flag:r(t).flag,padding:"0px",onFetch:w},{default:d(()=>[a(x,{class:"newest__body"},{default:d(()=>[a(H,{title:"تازه‌ها",subtitle:"آخرین افزوده‌های مجموعه"}),r(t).productList.length?(n(),c("div",q,[(n(!0),c(I,null,N(f.value,_=>(n(),y(j,{key:_.id,value:_},null,8,["value"]))),128))])):o.value?h("",!0):(n(),c("section",O,[a(V,{icon:"vuesax-linear:box",size:"26"}),m[0]||(m[0]=$("p",null,"هنوز محصولی در مجموعه ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["loading","flag"])]),_:1},8,["spinning"])])}}}),ee=z(Q,[["__scopeId","data-v-4551f84b"]]);export{ee as default};
import{d as p,f as n,c,p as a,m as r,E as P,D as b,G as k,n as S,H as B,J as v,j as y,e as h,g as u,s as E,K as L,L as C,z as d,F as I,r as N,I as V,b as $,h as A,B as F,_ as z}from"./index-Dp9sxvBv.js";import{P as D}from"./PageBar-El-laHqK.js";import{S as H}from"./SectionHead-DNG9ywW4.js";import{P as j}from"./ProductCard-CvKEozHI.js";const G={class:"flex justify-center items-center empty"},T=p({__name:"EmptyState",props:{description:{},image:{}},setup(e){return(t,s)=>(n(),c("div",G,[a(r(P),{description:"موردی یافت نشد",image:e.image,class:"h-[200px] w-[200px] opacity-70"},null,8,["image"])]))}}),J="/assets/favoritEmpty-kbtPAdi5.svg",K=p({__name:"ScrollFetchSearch",props:{loading:{type:Boolean},flag:{type:Boolean},padding:{}},emits:["fetch"],setup(e,{emit:t}){const s=t,o=b(),l=u(null);return k(l,()=>{s("fetch")},{distance:50}),(i,f)=>(n(),c("main",{class:"flex flex-col flex-1 overflow-auto no-scrollbar w-[100vw] max-w-screen-md m-auto",style:S({paddingTop:e.padding||r(o).headerHeight+"px"}),ref_key:"scrollArea",ref:l},[B(i.$slots,"default"),a(v,{cls:"my-[10px]",spinning:e.loading,indicator:!0,tip:"درحال دریافت اطلاعات"},null,8,["spinning"]),e.flag?(n(),y(T,{key:0,image:r(J)},null,8,["image"])):h("",!0)],4))}});function M(){const e=L({totalPages:0,productList:[],flag:!1});return{productsData:e,getProducts:async(s,o=!1)=>{if(!o){s.value=!0;try{e.productList=await E.listProducts(),e.flag=e.productList.length<1}catch(l){console.log(l)}finally{s.value=!1}}}}}const Z={class:"newest"},q={key:0,class:"newest__grid"},O={key:1,class:"newest__empty"},g=20,Q=p({__name:"NewestView",setup(e){const{productsData:t,getProducts:s}=M(),o=u(!1),l=u(!1),i=u(g),f=A(()=>t.productList.slice(0,i.value));C(async()=>{await s(o,!1)});const w=async()=>{if(i.value<t.productList.length){i.value+=g;return}await s(l,!0)};return(R,m)=>{const x=F("container");return n(),c("div",Z,[a(D,{title:"جدیدترین محصولات","back-to":"home"}),a(v,{spinning:o.value,tip:"درحال دریافت اطلاعات"},{default:d(()=>[a(K,{class:"newest__scroll",loading:l.value,flag:r(t).flag,padding:"0px",onFetch:w},{default:d(()=>[a(x,{class:"newest__body"},{default:d(()=>[a(H,{title:"تازه‌ها",subtitle:"آخرین افزوده‌های مجموعه"}),r(t).productList.length?(n(),c("div",q,[(n(!0),c(I,null,N(f.value,_=>(n(),y(j,{key:_.id,value:_},null,8,["value"]))),128))])):o.value?h("",!0):(n(),c("section",O,[a(V,{icon:"vuesax-linear:box",size:"26"}),m[0]||(m[0]=$("p",null,"هنوز محصولی در مجموعه ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["loading","flag"])]),_:1},8,["spinning"])])}}}),ee=z(Q,[["__scopeId","data-v-4551f84b"]]);export{ee as default};
@@ -1 +1 @@
import{d as n,c as a,p as o,z as i,B as c,f as _,b as e,I as r,_ as f}from"./index-BWyw3RAx.js";import{P as p}from"./PageBar-D5DXU6sO.js";const l={class:"notif"},d={class:"notif__empty"},m=n({__name:"NotificationsView",setup(u){return(x,t)=>{const s=c("container");return _(),a("div",l,[o(p,{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})])}}}),v=f(m,[["__scopeId","data-v-6887fb26"]]);export{v as default};
import{d as n,c as a,p as o,z as i,B as c,f as _,b as e,I as r,_ as f}from"./index-Dp9sxvBv.js";import{P as p}from"./PageBar-El-laHqK.js";const l={class:"notif"},d={class:"notif__empty"},m=n({__name:"NotificationsView",setup(u){return(x,t)=>{const s=c("container");return _(),a("div",l,[o(p,{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})])}}}),v=f(m,[["__scopeId","data-v-6887fb26"]]);export{v 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
@@ -1 +1 @@
import{d as _,c as t,b as e,p as b,I as d,t as u,H as i,f as o,C as p,_ as k}from"./index-BWyw3RAx.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=p();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=k(v,[["__scopeId","data-v-dc516f82"]]);export{A as P};
import{d as _,c as t,b as e,p as b,I as d,t as u,H as i,f as o,C as p,_ as k}from"./index-Dp9sxvBv.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=p();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=k(v,[["__scopeId","data-v-dc516f82"]]);export{A as P};
@@ -1 +1 @@
import{d as B,aM as N,k as P,l as z,f as s,c as t,b as a,m as e,w as F,p as m,I as h,aN as V,i as D,e as _,t as r,N as I,g as S,A as E,_ as M}from"./index-BWyw3RAx.js";const O={class:"pc__art"},q=["alt"],A={key:1,class:"pc__artEmpty","aria-hidden":"true"},L=["aria-label"],T={key:2,class:"pc__flag"},U={key:3,class:"pc__flag pc__flag--soft"},$={class:"pc__title"},j={class:"pc__weight"},G={key:0,class:"pc__meta"},H={key:0,class:"pc__wageOld"},J={class:"pc__wage"},K=B({__name:"ProductCard",props:{value:{},wageBefore:{}},setup(l){const d=l,o=N(),{image:p,id:i,title:u,min_gram:y,wage:f,is_exist:k,qty:w,isPreOrder:x}=P(d.value),g=S(null);function b(){E(d.value,g.value)}function v(n){return n%1===0?String(n):n.toFixed(2)}return(n,c)=>{const C=z("lazy");return s(),t("article",{ref_key:"root",ref:g,class:"pc","data-product-origin":"",onClick:b},[a("div",O,[e(p)?F((s(),t("img",{key:0,alt:e(u)},null,8,q)),[[C,e(p)]]):(s(),t("div",A,[m(h,{icon:"vuesax-linear:diamonds",size:"26"})])),a("button",{type:"button",class:D(["pc__fav",{"is-on":e(o).isFavorite(e(i))}]),"aria-label":e(o).isFavorite(e(i))?"حذف از علاقه‌مندی":"افزودن به علاقه‌مندی",onClick:c[0]||(c[0]=V(Q=>e(o).toggle(e(i)),["stop"]))},[m(h,{icon:e(o).isFavorite(e(i))?"vuesax-linear:heart-fill":"vuesax-linear:heart",size:"16"},null,8,["icon"])],10,L),e(k)?e(x)&&e(w)===0?(s(),t("span",U,"پیش‌سفارش")):_("",!0):(s(),t("span",T,"ناموجود"))]),a("h3",$,r(e(u)),1),a("p",j,[I(r(e(y))+" ",1),c[1]||(c[1]=a("span",{class:"pc__weightUnit"},"گرم",-1))]),e(f)!=null?(s(),t("div",G,[l.wageBefore!=null?(s(),t("span",H,"اجرت "+r(v(l.wageBefore))+"٪",1)):_("",!0),a("span",J,r(v(e(f)))+"٪ اجرت",1)])):_("",!0)],512)}}}),W=M(K,[["__scopeId","data-v-63b56860"]]);export{W as P};
import{d as B,aM as N,k as P,l as z,f as s,c as t,b as a,m as e,w as F,p as m,I as h,aN as V,i as D,e as _,t as r,N as I,g as S,A as E,_ as M}from"./index-Dp9sxvBv.js";const O={class:"pc__art"},q=["alt"],A={key:1,class:"pc__artEmpty","aria-hidden":"true"},L=["aria-label"],T={key:2,class:"pc__flag"},U={key:3,class:"pc__flag pc__flag--soft"},$={class:"pc__title"},j={class:"pc__weight"},G={key:0,class:"pc__meta"},H={key:0,class:"pc__wageOld"},J={class:"pc__wage"},K=B({__name:"ProductCard",props:{value:{},wageBefore:{}},setup(l){const d=l,o=N(),{image:p,id:i,title:u,min_gram:y,wage:f,is_exist:k,qty:w,isPreOrder:x}=P(d.value),g=S(null);function b(){E(d.value,g.value)}function v(n){return n%1===0?String(n):n.toFixed(2)}return(n,c)=>{const C=z("lazy");return s(),t("article",{ref_key:"root",ref:g,class:"pc","data-product-origin":"",onClick:b},[a("div",O,[e(p)?F((s(),t("img",{key:0,alt:e(u)},null,8,q)),[[C,e(p)]]):(s(),t("div",A,[m(h,{icon:"vuesax-linear:diamonds",size:"26"})])),a("button",{type:"button",class:D(["pc__fav",{"is-on":e(o).isFavorite(e(i))}]),"aria-label":e(o).isFavorite(e(i))?"حذف از علاقه‌مندی":"افزودن به علاقه‌مندی",onClick:c[0]||(c[0]=V(Q=>e(o).toggle(e(i)),["stop"]))},[m(h,{icon:e(o).isFavorite(e(i))?"vuesax-linear:heart-fill":"vuesax-linear:heart",size:"16"},null,8,["icon"])],10,L),e(k)?e(x)&&e(w)===0?(s(),t("span",U,"پیش‌سفارش")):_("",!0):(s(),t("span",T,"ناموجود"))]),a("h3",$,r(e(u)),1),a("p",j,[I(r(e(y))+" ",1),c[1]||(c[1]=a("span",{class:"pc__weightUnit"},"گرم",-1))]),e(f)!=null?(s(),t("div",G,[l.wageBefore!=null?(s(),t("span",H,"اجرت "+r(v(l.wageBefore))+"٪",1)):_("",!0),a("span",J,r(v(e(f)))+"٪ اجرت",1)])):_("",!0)],512)}}}),W=M(K,[["__scopeId","data-v-63b56860"]]);export{W as P};
@@ -1 +1 @@
import{d as y,O as b,o as T,s as k,c as l,p as i,z as V,g as p,B,f as n,b as e,I as d,t as a,e as r,i as C,m as P,h as f,C as g,_ as D}from"./index-BWyw3RAx.js";import{P as N}from"./PageBar-D5DXU6sO.js";import{S as h}from"./SectionHead-BiCEpXAe.js";const R={class:"prof"},x={class:"prof__identity"},F={class:"prof__avatar","aria-hidden":"true"},M={class:"prof__name"},O={key:0,class:"prof__mobile"},w={key:0,class:"prof__block"},z={class:"prof__specs"},U={class:"prof__spec"},L={class:"prof__spec"},A={class:"prof__spec"},W={class:"prof__spec"},H={key:1,class:"prof__empty"},$=y({__name:"ProfileView",setup(j){const _={UNVERIFIED:"احراز نشده",STEP_ONE_SUBMITTED:"مرحله اول ثبت شده",STEP_TWO_SUBMITTED:"مرحله دوم ثبت شده",VERIFIED:"تایید شده"},v=b(),s=p(null),u=p(!1),m=f(()=>{var t;return((t=s.value)==null?void 0:t.verificationStep)==="VERIFIED"}),S=f(()=>{var o;const t=(o=s.value)==null?void 0:o.verificationStep;return!!t&&t!=="VERIFIED"&&t!=="STEP_TWO_SUBMITTED"}),E=g();return T(async()=>{if(v.isLoggedIn){u.value=!0;try{s.value=await k.getMe()}finally{u.value=!1}}}),(t,o)=>{const I=B("container");return n(),l("div",R,[i(N,{title:"اطلاعات کاربری","back-to":"userPage::hasSubRoute"}),i(I,{class:"prof__body"},{default:V(()=>{var c;return[e("section",x,[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",O,a(s.value.mobile),1)):r("",!0),s.value?(n(),l("span",{key:1,class:C(["prof__seal",m.value?"is-ok":"is-pending"])},a(_[s.value.verificationStep]??s.value.verificationStep),3)):r("",!0)]),s.value?(n(),l("section",w,[i(h,{title:"مشخصات",subtitle:"اطلاعات ثبت‌شده حساب شما"}),e("dl",z,[e("div",U,[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))])),S.value?(n(),l("button",{key:2,type:"button",class:"prof__complete",onClick:o[0]||(o[0]=q=>P(E).push({name:"completeProfile"}))}," تکمیل پروفایل ")):r("",!0)]}),_:1})])}}}),Q=D($,[["__scopeId","data-v-a13f377b"]]);export{Q as default};
import{d as y,O as b,o as T,s as k,c as l,p as i,z as V,g as p,B,f as n,b as e,I as d,t as a,e as r,i as C,m as P,h as f,C as g,_ as D}from"./index-Dp9sxvBv.js";import{P as N}from"./PageBar-El-laHqK.js";import{S as h}from"./SectionHead-DNG9ywW4.js";const R={class:"prof"},x={class:"prof__identity"},F={class:"prof__avatar","aria-hidden":"true"},M={class:"prof__name"},O={key:0,class:"prof__mobile"},w={key:0,class:"prof__block"},z={class:"prof__specs"},U={class:"prof__spec"},L={class:"prof__spec"},A={class:"prof__spec"},W={class:"prof__spec"},H={key:1,class:"prof__empty"},$=y({__name:"ProfileView",setup(j){const _={UNVERIFIED:"احراز نشده",STEP_ONE_SUBMITTED:"مرحله اول ثبت شده",STEP_TWO_SUBMITTED:"مرحله دوم ثبت شده",VERIFIED:"تایید شده"},v=b(),s=p(null),u=p(!1),m=f(()=>{var t;return((t=s.value)==null?void 0:t.verificationStep)==="VERIFIED"}),S=f(()=>{var o;const t=(o=s.value)==null?void 0:o.verificationStep;return!!t&&t!=="VERIFIED"&&t!=="STEP_TWO_SUBMITTED"}),E=g();return T(async()=>{if(v.isLoggedIn){u.value=!0;try{s.value=await k.getMe()}finally{u.value=!1}}}),(t,o)=>{const I=B("container");return n(),l("div",R,[i(N,{title:"اطلاعات کاربری","back-to":"userPage::hasSubRoute"}),i(I,{class:"prof__body"},{default:V(()=>{var c;return[e("section",x,[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",O,a(s.value.mobile),1)):r("",!0),s.value?(n(),l("span",{key:1,class:C(["prof__seal",m.value?"is-ok":"is-pending"])},a(_[s.value.verificationStep]??s.value.verificationStep),3)):r("",!0)]),s.value?(n(),l("section",w,[i(h,{title:"مشخصات",subtitle:"اطلاعات ثبت‌شده حساب شما"}),e("dl",z,[e("div",U,[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))])),S.value?(n(),l("button",{key:2,type:"button",class:"prof__complete",onClick:o[0]||(o[0]=q=>P(E).push({name:"completeProfile"}))}," تکمیل پروفایل ")):r("",!0)]}),_:1})])}}}),Q=D($,[["__scopeId","data-v-a13f377b"]]);export{Q as default};
@@ -1 +1 @@
import{p as n,j as d}from"./filters-DVocLz3o.js";import{d as l,c as a,i as m,b as s,N as u,t as i,m as c,e as _,h as v,f as r,_ as q}from"./index-BWyw3RAx.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(N,e)=>(r(),a("div",{class:m(["rate-strip",{"is-empty":!t.quote,"rate-strip--compact":t.compact}])},[e[1]||(e[1]=s("div",{class:"rate-strip__label"},[s("span",{class:"rate-strip__dot","aria-hidden":"true"}),u(" نرخ طلای ۱۸ عیار ")],-1)),t.quote?(r(),a("div",f,[s("span",y,i(c(n)(p.value)),1),e[0]||(e[0]=s("span",{class:"rate-strip__unit"},"ریال / گرم",-1))])):(r(),a("div",k,"در انتظار اعلام نرخ")),t.quote?(r(),a("div",x,i(c(d)(t.quote.quotedAt)),1)):_("",!0)],2))}}),h=q(B,[["__scopeId","data-v-563349ab"]]);export{h as R};
import{p as n,j as d}from"./filters-CUgGgSea.js";import{d as l,c as a,i as m,b as s,N as u,t as i,m as c,e as _,h as v,f as r,_ as q}from"./index-Dp9sxvBv.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(N,e)=>(r(),a("div",{class:m(["rate-strip",{"is-empty":!t.quote,"rate-strip--compact":t.compact}])},[e[1]||(e[1]=s("div",{class:"rate-strip__label"},[s("span",{class:"rate-strip__dot","aria-hidden":"true"}),u(" نرخ طلای ۱۸ عیار ")],-1)),t.quote?(r(),a("div",f,[s("span",y,i(c(n)(p.value)),1),e[0]||(e[0]=s("span",{class:"rate-strip__unit"},"ریال / گرم",-1))])):(r(),a("div",k,"در انتظار اعلام نرخ")),t.quote?(r(),a("div",x,i(c(d)(t.quote.quotedAt)),1)):_("",!0)],2))}}),h=q(B,[["__scopeId","data-v-563349ab"]]);export{h 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 @@
.doc[data-v-21825ac9]{padding:18px 2px;background:transparent;border:none;border-bottom:1px solid var(--c-hairline)}.doc[data-v-21825ac9]:last-child{border-bottom:none}.doc__head[data-v-21825ac9]{display:flex;justify-content:space-between;gap:10px;margin-bottom:10px;font-size:13px;font-weight:600}.doc__muted[data-v-21825ac9]{color:var(--c-inkMuted);font-weight:500;margin-left:4px}.doc__rows[data-v-21825ac9]{margin:0;display:flex;flex-direction:column}.doc__row[data-v-21825ac9]{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;border-bottom:1px dashed var(--c-hairlineSoft)}.doc__row[data-v-21825ac9]:last-child{border-bottom:none}.doc__row dt[data-v-21825ac9]{font-size:12.5px;color:var(--c-inkMuted);white-space:nowrap}.doc__row dd[data-v-21825ac9]{margin:0;font-size:13.5px;font-weight:600;text-align:left}.doc__gold[data-v-21825ac9]{display:flex;justify-content:space-between;align-items:center;margin-top:10px;padding-top:10px;border-top:1px dashed var(--c-hairline);font-size:13px;font-weight:700}.doc__stack[data-v-21825ac9]{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.is-in[data-v-21825ac9]{color:var(--c-green)}.is-out[data-v-21825ac9]{color:var(--c-red)}.rep__tabs[data-v-a1c9c13f]{display:flex;gap:24px;padding:0 16px 10px}.rep__tab[data-v-a1c9c13f]{padding:8px 0;border:none;border-bottom:2px solid transparent;background:transparent;font-family:inherit;font-size:14px;font-weight:600;color:var(--c-inkFaint);cursor:pointer}.rep__tab.is-on[data-v-a1c9c13f]{color:var(--c-ink);border-bottom-color:var(--c-wine)}.rep__body[data-v-a1c9c13f]{padding-top:126px;padding-bottom:90px}.rep__list[data-v-a1c9c13f]{display:flex;flex-direction:column;padding-top:8px}.rep__card[data-v-a1c9c13f]{padding:18px 2px;background:transparent;border:none;border-bottom:1px solid var(--c-hairline)}.rep__card[data-v-a1c9c13f]:last-child{border-bottom:none}.rep__head[data-v-a1c9c13f]{display:flex;justify-content:space-between;gap:10px;margin-bottom:12px;font-size:13px;font-weight:600}.rep__muted[data-v-a1c9c13f]{color:var(--c-inkMuted);font-weight:500;margin-left:4px}.rep__pair[data-v-a1c9c13f]{display:flex;justify-content:space-between;align-items:center;padding:8px 0;font-size:13px;color:var(--c-inkMuted)}.rep__pair.is-balance[data-v-a1c9c13f]{padding-top:10px;border-top:1px dashed var(--c-hairline);color:var(--c-ink);font-weight:700}.rep__stack[data-v-a1c9c13f]{display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-weight:600}.is-in[data-v-a1c9c13f]{color:var(--c-green)}.is-out[data-v-a1c9c13f]{color:var(--c-red)}.rep__more[data-v-a1c9c13f],.rep__sentinel[data-v-a1c9c13f]{padding:12px 0;text-align:center;font-size:12px;color:var(--c-inkMuted)}.rep__more[data-v-a1c9c13f]{width:100%;margin-top:6px;border:none;background:transparent;font-family:inherit;font-weight:700;color:var(--c-wine);cursor:pointer}.rep__empty[data-v-a1c9c13f]{margin-top:40px;padding:34px 20px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkMuted);font-size:13px}.rep__retry[data-v-a1c9c13f]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.rep__modal[data-v-a1c9c13f]{padding:20px 16px 24px}.rep__modalEmpty[data-v-a1c9c13f]{padding:24px 0;text-align:center;font-size:13px;color:var(--c-inkMuted)}.rep__close[data-v-a1c9c13f]{margin-top:18px;width:100%;padding:14px;border:none;border-radius:999px;background:var(--c-wine);color:#fff;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
.doc[data-v-21825ac9]{padding:18px 2px;background:transparent;border:none;border-bottom:1px solid var(--c-hairline)}.doc[data-v-21825ac9]:last-child{border-bottom:none}.doc__head[data-v-21825ac9]{display:flex;justify-content:space-between;gap:10px;margin-bottom:10px;font-size:13px;font-weight:600}.doc__muted[data-v-21825ac9]{color:var(--c-inkMuted);font-weight:500;margin-left:4px}.doc__rows[data-v-21825ac9]{margin:0;display:flex;flex-direction:column}.doc__row[data-v-21825ac9]{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;border-bottom:1px dashed var(--c-hairlineSoft)}.doc__row[data-v-21825ac9]:last-child{border-bottom:none}.doc__row dt[data-v-21825ac9]{font-size:12.5px;color:var(--c-inkMuted);white-space:nowrap}.doc__row dd[data-v-21825ac9]{margin:0;font-size:13.5px;font-weight:600;text-align:left}.doc__gold[data-v-21825ac9]{display:flex;justify-content:space-between;align-items:center;margin-top:10px;padding-top:10px;border-top:1px dashed var(--c-hairline);font-size:13px;font-weight:700}.doc__stack[data-v-21825ac9]{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.is-in[data-v-21825ac9]{color:var(--c-green)}.is-out[data-v-21825ac9]{color:var(--c-red)}.rep__tabs[data-v-24011723]{display:flex;gap:24px;padding:0 16px 10px}.rep__tab[data-v-24011723]{padding:8px 0;border:none;border-bottom:2px solid transparent;background:transparent;font-family:inherit;font-size:14px;font-weight:600;color:var(--c-inkFaint);cursor:pointer}.rep__tab.is-on[data-v-24011723]{color:var(--c-ink);border-bottom-color:var(--c-wine)}.rep__body[data-v-24011723]{padding-top:126px;padding-bottom:90px}.rep__list[data-v-24011723]{display:flex;flex-direction:column;padding-top:8px}.rep__card[data-v-24011723]{padding:18px 2px;background:transparent;border:none;border-bottom:1px solid var(--c-hairline)}.rep__card[data-v-24011723]:last-child{border-bottom:none}.rep__head[data-v-24011723]{display:flex;justify-content:space-between;gap:10px;margin-bottom:12px;font-size:13px;font-weight:600}.rep__muted[data-v-24011723]{color:var(--c-inkMuted);font-weight:500;margin-left:4px}.rep__pair[data-v-24011723]{display:flex;justify-content:space-between;align-items:center;padding:8px 0;font-size:13px;color:var(--c-inkMuted)}.rep__pair.is-balance[data-v-24011723]{padding-top:10px;border-top:1px dashed var(--c-hairline);color:var(--c-ink);font-weight:700}.rep__stack[data-v-24011723]{display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-weight:600}.is-in[data-v-24011723]{color:var(--c-green)}.is-out[data-v-24011723]{color:var(--c-red)}.rep__more[data-v-24011723],.rep__sentinel[data-v-24011723]{padding:12px 0;text-align:center;font-size:12px;color:var(--c-inkMuted)}.rep__more[data-v-24011723]{width:100%;margin-top:6px;border:none;background:transparent;font-family:inherit;font-weight:700;color:var(--c-wine);cursor:pointer}.rep__empty[data-v-24011723]{margin-top:40px;padding:34px 20px;display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-inkMuted);font-size:13px}.rep__retry[data-v-24011723]{padding:8px 18px;border-radius:999px;border:1px solid var(--c-hairline);background:var(--c-canvas);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.rep__modal[data-v-24011723]{padding:20px 16px 24px}.rep__modalEmpty[data-v-24011723]{padding:24px 0;text-align:center;font-size:13px;color:var(--c-inkMuted)}.rep__close[data-v-24011723]{margin-top:18px;width:100%;padding:14px;border:none;border-radius:999px;background:var(--c-wine);color:#fff;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
@@ -1 +1 @@
import{d as v,b3 as h,Q as m,f as t,c as l,p as n,I as r,w as f,b4 as b,b as x,b5 as k,e as I,K as w,g as y,_ as C}from"./index-BWyw3RAx.js";const S={class:"si"},V=["placeholder"],B=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()}),(K,o)=>(t(),l("div",S,[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,V),[[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=C(B,[["__scopeId","data-v-8ebd3183"]]);export{z as S};
import{d as v,b3 as h,Q as m,f as t,c as l,p as n,I as r,w as f,b4 as b,b as x,b5 as k,e as I,K as w,g as y,_ as C}from"./index-Dp9sxvBv.js";const S={class:"si"},V=["placeholder"],B=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()}),(K,o)=>(t(),l("div",S,[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,V),[[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=C(B,[["__scopeId","data-v-8ebd3183"]]);export{z as S};
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{d as r,f as t,c as s,b as o,t as a,e as n,N as _,p as d,I as u,_ as b}from"./index-BWyw3RAx.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]=N=>l("action"))},[_(a(e.actionLabel)+" ",1),d(u,{icon:"vuesax-linear:arrow-left-2",size:"15"})])):n("",!0)]))}}),y=b(k,[["__scopeId","data-v-e5c65b7c"]]);export{y as S};
import{d as r,f as t,c as s,b as o,t as a,e as n,N as _,p as d,I as u,_ as b}from"./index-Dp9sxvBv.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]=N=>l("action"))},[_(a(e.actionLabel)+" ",1),d(u,{icon:"vuesax-linear:arrow-left-2",size:"15"})])):n("",!0)]))}}),y=b(k,[["__scopeId","data-v-e5c65b7c"]]);export{y as S};
@@ -1 +1 @@
import{d as k,O as A,o as C,s as D,c as i,p as _,z as f,J as w,j as L,m as E,e as m,g as u,f as l,F as y,b as s,r as N,I as g,t as o,i as p,B as M,_ as O}from"./index-BWyw3RAx.js";import{P}from"./PageBar-D5DXU6sO.js";import{S as B}from"./SectionHead-BiCEpXAe.js";import{j as R,p as U}from"./filters-DVocLz3o.js";import{D as I}from"./index-sLHXZqt3.js";import"./KeyCode-CA5MXqE7.js";import"./classCallCheck-Ou87VTNv.js";import"./raf-nDFcuFT6.js";const V={class:"tx"},$={class:"tx__list"},z=["onClick"],Y={class:"tx__main"},j={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=k({__name:"TransactionsView",setup(os){const x={ORDER_STOCK:"سفارش",ORDER_PRE_ORDER:"سفارش ساخت",REPAYMENT_MELTED_GOLD:"طلای آب‌شده",REPAYMENT_TRANSFER:"حواله",REPAYMENT_CHEQUE:"چک",REPAYMENT_CASH:"پولی",WALLET_BONUS:"پاداش",ADJUSTMENT:"اصلاحیه"},T=A(),r=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 C(async()=>{if(T.isLoggedIn){r.value=!0;try{d.value=await D.getMyLedgerEntries()}finally{r.value=!1}}}),(a,e)=>{const b=M("container");return l(),i("div",V,[_(P,{title:"اسناد","back-to":"userPage::hasSubRoute"}),_(w,{spinning:r.value,tip:"درحال دریافت اطلاعات"},{default:f(()=>[_(b,{class:"tx__body"},{default:f(()=>[d.value.length?(l(),i(y,{key:0},[_(B,{title:"گردش حساب",subtitle:`${d.value.length} سند`},null,8,["subtitle"]),s("div",$,[(l(!0),i(y,null,N(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"},[_(g,{icon:c(t)?"vuesax-linear:arrow-down":"vuesax-linear:arrow-up",size:"16"},null,8,["icon"])],2),s("div",Y,[s("div",j,[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,z))),128))])],64)):r.value?m("",!0):(l(),i("section",K,[_(g,{icon:"vuesax-linear:receipt-text",size:"26"}),e[1]||(e[1]=s("p",null,"سندی برای حساب شما ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"]),n.value?(l(),L(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=O(ts,[["__scopeId","data-v-3923099b"]]);export{ps as default};
import{d as k,O as A,o as C,s as D,c as i,p as _,z as f,J as w,j as L,m as E,e as m,g as u,f as l,F as y,b as s,r as N,I as g,t as o,i as p,B as M,_ as O}from"./index-Dp9sxvBv.js";import{P}from"./PageBar-El-laHqK.js";import{S as B}from"./SectionHead-DNG9ywW4.js";import{j as R,p as U}from"./filters-CUgGgSea.js";import{D as I}from"./index-UuozCFb-.js";import"./KeyCode-DAs3W-5E.js";import"./classCallCheck-BTVV3tFI.js";import"./raf-nDFcuFT6.js";const V={class:"tx"},$={class:"tx__list"},z=["onClick"],Y={class:"tx__main"},j={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=k({__name:"TransactionsView",setup(os){const x={ORDER_STOCK:"سفارش",ORDER_PRE_ORDER:"سفارش ساخت",REPAYMENT_MELTED_GOLD:"طلای آب‌شده",REPAYMENT_TRANSFER:"حواله",REPAYMENT_CHEQUE:"چک",REPAYMENT_CASH:"پولی",WALLET_BONUS:"پاداش",ADJUSTMENT:"اصلاحیه"},T=A(),r=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 C(async()=>{if(T.isLoggedIn){r.value=!0;try{d.value=await D.getMyLedgerEntries()}finally{r.value=!1}}}),(a,e)=>{const b=M("container");return l(),i("div",V,[_(P,{title:"اسناد","back-to":"userPage::hasSubRoute"}),_(w,{spinning:r.value,tip:"درحال دریافت اطلاعات"},{default:f(()=>[_(b,{class:"tx__body"},{default:f(()=>[d.value.length?(l(),i(y,{key:0},[_(B,{title:"گردش حساب",subtitle:`${d.value.length} سند`},null,8,["subtitle"]),s("div",$,[(l(!0),i(y,null,N(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"},[_(g,{icon:c(t)?"vuesax-linear:arrow-down":"vuesax-linear:arrow-up",size:"16"},null,8,["icon"])],2),s("div",Y,[s("div",j,[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,z))),128))])],64)):r.value?m("",!0):(l(),i("section",K,[_(g,{icon:"vuesax-linear:receipt-text",size:"26"}),e[1]||(e[1]=s("p",null,"سندی برای حساب شما ثبت نشده است.",-1))]))]),_:1})]),_:1},8,["spinning"]),n.value?(l(),L(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=O(ts,[["__scopeId","data-v-3923099b"]]);export{ps as default};
@@ -1 +1 @@
import{a0 as n}from"./index-BWyw3RAx.js";function l(a,t){for(var r=n({},a),e=0;e<t.length;e+=1){var o=t[e];delete r[o]}return r}function c(a,t,r){return Object.defineProperty(a,"prototype",{writable:!1}),a}function f(a,t){if(!(a instanceof t))throw new TypeError("Cannot call a class as a function")}export{c as _,f as a,l as o};
import{a0 as n}from"./index-Dp9sxvBv.js";function l(a,t){for(var r=n({},a),e=0;e<t.length;e+=1){var o=t[e];delete r[o]}return r}function c(a,t,r){return Object.defineProperty(a,"prototype",{writable:!1}),a}function f(a,t){if(!(a instanceof t))throw new TypeError("Cannot call a class as a function")}export{c as _,f as a,l as o};
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{d as H,b6 as v,p as n,b7 as w,b8 as A,b9 as P,h as B,ba as C,bb as L,bc as _,bd as N,Q as U,be as M,g as D,K as R,bf as Y,x as F,bg as S,bh as G,bi as K}from"./index-BWyw3RAx.js";const[Q,h]=P("loading"),X=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)]),q={size:v,type:A("circular"),color:String,vertical:Boolean,textSize:v,textColor:String};var J=H({name:Q,props:q,setup(t,{slots:l}){const o=B(()=>C({color:t.color},L(t.size))),c=()=>{const i=t.type==="spinner"?X: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:w(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 O=_(J),[W,f,Z]=P("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=H({name:W,props:te,emits:["change","refresh","update:modelValue"],setup(t,{emit:l,slots:o}){let c;const g=D(),i=D(),m=N(g),a=R({status:"normal",distance:0,duration:0}),r=K(),p=()=>{if(t.headHeight!==k)return{height:`${t.headHeight}px`}},T=()=>a.status!=="loading"&&a.status!=="success"&&!t.disabled,$=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(O,{class:f("loading")},{default:x})),d},E=()=>{a.status="success",setTimeout(()=>{u(0)},+t.successDuration)},b=e=>{c=G(m.value)===0,c&&(a.duration=0,r.start(e))},I=e=>{T()&&b(e)},V=e=>{if(T()){c||b(e);const{deltaY:s}=r;r.move(e),c&&s.value>=0&&r.isVertical()&&(Y(e),u($(s.value)))}},y=()=>{c&&r.deltaY.value&&T()&&(a.duration=+t.animationDuration,a.status==="loosing"?(u(+t.headHeight,!0),l("update:modelValue",!0),F(()=>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:y,onTouchcancel:y},[n("div",{class:f("head"),style:p()},[z()]),(e=o.default)==null?void 0:e.call(o)])])}}});const ne=_(ae);export{O as L,ne as P};
import{d as H,b6 as v,p as n,b7 as w,b8 as A,b9 as P,h as B,ba as C,bb as L,bc as _,bd as N,Q as U,be as M,g as D,K as R,bf as Y,x as F,bg as S,bh as G,bi as K}from"./index-Dp9sxvBv.js";const[Q,h]=P("loading"),X=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)]),q={size:v,type:A("circular"),color:String,vertical:Boolean,textSize:v,textColor:String};var J=H({name:Q,props:q,setup(t,{slots:l}){const o=B(()=>C({color:t.color},L(t.size))),c=()=>{const i=t.type==="spinner"?X: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:w(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 O=_(J),[W,f,Z]=P("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=H({name:W,props:te,emits:["change","refresh","update:modelValue"],setup(t,{emit:l,slots:o}){let c;const g=D(),i=D(),m=N(g),a=R({status:"normal",distance:0,duration:0}),r=K(),p=()=>{if(t.headHeight!==k)return{height:`${t.headHeight}px`}},T=()=>a.status!=="loading"&&a.status!=="success"&&!t.disabled,$=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(O,{class:f("loading")},{default:x})),d},E=()=>{a.status="success",setTimeout(()=>{u(0)},+t.successDuration)},b=e=>{c=G(m.value)===0,c&&(a.duration=0,r.start(e))},I=e=>{T()&&b(e)},V=e=>{if(T()){c||b(e);const{deltaY:s}=r;r.move(e),c&&s.value>=0&&r.isVertical()&&(Y(e),u($(s.value)))}},y=()=>{c&&r.deltaY.value&&T()&&(a.duration=+t.animationDuration,a.status==="loosing"?(u(+t.headHeight,!0),l("update:modelValue",!0),F(()=>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:y,onTouchcancel:y},[n("div",{class:f("head"),style:p()},[z()]),(e=o.default)==null?void 0:e.call(o)])])}}});const ne=_(ae);export{O 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
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -32,10 +32,10 @@
html.theme-dark, html.theme-dark body { background-color: #15171A !important; }
</style>
<title>طلای منتزر</title>
<script type="module" crossorigin src="/assets/index-BWyw3RAx.js"></script>
<script type="module" crossorigin src="/assets/index-Dp9sxvBv.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-CCuOiiOn.css">
<link rel="manifest" href="/manifest.webmanifest"></head>
<body style="background-color: #1C2D56">
<body style="background-color: #ffffff">
<div class="w-screen h-screen fixed" style="background-color: var(--c-page, #fff)"></div>
<div id="app"></div>␍
</body>
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -33,7 +33,7 @@
</style>
<title>طلای منتزر</title>
</head>
<body style="background-color: #1C2D56">
<body style="background-color: #ffffff">
<div class="w-screen h-screen fixed" style="background-color: var(--c-page, #fff)"></div>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
+11
View File
@@ -279,6 +279,15 @@ export interface ReportBalance {
arz: string;
mandeh: string;
}
/** GET /customer/me/accounting-balance. Signed like the app: positive = owes. */
export interface AccountingBalance {
source: 'accounting' | 'stored' | 'none'
gold: string | null
rial: string | null
at: string | null
provider: string | null
}
export const api = {
listProducts: () => request<ProductSummary[]>('/catalog/products'),
/**
@@ -307,6 +316,8 @@ export const api = {
// /customers/:id, /:id/orders and /:id/ledger-entries, which took the id from
// the URL and let anyone read anyone (SEC-08).
getMe: () => request<CustomerDetail>('/customer/me'),
/** D27 §12 — this customer's balance, read from the accounting software on every call. */
getAccountingBalance: () => request<AccountingBalance>('/customer/me/accounting-balance'),
getMyOrders: () => request<OrderDetail[]>('/customer/me/orders'),
getMyLedgerEntries: () => request<LedgerEntrySummary[]>('/customer/me/ledger-entries'),
createOrder: (dto: CreateOrderDto) => request<OrderSummary>('/orders', { method: 'POST', body: JSON.stringify(dto) }),
+8
View File
@@ -1,6 +1,8 @@
import { createApp } from 'vue';
import { createPinia } from 'pinia';
import VueLazyLoad from 'vue3-lazyload';
import { Locale } from 'vant';
import faIR from 'vant/es/locale/lang/fa-IR';
import App from './App.vue';
import { router } from './router';
import { setUnauthorizedHandler } from './api/client';
@@ -9,6 +11,12 @@ import { useAppearanceStore } from './stores/appearanceStore';
import Container from './components/ui/Container.vue';
import Vector from './assets/img/Vector.svg';
// Vant defaults to zh-CN. Every view in this app is Persian (RTL), so any
// Vant component rendering its own built-in text (PullRefresh's
// pulling/loosing labels, etc.) would otherwise show untranslated Chinese —
// switch to Vant's own fa-IR locale before anything mounts.
Locale.use('fa-IR', faIR);
// Global styles, ported from legacy henza_pwa/src/main.ts — same import order
// (ant-design-vue's own theme first, then our Less overrides on top). Legacy
// imported 'vant/lib/index.css' twice (a dead duplicate) — imported once here.
@@ -37,6 +37,10 @@
<Spinner :spinning="loading && !rows.length" tip="درحال دریافت اطلاعات">
<PullRefresh v-model="refreshing" @refresh="onRefresh">
<template #pulling><Loading size="18" /></template>
<template #loosing><Loading size="18" /></template>
<template #loading><Loading size="18" /></template>
<template #success><span /></template>
<container class="cho__body">
<template v-if="rows.length">
<div class="cho__list">
@@ -142,7 +146,7 @@
<script setup lang="ts">
import { onBeforeUnmount, onMounted, ref } from 'vue'
import { Drawer } from 'ant-design-vue'
import { PullRefresh } from 'vant'
import { Loading, PullRefresh } from 'vant'
import Icon from '../../components/icon/Icon.vue'
import PageBar from '../../components/ui/PageBar.vue'
import Spinner from '../../components/Spinner.vue'
@@ -38,6 +38,10 @@
<Spinner :spinning="loading && !rows.length" tip="درحال دریافت اطلاعات">
<PullRefresh v-model="refreshing" @refresh="onRefresh">
<template #pulling><Loading size="18" /></template>
<template #loosing><Loading size="18" /></template>
<template #loading><Loading size="18" /></template>
<template #success><span /></template>
<container class="cch__body">
<div v-if="rows.length" class="cch__list">
<article
@@ -132,7 +136,7 @@
<script setup lang="ts">
import { onMounted, ref } from 'vue'
import { Drawer } from 'ant-design-vue'
import { PullRefresh } from 'vant'
import { Loading, PullRefresh } from 'vant'
import Icon from '../../components/icon/Icon.vue'
import PageBar from '../../components/ui/PageBar.vue'
import Spinner from '../../components/Spinner.vue'
@@ -53,6 +53,10 @@
<Spinner :spinning="loading && !rows.length && !details.length" tip="درحال دریافت اطلاعات">
<PullRefresh v-model="refreshing" @refresh="onRefresh">
<template #pulling><Loading size="18" /></template>
<template #loosing><Loading size="18" /></template>
<template #loading><Loading size="18" /></template>
<template #success><span /></template>
<container class="rep__body">
<!-- ── کلیات حساب ─────────────────────────────────────────── -->
<template v-if="activeKey === '1'">
@@ -147,7 +151,7 @@
import { onBeforeUnmount, onMounted, ref } from 'vue'
import { useRoute } from 'vue-router'
import { Drawer } from 'ant-design-vue'
import { PullRefresh } from 'vant'
import { Loading, PullRefresh } from 'vant'
import Icon from '../../components/icon/Icon.vue'
import PageBar from '../../components/ui/PageBar.vue'
import Spinner from '../../components/Spinner.vue'
@@ -291,7 +291,15 @@ function logOut() {
async function loadDashboard() {
if (session.isLoggedIn) {
customer.value = await api.getMe()
// Not wrapped before: a failure here (expired token, network blip) left
// the exception uncaught, so onRefresh's refreshing.value = false never
// ran and PullRefresh stayed stuck in its loading state — a working pull
// gesture never dismissed it again until a full page reload.
try {
customer.value = await api.getMe()
} catch (e) {
console.log(e)
}
}
try {
goldPrice.value = await api.getLatestGoldPrice()
@@ -49,6 +49,10 @@
<Spinner :spinning="loading" tip="درحال دریافت اطلاعات">
<PullRefresh v-model="refreshing" @refresh="onRefresh">
<template #pulling><Loading size="18" /></template>
<template #loosing><Loading size="18" /></template>
<template #loading><Loading size="18" /></template>
<template #success><span /></template>
<container class="ord__body">
<template v-if="filteredOrders.length">
<div class="ord__list">
@@ -145,7 +149,7 @@
<script setup lang="ts">
import { computed, onMounted, reactive, ref } from 'vue'
import { Drawer } from 'ant-design-vue'
import { PullRefresh } from 'vant'
import { Loading, PullRefresh } from 'vant'
import Icon from '../../components/icon/Icon.vue'
import PageBar from '../../components/ui/PageBar.vue'
import Spinner from '../../components/Spinner.vue'
@@ -56,6 +56,25 @@
</dl>
</section>
<!-- D27 §12: the balance in the accounting software, re-read on every visit. -->
<section v-if="balance && balance.source !== 'none'" class="prof__block">
<SectionHead title="مانده‌ی حساب" :subtitle="balanceSubtitle" />
<dl class="prof__specs">
<div class="prof__spec">
<dt>مانده‌ی طلا</dt>
<dd :class="sideClass(balance.gold)">{{ grams(balance.gold) }} <small>{{ sideLabel(balance.gold) }}</small></dd>
</div>
<div class="prof__spec">
<dt>مانده‌ی ریالی</dt>
<dd :class="sideClass(balance.rial)">{{ rials(balance.rial) }} <small>{{ sideLabel(balance.rial) }}</small></dd>
</div>
</dl>
</section>
<section v-else-if="balanceLoading" class="prof__block">
<SectionHead title="مانده‌ی حساب" subtitle="در حال دریافت از حسابداری…" />
<div class="prof__specs prof__skeleton" />
</section>
<section v-else-if="!loading" class="prof__empty">
<Icon icon="vuesax-linear:user" size="26" />
<p>اطلاعات حساب در دسترس نیست.</p>
@@ -85,7 +104,7 @@ import Icon from '../../components/icon/Icon.vue'
import PageBar from '../../components/ui/PageBar.vue'
import SectionHead from '../../components/home/SectionHead.vue'
import { useSessionStore } from '../../stores/session'
import { api, type CustomerDetail } from '../../api/client'
import { api, type AccountingBalance, type CustomerDetail } from '../../api/client'
const VERIFICATION_LABELS: Record<string, string> = {
UNVERIFIED: 'احراز نشده',
@@ -112,8 +131,38 @@ const canCompleteProfile = computed(() => {
const router = useRouter()
// D27 §12 — fetched on its own, every time the page opens, so a slow
// accounting server never holds up the profile itself.
const balance = ref<AccountingBalance | null>(null)
const balanceLoading = ref(false)
const num = (v: string | null) => Number(v ?? 0)
const sideLabel = (v: string | null) => (num(v) > 0 ? 'بدهکار' : num(v) < 0 ? 'بستانکار' : '')
const sideClass = (v: string | null) => (num(v) > 0 ? 'is-debt' : num(v) < 0 ? 'is-credit' : '')
const grams = (v: string | null) =>
`${Math.abs(num(v)).toLocaleString('fa-IR', { maximumFractionDigits: 3 })} گرم`
const rials = (v: string | null) => `${Math.abs(num(v)).toLocaleString('fa-IR')} ریال`
const balanceSubtitle = computed(() => {
const b = balance.value
if (!b?.at) return ''
const when = new Date(b.at).toLocaleString('fa-IR', { dateStyle: 'short', timeStyle: 'short' })
return b.source === 'stored' ? `آخرین مانده‌ی ثبت‌شده — ${when}` : `از ${b.provider ?? 'حسابداری'} — ${when}`
})
async function loadBalance() {
balanceLoading.value = true
try {
balance.value = await api.getAccountingBalance()
} catch {
balance.value = null
} finally {
balanceLoading.value = false
}
}
onMounted(async () => {
if (!session.isLoggedIn) return
void loadBalance()
loading.value = true
try {
customer.value = await api.getMe()
@@ -225,6 +274,24 @@ onMounted(async () => {
text-align: left;
}
.prof__spec dd.is-debt {
color: @wine;
}
.prof__spec dd.is-credit {
color: @green;
}
.prof__spec dd small {
font-weight: 500;
font-size: 11px;
}
.prof__skeleton {
height: 92px;
background: @hairlineSoft;
}
.prof__empty {
margin-top: 26px;
padding: 34px 20px;