changes 1

This commit is contained in:
2026-10-29 15:26:08 +03:30
parent 5141ce8073
commit 4efb4e6ab1
116 changed files with 70120 additions and 9299 deletions
@@ -1 +1 @@
import{D as e,G as t,K as n,M as r,Pt as i,U as a,_ as o,d as s,f as c,g as l,l as u,nt as d,o as f,t as p,u as m,v as h}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{s as g,u as _}from"./BasicIcon-ba1FsUKx.js";import{t as v}from"./http-CU_N-R2R.js";import{f as y,r as b}from"./index-CON313Q2.js";import{t as x}from"./addresses-tV-zgZYG.js";import{t as S}from"./catalogRequests-COPPKp3x.js";var C=`درخواست دریافت فیزیکی کالیته برای شما ثبت شد و به زودی همکاران ما برای شما خواهند آورد`;function w(){let e=S(),t=y(),n=d(!1),r=d(!1),i=d(null),a=d(``);function o(){r.value=!1,i.value=null,a.value=``}async function s(n,r){let i=await e.create({items:[{productId:n.id,productName:n.name,productCode:n.code,quantity:1}],note:`آدرس: ${r}`});return i.success?(t.show(C),!0):(a.value=i.message,!1)}async function c(e){a.value=``;let t=``;try{let e=await x.list();t=(e.find(e=>e.isDefault)??e[0])?.text.trim()??``}catch{t=``}if(t){n.value=!0;try{await s(e,t)}finally{n.value=!1}return}i.value=e,r.value=!0}async function l(e){let t=e.trim();if(!t)return a.value=`آدرس الزامی است.`,!1;let r=i.value;if(!r)return!1;a.value=``,n.value=!0;try{await x.create({text:t});let e=await s(r,t);return e&&o(),e}catch(e){return a.value=e instanceof v||e instanceof Error?e.message:`ذخیره آدرس ناموفق بود.`,!1}finally{n.value=!1}}return{requesting:n,addressModalOpen:r,addressError:a,requestCatalog:c,submitAddressAndRequest:l,closeAddressModal:o}}var T={class:`dialog card address-modal`},E={class:`address-modal__field`},D={key:0,class:`address-modal__error`},O={class:`dialog-actions address-modal__actions`},k=p(h({__name:`AddressCompletionModal`,props:{open:{type:Boolean},loading:{type:Boolean},error:{}},emits:[`close`,`submit`],setup(p,{emit:h}){let v=p,y=h,x=d(``);a(()=>v.open,e=>{e&&(x.value=``)});function S(e){e.key===`Escape`&&v.open&&y(`close`)}a(()=>v.open,e=>{document.body.style.overflow=e?`hidden`:``,e?window.addEventListener(`keydown`,S):window.removeEventListener(`keydown`,S)},{immediate:!0}),e(()=>{document.body.style.overflow=``,window.removeEventListener(`keydown`,S)});function C(){y(`submit`,x.value)}return(e,a)=>(r(),m(f,{to:`body`},[p.open?(r(),c(`div`,{key:0,class:`dialog-overlay address-modal-overlay`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`address-modal-title`,onClick:a[2]||=_(e=>y(`close`),[`self`])},[u(`div`,T,[a[5]||=u(`h3`,{id:`address-modal-title`,class:`address-modal__title`},`تکمیل آدرس`,-1),a[6]||=u(`p`,{class:`address-modal__hint`},` برای ارسال کالیته فیزیکی، آدرس محل فعالیت خود را وارد کنید. این آدرس در اطلاعات کاربری شما ذخیره می‌شود. `,-1),u(`label`,E,[a[3]||=u(`span`,{class:`form-label`},`آدرس`,-1),n(u(`textarea`,{"onUpdate:modelValue":a[0]||=e=>x.value=e,class:`address-modal__textarea`,rows:`3`,maxlength:`500`,placeholder:`آدرس کامل محل فعالیت`},null,512),[[g,x.value]])]),p.error?(r(),c(`p`,D,i(p.error),1)):s(``,!0),u(`div`,O,[o(b,{variant:`outline`,disabled:p.loading,onClick:a[1]||=e=>y(`close`)},{default:t(()=>[...a[4]||=[l(` انصراف `,-1)]]),_:1},8,[`disabled`]),o(b,{disabled:p.loading,onClick:C},{default:t(()=>[l(i(p.loading?`در حال ثبت...`:`ثبت درخواست`),1)]),_:1},8,[`disabled`])])])])):s(``,!0)]))}}),[[`__scopeId`,`data-v-0a7c2418`]]);export{w as n,k as t};
import{D as e,G as t,K as n,M as r,Pt as i,U as a,_ as o,d as s,f as c,g as l,l as u,nt as d,o as f,t as p,u as m,v as h}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{l as g,o as _}from"./BasicIcon-DPmc0iaK.js";import{t as v}from"./http-CU_N-R2R.js";import{r as y,u as b}from"./index-DYwnTikp.js";import{t as x}from"./catalogRequests-COPPKp3x.js";import{t as S}from"./addresses-tV-zgZYG.js";var C=`درخواست دریافت فیزیکی کالیته برای شما ثبت شد و به زودی همکاران ما برای شما خواهند آورد`;function w(){let e=x(),t=b(),n=d(!1),r=d(!1),i=d(null),a=d(``);function o(){r.value=!1,i.value=null,a.value=``}async function s(n,r){let i=await e.create({items:[{productId:n.id,productName:n.name,productCode:n.code,quantity:1}],note:`آدرس: ${r}`});return i.success?(t.show(C),!0):(a.value=i.message,!1)}async function c(e){a.value=``;let t=``;try{let e=await S.list();t=(e.find(e=>e.isDefault)??e[0])?.text.trim()??``}catch{t=``}if(t){n.value=!0;try{await s(e,t)}finally{n.value=!1}return}i.value=e,r.value=!0}async function l(e){let t=e.trim();if(!t)return a.value=`آدرس الزامی است.`,!1;let r=i.value;if(!r)return!1;a.value=``,n.value=!0;try{await S.create({text:t});let e=await s(r,t);return e&&o(),e}catch(e){return a.value=e instanceof v||e instanceof Error?e.message:`ذخیره آدرس ناموفق بود.`,!1}finally{n.value=!1}}return{requesting:n,addressModalOpen:r,addressError:a,requestCatalog:c,submitAddressAndRequest:l,closeAddressModal:o}}var T={class:`dialog card address-modal`},E={class:`address-modal__field`},D={key:0,class:`address-modal__error`},O={class:`dialog-actions address-modal__actions`},k=p(h({__name:`AddressCompletionModal`,props:{open:{type:Boolean},loading:{type:Boolean},error:{}},emits:[`close`,`submit`],setup(p,{emit:h}){let v=p,b=h,x=d(``);a(()=>v.open,e=>{e&&(x.value=``)});function S(e){e.key===`Escape`&&v.open&&b(`close`)}a(()=>v.open,e=>{document.body.style.overflow=e?`hidden`:``,e?window.addEventListener(`keydown`,S):window.removeEventListener(`keydown`,S)},{immediate:!0}),e(()=>{document.body.style.overflow=``,window.removeEventListener(`keydown`,S)});function C(){b(`submit`,x.value)}return(e,a)=>(r(),m(f,{to:`body`},[p.open?(r(),c(`div`,{key:0,class:`dialog-overlay address-modal-overlay`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`address-modal-title`,onClick:a[2]||=g(e=>b(`close`),[`self`])},[u(`div`,T,[a[5]||=u(`h3`,{id:`address-modal-title`,class:`address-modal__title`},`تکمیل آدرس`,-1),a[6]||=u(`p`,{class:`address-modal__hint`},` برای ارسال کالیته فیزیکی، آدرس محل فعالیت خود را وارد کنید. این آدرس در اطلاعات کاربری شما ذخیره می‌شود. `,-1),u(`label`,E,[a[3]||=u(`span`,{class:`form-label`},`آدرس`,-1),n(u(`textarea`,{"onUpdate:modelValue":a[0]||=e=>x.value=e,class:`address-modal__textarea`,rows:`3`,maxlength:`500`,placeholder:`آدرس کامل محل فعالیت`},null,512),[[_,x.value]])]),p.error?(r(),c(`p`,D,i(p.error),1)):s(``,!0),u(`div`,O,[o(y,{variant:`outline`,disabled:p.loading,onClick:a[1]||=e=>b(`close`)},{default:t(()=>[...a[4]||=[l(` انصراف `,-1)]]),_:1},8,[`disabled`]),o(y,{disabled:p.loading,onClick:C},{default:t(()=>[l(i(p.loading?`در حال ثبت...`:`ثبت درخواست`),1)]),_:1},8,[`disabled`])])])])):s(``,!0)]))}}),[[`__scopeId`,`data-v-0a7c2418`]]);export{w as n,k as t};
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{I as e,M as t,_ as n,d as r,f as i,l as a,t as o,ut as s,v as c}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{w as l}from"./index-CON313Q2.js";import{t as u}from"./IconChevronBack-DytWz6TD.js";import{t as d}from"./nademitex-auth-logo-CQhPwje_.js";var f={class:`auth-shell`},p={class:`auth-shell__body`},m={class:`auth-shell__brand`},h=[`src`],g=o(c({__name:`AuthShell`,props:{backTo:{}},setup(o){let c=l();return(l,g)=>(t(),i(`div`,f,[o.backTo?(t(),i(`button`,{key:0,type:`button`,class:`auth-shell__back`,"aria-label":`بازگشت`,onClick:g[0]||=e=>s(c).push(o.backTo)},[n(u,{size:22,color:`#1e293b`})])):r(``,!0),a(`div`,p,[a(`div`,m,[a(`img`,{class:`auth-shell__logo`,src:s(d),alt:`Nademi Tex`,draggable:`false`},null,8,h)]),e(l.$slots,`default`,{},void 0,!0)])]))}}),[[`__scopeId`,`data-v-3dfa06a5`]]);export{g as t};
import{I as e,M as t,_ as n,d as r,f as i,l as a,t as o,ut as s,v as c}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{C as l}from"./index-DYwnTikp.js";import{t as u}from"./IconChevronBack-BsHmfODG.js";import{t as d}from"./nademitex-auth-logo-CQhPwje_.js";var f={class:`auth-shell`},p={class:`auth-shell__body`},m={class:`auth-shell__brand`},h=[`src`],g=o(c({__name:`AuthShell`,props:{backTo:{}},setup(o){let c=l();return(l,g)=>(t(),i(`div`,f,[o.backTo?(t(),i(`button`,{key:0,type:`button`,class:`auth-shell__back`,"aria-label":`بازگشت`,onClick:g[0]||=e=>s(c).push(o.backTo)},[n(u,{size:22,color:`#1e293b`})])):r(``,!0),a(`div`,p,[a(`div`,m,[a(`img`,{class:`auth-shell__logo`,src:s(d),alt:`Nademi Tex`,draggable:`false`},null,8,h)]),e(l.$slots,`default`,{},void 0,!0)])]))}}),[[`__scopeId`,`data-v-3dfa06a5`]]);export{g as t};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
import{F as e,G as t,M as n,Pt as r,U as i,_ as a,c as o,f as s,g as c,i as l,l as u,nt as d,t as ee,ut as f,v as p}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{i as te,n as ne}from"./format-C72AoJ2H.js";import{t as re}from"./catalog-DWpH1dVc.js";import{m,r as h,t as g,w as ie}from"./index-CON313Q2.js";import"./constants-ptWoEwwP.js";import{t as ae}from"./PageHeader-juIsDT9M.js";import{t as oe}from"./useRequirePricedOrder-BCNEyr9h.js";var se={class:`page cash-mobile-page mobile-only`},ce={class:`cash-page__scroll page__scroll`},le={class:`cash-page__success cash-page__success--done`},ue={class:`cash-page__success-title`},de={class:`cash-page__success-subtitle`},_={class:`accounts-panel`},v={class:`accounts-panel__title`},y={class:`bank-card__head`},b={class:`bank-card__name`},x={class:`bank-card__icon`,"aria-hidden":`true`},S={class:`bank-card__field`},C={class:`bank-card__value`,dir:`ltr`},w={class:`bank-card__field`},T={class:`bank-card__value`,dir:`ltr`},E={class:`cash-page__footer`},D={class:`desktop-checkout-shell cash-desktop-page desktop-only`},O={class:`desktop-page__head`},k={class:`desktop-page__subtitle`},A={class:`cash-page__success cash-page__success--done`},j={class:`cash-page__success-title`},M={class:`accounts-panel`},N={class:`accounts-panel__title`},P={class:`desktop-grid-2`},F={class:`bank-card__head`},fe={class:`bank-card__name`},I={class:`bank-card__icon`,"aria-hidden":`true`},L={class:`bank-card__field`},R={class:`bank-card__value`,dir:`ltr`},z={class:`bank-card__field`},B={class:`bank-card__value`,dir:`ltr`},V={class:`cash-desktop-page__actions`},H=ee(p({__name:`CashSettlementView`,setup(ee){let p=ie(),H=m(),U=re(),W=d([]),{orderId:G,order:K}=oe(),pe=o(()=>U.companies.find(e=>e.slug===`nademitex`)?.name??`نادمی تکس`);i(G,async e=>{e&&!H.getOrderById(e)&&await H.fetchOrder(e)},{immediate:!0}),i(()=>K.value?.id,async e=>{if(!e||!K.value){W.value=[];return}U.companies.length||await U.loadCompanies(),W.value=await H.getBankAccountsForOrder(K.value)},{immediate:!0});let q=o(()=>K.value?.finalAmount?ne(K.value.finalAmount):`—`),J=o(()=>{let e=K.value?.cashInvoiceExpiresAt;return e?`مهلت پرداخت این فاکتور تا ${te(e)} است.`:`مبلغ فاکتور را به یکی از حساب‌های زیر واریز و رسید را ثبت کنید.`}),Y=o(()=>`شماره حساب‌های واریز — ${pe.value}`);function X(e){return e.replace(/\D/g,``).replace(/(\d{4})(?=\d)/g,`$1 `).trim()}function Z(e){return e.replace(/\s/g,``).toUpperCase().replace(/(.{4})/g,`$1 `).trim()}function Q(){p.replace(`/orders/${G.value}?track=1`)}function $(){p.replace(`/orders/${G.value}?track=1&receipt=1`)}return(i,o)=>(n(),s(l,null,[u(`div`,se,[a(ae,{title:`تسویه نقدی`,"show-back":``,centered:``,onBack:o[0]||=e=>f(p).push(`/orders/${f(G)}`)}),u(`div`,ce,[u(`div`,le,[a(g,{size:56}),u(`p`,ue,`مبلغ قابل پرداخت `+r(q.value),1),u(`p`,de,r(J.value),1)]),u(`section`,_,[u(`h2`,v,r(Y.value),1),(n(!0),s(l,null,e(W.value,e=>(n(),s(`article`,{key:e.id,class:`bank-card`},[u(`div`,y,[u(`span`,b,r(e.bankName),1),u(`span`,x,r(e.bankName.charAt(0)),1)]),u(`div`,S,[o[1]||=u(`span`,{class:`bank-card__label`},`شماره کارت`,-1),u(`strong`,C,r(X(e.cardNumber)),1)]),u(`div`,w,[o[2]||=u(`span`,{class:`bank-card__label`},`شماره شبا`,-1),u(`strong`,T,r(Z(e.iban)),1)])]))),128))])]),u(`div`,E,[a(h,{variant:`outline`,block:``,onClick:Q},{default:t(()=>[...o[3]||=[c(`مشاهده سفارش`,-1)]]),_:1}),a(h,{block:``,class:`cash-page__submit`,onClick:$},{default:t(()=>[...o[4]||=[c(` ثبت رسید پرداخت `,-1)]]),_:1})])]),u(`div`,D,[u(`header`,O,[o[5]||=u(`h1`,{class:`desktop-page__title`},`تسویه نقدی`,-1),u(`p`,k,r(J.value),1)]),u(`div`,A,[a(g,{size:56}),u(`p`,j,`مبلغ قابل پرداخت `+r(q.value),1)]),u(`section`,M,[u(`h2`,N,r(Y.value),1),u(`div`,P,[(n(!0),s(l,null,e(W.value,e=>(n(),s(`article`,{key:e.id,class:`bank-card`},[u(`div`,F,[u(`span`,fe,r(e.bankName),1),u(`span`,I,r(e.bankName.charAt(0)),1)]),u(`div`,L,[o[6]||=u(`span`,{class:`bank-card__label`},`شماره کارت`,-1),u(`strong`,R,r(X(e.cardNumber)),1)]),u(`div`,z,[o[7]||=u(`span`,{class:`bank-card__label`},`شماره شبا`,-1),u(`strong`,B,r(Z(e.iban)),1)])]))),128))])]),u(`div`,V,[a(h,{variant:`outline`,class:`desktop-btn-compact`,onClick:Q},{default:t(()=>[...o[8]||=[c(` مشاهده سفارش `,-1)]]),_:1}),a(h,{class:`desktop-btn-compact`,onClick:$},{default:t(()=>[...o[9]||=[c(` ثبت رسید پرداخت `,-1)]]),_:1})])])],64))}}),[[`__scopeId`,`data-v-fa758115`]]);export{H as default};
+1
View File
@@ -0,0 +1 @@
import{F as e,G as t,M as n,Pt as r,U as i,_ as a,c as o,f as s,g as c,i as l,l as u,nt as ee,t as te,ut as d,v as f}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{i as ne,n as re}from"./format-C72AoJ2H.js";import{t as ie}from"./catalog-DWpH1dVc.js";import{C as p,f as m,r as h,t as g}from"./index-DYwnTikp.js";import"./constants-ptWoEwwP.js";import{t as ae}from"./PageHeader-C5c2Pzrn.js";import{t as oe}from"./useRequirePricedOrder-Bivuv5Mx.js";var se={class:`page cash-mobile-page mobile-only`},ce={class:`cash-page__scroll page__scroll`},le={class:`cash-page__success cash-page__success--done`},ue={class:`cash-page__success-title`},de={class:`cash-page__success-subtitle`},_={class:`accounts-panel`},v={class:`accounts-panel__title`},y={class:`bank-card__head`},b={class:`bank-card__name`},x={class:`bank-card__icon`,"aria-hidden":`true`},S={class:`bank-card__field`},C={class:`bank-card__value`,dir:`ltr`},w={class:`bank-card__field`},T={class:`bank-card__value`,dir:`ltr`},E={class:`cash-page__footer`},D={class:`desktop-checkout-shell cash-desktop-page desktop-only`},O={class:`desktop-page__head`},k={class:`desktop-page__subtitle`},A={class:`cash-page__success cash-page__success--done`},j={class:`cash-page__success-title`},M={class:`accounts-panel`},N={class:`accounts-panel__title`},P={class:`desktop-grid-2`},F={class:`bank-card__head`},fe={class:`bank-card__name`},I={class:`bank-card__icon`,"aria-hidden":`true`},L={class:`bank-card__field`},R={class:`bank-card__value`,dir:`ltr`},z={class:`bank-card__field`},B={class:`bank-card__value`,dir:`ltr`},V={class:`cash-desktop-page__actions`},H=te(f({__name:`CashSettlementView`,setup(te){let f=p(),H=m(),U=ie(),W=ee([]),{orderId:G,order:K}=oe(),pe=o(()=>U.companies.find(e=>e.slug===`nademitex`)?.name??`نادمی تکس`);i(G,async e=>{e&&!H.getOrderById(e)&&await H.fetchOrder(e)},{immediate:!0}),i(()=>K.value?.id,async e=>{if(!e||!K.value){W.value=[];return}U.companies.length||await U.loadCompanies(),W.value=await H.getBankAccountsForOrder(K.value)},{immediate:!0});let q=o(()=>K.value?.finalAmount?re(K.value.finalAmount):`—`),J=o(()=>{let e=K.value?.cashInvoiceExpiresAt;return e?`مهلت پرداخت این فاکتور تا ${ne(e)} است.`:`مبلغ فاکتور را به یکی از حساب‌های زیر واریز و رسید را ثبت کنید.`}),Y=o(()=>`شماره حساب‌های واریز — ${pe.value}`);function X(e){return e.replace(/\D/g,``).replace(/(\d{4})(?=\d)/g,`$1 `).trim()}function Z(e){return e.replace(/\s/g,``).toUpperCase().replace(/(.{4})/g,`$1 `).trim()}function Q(){f.replace(`/orders/${G.value}?track=1`)}function $(){f.replace(`/orders/${G.value}?track=1&receipt=1`)}return(i,o)=>(n(),s(l,null,[u(`div`,se,[a(ae,{title:`تسویه نقدی`,"show-back":``,centered:``,onBack:o[0]||=e=>d(f).push(`/orders/${d(G)}`)}),u(`div`,ce,[u(`div`,le,[a(g,{size:56}),u(`p`,ue,`مبلغ قابل پرداخت `+r(q.value),1),u(`p`,de,r(J.value),1)]),u(`section`,_,[u(`h2`,v,r(Y.value),1),(n(!0),s(l,null,e(W.value,e=>(n(),s(`article`,{key:e.id,class:`bank-card`},[u(`div`,y,[u(`span`,b,r(e.bankName),1),u(`span`,x,r(e.bankName.charAt(0)),1)]),u(`div`,S,[o[1]||=u(`span`,{class:`bank-card__label`},`شماره کارت`,-1),u(`strong`,C,r(X(e.cardNumber)),1)]),u(`div`,w,[o[2]||=u(`span`,{class:`bank-card__label`},`شماره شبا`,-1),u(`strong`,T,r(Z(e.iban)),1)])]))),128))])]),u(`div`,E,[a(h,{variant:`outline`,block:``,onClick:Q},{default:t(()=>[...o[3]||=[c(`مشاهده سفارش`,-1)]]),_:1}),a(h,{block:``,class:`cash-page__submit`,onClick:$},{default:t(()=>[...o[4]||=[c(` ثبت رسید پرداخت `,-1)]]),_:1})])]),u(`div`,D,[u(`header`,O,[o[5]||=u(`h1`,{class:`desktop-page__title`},`تسویه نقدی`,-1),u(`p`,k,r(J.value),1)]),u(`div`,A,[a(g,{size:56}),u(`p`,j,`مبلغ قابل پرداخت `+r(q.value),1)]),u(`section`,M,[u(`h2`,N,r(Y.value),1),u(`div`,P,[(n(!0),s(l,null,e(W.value,e=>(n(),s(`article`,{key:e.id,class:`bank-card`},[u(`div`,F,[u(`span`,fe,r(e.bankName),1),u(`span`,I,r(e.bankName.charAt(0)),1)]),u(`div`,L,[o[6]||=u(`span`,{class:`bank-card__label`},`شماره کارت`,-1),u(`strong`,R,r(X(e.cardNumber)),1)]),u(`div`,z,[o[7]||=u(`span`,{class:`bank-card__label`},`شماره شبا`,-1),u(`strong`,B,r(Z(e.iban)),1)])]))),128))])]),u(`div`,V,[a(h,{variant:`outline`,class:`desktop-btn-compact`,onClick:Q},{default:t(()=>[...o[8]||=[c(` مشاهده سفارش `,-1)]]),_:1}),a(h,{class:`desktop-btn-compact`,onClick:$},{default:t(()=>[...o[9]||=[c(` ثبت رسید پرداخت `,-1)]]),_:1})])])],64))}}),[[`__scopeId`,`data-v-fa758115`]]);export{H as default};
@@ -1 +1 @@
import{F as e,M as t,Pt as n,_ as r,d as i,f as a,i as o,k as s,l as c,t as l,ut as u,v as d}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{o as f}from"./format-C72AoJ2H.js";import{w as p}from"./index-CON313Q2.js";import{t as m}from"./PageHeader-juIsDT9M.js";import{t as h}from"./catalogRequests-COPPKp3x.js";var g={class:`page catalog-requests-page`},_={class:`desktop-page__head desktop-only catalog-requests-desk-head`},v={class:`page__scroll page__scroll--with-nav body`},y={key:0,class:`empty`},b={class:`card__top`},x={class:`badge`},S={key:0,class:`note`},C=l(d({__name:`CatalogRequestsView`,setup(l){let d=p(),C=h();return s(()=>C.hydrate()),(s,l)=>(t(),a(`div`,g,[r(m,{class:`mobile-only`,title:`وضعیت کالیته‌ها`,"show-back":``,centered:``,onBack:l[0]||=e=>u(d).push(`/products`)}),c(`header`,_,[l[3]||=c(`div`,null,[c(`h1`,{class:`desktop-page__title`},`وضعیت کالیته‌ها`),c(`p`,{class:`desktop-page__subtitle`},`پیگیری درخواست‌های کالیته ثبت‌شده`)],-1),c(`button`,{type:`button`,class:`desk-new-btn`,onClick:l[1]||=e=>u(d).push(`/categories`)},` درخواست کالیته جدید `)]),c(`div`,v,[c(`button`,{type:`button`,class:`new-btn mobile-only`,onClick:l[2]||=e=>u(d).push(`/categories`)},` درخواست کالیته جدید `),u(C).sorted.length?i(``,!0):(t(),a(`p`,y,`هنوز درخواستی ثبت نکرده‌اید.`)),(t(!0),a(o,null,e(u(C).sorted,r=>(t(),a(`article`,{key:r.id,class:`card`},[c(`div`,b,[c(`strong`,null,`درخواست `+n(r.id.slice(-6)),1),c(`span`,x,n(u(C).statusLabel(r.status)),1)]),c(`p`,null,n(r.createdAt.slice(0,10)),1),c(`p`,null,n(u(f)(r.items.length))+` قلم`,1),c(`ul`,null,[(t(!0),a(o,null,e(r.items,e=>(t(),a(`li`,{key:e.productId},n(e.productName)+` × `+n(u(f)(e.quantity)),1))),128))]),r.note?(t(),a(`p`,S,n(r.note),1)):i(``,!0)]))),128))])]))}}),[[`__scopeId`,`data-v-90b3d301`]]);export{C as default};
import{F as e,M as t,Pt as n,_ as r,d as i,f as a,i as o,k as s,l as c,t as l,ut as u,v as d}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{o as f}from"./format-C72AoJ2H.js";import{C as p}from"./index-DYwnTikp.js";import{t as m}from"./PageHeader-C5c2Pzrn.js";import{t as h}from"./catalogRequests-COPPKp3x.js";var g={class:`page catalog-requests-page`},_={class:`desktop-page__head desktop-only catalog-requests-desk-head`},v={class:`page__scroll page__scroll--with-nav body`},y={key:0,class:`empty`},b={class:`card__top`},x={class:`badge`},S={key:0,class:`note`},C=l(d({__name:`CatalogRequestsView`,setup(l){let d=p(),C=h();return s(()=>C.hydrate()),(s,l)=>(t(),a(`div`,g,[r(m,{class:`mobile-only`,title:`وضعیت کالیته‌ها`,"show-back":``,centered:``,onBack:l[0]||=e=>u(d).push(`/products`)}),c(`header`,_,[l[3]||=c(`div`,null,[c(`h1`,{class:`desktop-page__title`},`وضعیت کالیته‌ها`),c(`p`,{class:`desktop-page__subtitle`},`پیگیری درخواست‌های کالیته ثبت‌شده`)],-1),c(`button`,{type:`button`,class:`desk-new-btn`,onClick:l[1]||=e=>u(d).push(`/categories`)},` درخواست کالیته جدید `)]),c(`div`,v,[c(`button`,{type:`button`,class:`new-btn mobile-only`,onClick:l[2]||=e=>u(d).push(`/categories`)},` درخواست کالیته جدید `),u(C).sorted.length?i(``,!0):(t(),a(`p`,y,`هنوز درخواستی ثبت نکرده‌اید.`)),(t(!0),a(o,null,e(u(C).sorted,r=>(t(),a(`article`,{key:r.id,class:`card`},[c(`div`,b,[c(`strong`,null,`درخواست `+n(r.id.slice(-6)),1),c(`span`,x,n(u(C).statusLabel(r.status)),1)]),c(`p`,null,n(r.createdAt.slice(0,10)),1),c(`p`,null,n(u(f)(r.items.length))+` قلم`,1),c(`ul`,null,[(t(!0),a(o,null,e(r.items,e=>(t(),a(`li`,{key:e.productId},n(e.productName)+` × `+n(u(f)(e.quantity)),1))),128))]),r.note?(t(),a(`p`,S,n(r.note),1)):i(``,!0)]))),128))])]))}}),[[`__scopeId`,`data-v-90b3d301`]]);export{C as default};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{M as e,Pt as t,U as n,_ as r,c as i,f as a,l as o,t as s,ut as c,v as l}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{n as u}from"./format-C72AoJ2H.js";import{t as d}from"./IconCheckBook-ZRtkiJkL.js";import{m as f,w as p}from"./index-CON313Q2.js";import{t as m}from"./PageHeader-juIsDT9M.js";import{t as h}from"./useRequirePricedOrder-BCNEyr9h.js";import{t as g}from"./IconEditPen-Dwk_zEXe.js";var _={class:`page check-mode-page`},v={class:`page__scroll check-mode-page__scroll`},y={class:`check-mode-invoice`},b={class:`check-mode-invoice__value`},x={class:`mode-options`},S={class:`mode-card__icon`},C={class:`mode-card__icon`},w=s(l({__name:`CheckModeSelectView`,setup(s){let l=p(),w=f(),{orderId:T,order:E}=h(),D=i(()=>E.value?.finalAmount?u(E.value.finalAmount):`—`);n(T,async e=>{e&&(w.getOrderById(e)||await w.fetchOrder(e),w.draftOrderId!==e&&w.startCheckDraft(e))},{immediate:!0});function O(e){w.setCheckMode(e),l.push(`/orders/${T.value}/check-form`)}return(n,i)=>(e(),a(`div`,_,[r(m,{title:`تسویه چکی`,subtitle:`بر اساس مبلغ فاکتور، نحوه ثبت چک را انتخاب کنید`,"show-back":``,centered:``,onBack:i[0]||=e=>c(l).push(`/orders/${c(T)}`)}),o(`div`,v,[o(`div`,y,[i[3]||=o(`span`,{class:`check-mode-invoice__label`},`مبلغ فاکتور`,-1),o(`strong`,b,t(D.value),1)]),o(`div`,x,[o(`button`,{type:`button`,class:`mode-card`,onClick:i[1]||=e=>O(`full`)},[o(`span`,S,[r(d,{size:36})]),i[4]||=o(`h3`,{class:`mode-card__title`},`ثبت کامل (پیشنهادی)`,-1),i[5]||=o(`p`,{class:`mode-card__desc`},`وارد کردن همه اطلاعات چک`,-1)]),o(`button`,{type:`button`,class:`mode-card`,onClick:i[2]||=e=>O(`brief`)},[o(`span`,C,[r(g,{size:36})]),i[6]||=o(`h3`,{class:`mode-card__title`},`ثبت مختصر`,-1),i[7]||=o(`p`,{class:`mode-card__desc`},`وارد کردن حداقل اطلاعات`,-1)])])])]))}}),[[`__scopeId`,`data-v-680065b0`]]);export{w as default};
import{M as e,Pt as t,U as n,_ as r,c as i,f as a,l as o,t as s,ut as c,v as l}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{n as u}from"./format-C72AoJ2H.js";import{t as d}from"./IconCheckBook-IuV8Li8k.js";import{C as f,f as p}from"./index-DYwnTikp.js";import{t as m}from"./PageHeader-C5c2Pzrn.js";import{t as h}from"./useRequirePricedOrder-Bivuv5Mx.js";import{t as g}from"./IconEditPen-D6lQ4xNz.js";var _={class:`page check-mode-page`},v={class:`page__scroll check-mode-page__scroll`},y={class:`check-mode-invoice`},b={class:`check-mode-invoice__value`},x={class:`mode-options`},S={class:`mode-card__icon`},C={class:`mode-card__icon`},w=s(l({__name:`CheckModeSelectView`,setup(s){let l=f(),w=p(),{orderId:T,order:E}=h(),D=i(()=>E.value?.finalAmount?u(E.value.finalAmount):`—`);n(T,async e=>{e&&(w.getOrderById(e)||await w.fetchOrder(e),w.draftOrderId!==e&&w.startCheckDraft(e))},{immediate:!0});function O(e){w.setCheckMode(e),l.push(`/orders/${T.value}/check-form`)}return(n,i)=>(e(),a(`div`,_,[r(m,{title:`تسویه چکی`,subtitle:`بر اساس مبلغ فاکتور، نحوه ثبت چک را انتخاب کنید`,"show-back":``,centered:``,onBack:i[0]||=e=>c(l).push(`/orders/${c(T)}`)}),o(`div`,v,[o(`div`,y,[i[3]||=o(`span`,{class:`check-mode-invoice__label`},`مبلغ فاکتور`,-1),o(`strong`,b,t(D.value),1)]),o(`div`,x,[o(`button`,{type:`button`,class:`mode-card`,onClick:i[1]||=e=>O(`full`)},[o(`span`,S,[r(d,{size:36})]),i[4]||=o(`h3`,{class:`mode-card__title`},`ثبت کامل (پیشنهادی)`,-1),i[5]||=o(`p`,{class:`mode-card__desc`},`وارد کردن همه اطلاعات چک`,-1)]),o(`button`,{type:`button`,class:`mode-card`,onClick:i[2]||=e=>O(`brief`)},[o(`span`,C,[r(g,{size:36})]),i[6]||=o(`h3`,{class:`mode-card__title`},`ثبت مختصر`,-1),i[7]||=o(`p`,{class:`mode-card__desc`},`وارد کردن حداقل اطلاعات`,-1)])])])]))}}),[[`__scopeId`,`data-v-680065b0`]]);export{w as default};
@@ -1 +1 @@
import{D as e,G as t,M as n,Pt as r,U as i,_ as a,c as o,d as s,f as c,g as l,l as u,nt as d,o as f,t as p,u as m,v as h}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{n as g,u as _}from"./BasicIcon-ba1FsUKx.js";import{l as v}from"./format-C72AoJ2H.js";import{a as y}from"./validation-Duyyve7l.js";import{t as b}from"./http-CU_N-R2R.js";import{r as x,u as S}from"./index-CON313Q2.js";import{t as C}from"./FormErrorBanner-Ud1D04xf.js";import{n as w,r as T,t as E}from"./formErrors-DglFjYkZ.js";import{t as D}from"./crm-CgnSby61.js";import{t as O}from"./BaseInput-CpE3bVJZ.js";var k={class:`customer-create-form`},A={key:0,class:`customer-create-form__intro`},j={class:`customer-create-form__fields`},M=p(h({__name:`CustomerCreateForm`,props:{customerId:{},initial:{}},emits:[`success`],setup(e,{expose:o,emit:f}){let p=e,m=f,h=S(),g=D(),_=d(``),M=d(``),N=d(``),P=d(``),F=d({}),I=d(``),L=d(!1),R=()=>!!p.customerId;function z(e){_.value=e?.firstName??``,M.value=e?.lastName??``,N.value=e?.phone??``,P.value=e?.businessName??``,F.value={},I.value=``}i(()=>p.initial,e=>z(e),{immediate:!0});function B(e){F.value=w(F.value,e),T(F.value)||(I.value=``)}async function V(){if(F.value={},I.value=``,!h.isAgent){I.value=`فقط واسطه می‌تواند مشتری به لیست خود اضافه کند.`;return}let e=v(N.value),t={};if(_.value.trim()||(t.firstName=`نام الزامی است.`),M.value.trim()||(t.lastName=`نام خانوادگی الزامی است.`),y(e)||(t.phone=`شماره موبایل معتبر نیست.`),T(t)){F.value=t,I.value=E;return}let n={firstName:_.value.trim(),lastName:M.value.trim(),phone:e,businessName:P.value.trim()||void 0};L.value=!0;try{if(R()&&p.customerId){let e=await g.updateCustomer(p.customerId,n);m(`success`,e?.id??p.customerId);return}let e=await g.registerCustomer(n);m(`success`,e?.id)}catch(e){I.value=e instanceof b||e instanceof Error?e.message:R()?`ویرایش مشتری ناموفق بود.`:`ثبت مشتری ناموفق بود.`}finally{L.value=!1}}return o({submit:V,saving:L}),(e,i)=>(n(),c(`div`,k,[R()?s(``,!0):(n(),c(`p`,A,` مشتری به لیست شما اضافه می‌شود و بعد از ورود با همین شماره، سفارش‌هایش به حساب شما وصل می‌ماند. `)),a(C,{message:I.value},null,8,[`message`]),u(`div`,j,[a(O,{modelValue:_.value,"onUpdate:modelValue":[i[0]||=e=>_.value=e,i[1]||=e=>B(`firstName`)],label:`نام`,placeholder:`نام مشتری`,error:F.value.firstName},null,8,[`modelValue`,`error`]),a(O,{modelValue:M.value,"onUpdate:modelValue":[i[2]||=e=>M.value=e,i[3]||=e=>B(`lastName`)],label:`نام خانوادگی`,placeholder:`نام خانوادگی`,error:F.value.lastName},null,8,[`modelValue`,`error`]),a(O,{modelValue:N.value,"onUpdate:modelValue":[i[4]||=e=>N.value=e,i[5]||=e=>B(`phone`)],label:`شماره موبایل`,type:`tel`,inputmode:`tel`,dir:`ltr`,placeholder:`۰۹۱۲۳۴۵۶۷۸۹`,error:F.value.phone},null,8,[`modelValue`,`error`]),a(O,{modelValue:P.value,"onUpdate:modelValue":i[6]||=e=>P.value=e,label:`نام فروشگاه (اختیاری)`,placeholder:`مثلاً بوتیک رز`},null,8,[`modelValue`])]),a(x,{block:``,loading:L.value,disabled:L.value,onClick:V},{default:t(()=>[l(r(R()?`ثبت تغییرات`:`ثبت مشتری`),1)]),_:1},8,[`loading`,`disabled`])]))}}),[[`__scopeId`,`data-v-ec8ddbc3`]]),N={class:`customer-create-sheet`},P={class:`customer-create-sheet__head`},F={id:`customer-create-title`},I=p(h({__name:`CustomerCreateOverlay`,props:{open:{type:Boolean},customerId:{},initial:{},title:{}},emits:[`close`,`success`],setup(l,{emit:d}){let p=l,h=o(()=>p.title??(p.customerId?`ویرایش مشتری`:`افزودن مشتری`)),v=d;function y(){v(`close`)}function b(e){v(`success`,e)}function x(e){e.key===`Escape`&&p.open&&y()}return i(()=>p.open,e=>{document.body.style.overflow=e?`hidden`:``,e?window.addEventListener(`keydown`,x):window.removeEventListener(`keydown`,x)},{immediate:!0}),e(()=>{document.body.style.overflow=``,window.removeEventListener(`keydown`,x)}),(e,i)=>(n(),m(f,{to:`body`},[a(g,{name:`customer-create-sheet`},{default:t(()=>[l.open?(n(),c(`div`,{key:0,class:`customer-create-overlay`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`customer-create-title`,onClick:_(y,[`self`])},[u(`div`,N,[i[0]||=u(`div`,{class:`customer-create-sheet__handle`,"aria-hidden":`true`},null,-1),u(`header`,P,[u(`h2`,F,r(h.value),1),u(`button`,{type:`button`,class:`customer-create-sheet__close`,"aria-label":`بستن`,onClick:y},` × `)]),a(M,{"customer-id":l.customerId,initial:l.initial,onSuccess:b},null,8,[`customer-id`,`initial`])])])):s(``,!0)]),_:1})]))}}),[[`__scopeId`,`data-v-ac91feb8`]]);export{I as t};
import{D as e,G as t,M as n,Pt as r,U as i,_ as a,c as o,d as s,f as c,g as l,l as u,nt as d,o as f,t as p,u as m,v as h}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{l as g,n as _}from"./BasicIcon-DPmc0iaK.js";import{l as v}from"./format-C72AoJ2H.js";import{a as y}from"./validation-Duyyve7l.js";import{t as b}from"./http-CU_N-R2R.js";import{c as x,r as S}from"./index-DYwnTikp.js";import{t as C}from"./FormErrorBanner-Ud1D04xf.js";import{n as w,r as T,t as E}from"./formErrors-DglFjYkZ.js";import{t as D}from"./crm-CgnSby61.js";import{t as O}from"./BaseInput-CpE3bVJZ.js";var k={class:`customer-create-form`},A={key:0,class:`customer-create-form__intro`},j={class:`customer-create-form__fields`},M=p(h({__name:`CustomerCreateForm`,props:{customerId:{},initial:{}},emits:[`success`],setup(e,{expose:o,emit:f}){let p=e,m=f,h=x(),g=D(),_=d(``),M=d(``),N=d(``),P=d(``),F=d({}),I=d(``),L=d(!1),R=()=>!!p.customerId;function z(e){_.value=e?.firstName??``,M.value=e?.lastName??``,N.value=e?.phone??``,P.value=e?.businessName??``,F.value={},I.value=``}i(()=>p.initial,e=>z(e),{immediate:!0});function B(e){F.value=w(F.value,e),T(F.value)||(I.value=``)}async function V(){if(F.value={},I.value=``,!h.isAgent){I.value=`فقط واسطه می‌تواند مشتری به لیست خود اضافه کند.`;return}let e=v(N.value),t={};if(_.value.trim()||(t.firstName=`نام الزامی است.`),M.value.trim()||(t.lastName=`نام خانوادگی الزامی است.`),y(e)||(t.phone=`شماره موبایل معتبر نیست.`),T(t)){F.value=t,I.value=E;return}let n={firstName:_.value.trim(),lastName:M.value.trim(),phone:e,businessName:P.value.trim()||void 0};L.value=!0;try{if(R()&&p.customerId){let e=await g.updateCustomer(p.customerId,n);m(`success`,e?.id??p.customerId);return}let e=await g.registerCustomer(n);m(`success`,e?.id)}catch(e){I.value=e instanceof b||e instanceof Error?e.message:R()?`ویرایش مشتری ناموفق بود.`:`ثبت مشتری ناموفق بود.`}finally{L.value=!1}}return o({submit:V,saving:L}),(e,i)=>(n(),c(`div`,k,[R()?s(``,!0):(n(),c(`p`,A,` مشتری به لیست شما اضافه می‌شود و بعد از ورود با همین شماره، سفارش‌هایش به حساب شما وصل می‌ماند. `)),a(C,{message:I.value},null,8,[`message`]),u(`div`,j,[a(O,{modelValue:_.value,"onUpdate:modelValue":[i[0]||=e=>_.value=e,i[1]||=e=>B(`firstName`)],label:`نام`,placeholder:`نام مشتری`,error:F.value.firstName},null,8,[`modelValue`,`error`]),a(O,{modelValue:M.value,"onUpdate:modelValue":[i[2]||=e=>M.value=e,i[3]||=e=>B(`lastName`)],label:`نام خانوادگی`,placeholder:`نام خانوادگی`,error:F.value.lastName},null,8,[`modelValue`,`error`]),a(O,{modelValue:N.value,"onUpdate:modelValue":[i[4]||=e=>N.value=e,i[5]||=e=>B(`phone`)],label:`شماره موبایل`,type:`tel`,inputmode:`tel`,dir:`ltr`,placeholder:`۰۹۱۲۳۴۵۶۷۸۹`,error:F.value.phone},null,8,[`modelValue`,`error`]),a(O,{modelValue:P.value,"onUpdate:modelValue":i[6]||=e=>P.value=e,label:`نام فروشگاه (اختیاری)`,placeholder:`مثلاً بوتیک رز`},null,8,[`modelValue`])]),a(S,{block:``,loading:L.value,disabled:L.value,onClick:V},{default:t(()=>[l(r(R()?`ثبت تغییرات`:`ثبت مشتری`),1)]),_:1},8,[`loading`,`disabled`])]))}}),[[`__scopeId`,`data-v-ec8ddbc3`]]),N={class:`customer-create-sheet`},P={class:`customer-create-sheet__head`},F={id:`customer-create-title`},I=p(h({__name:`CustomerCreateOverlay`,props:{open:{type:Boolean},customerId:{},initial:{},title:{}},emits:[`close`,`success`],setup(l,{emit:d}){let p=l,h=o(()=>p.title??(p.customerId?`ویرایش مشتری`:`افزودن مشتری`)),v=d;function y(){v(`close`)}function b(e){v(`success`,e)}function x(e){e.key===`Escape`&&p.open&&y()}return i(()=>p.open,e=>{document.body.style.overflow=e?`hidden`:``,e?window.addEventListener(`keydown`,x):window.removeEventListener(`keydown`,x)},{immediate:!0}),e(()=>{document.body.style.overflow=``,window.removeEventListener(`keydown`,x)}),(e,i)=>(n(),m(f,{to:`body`},[a(_,{name:`customer-create-sheet`},{default:t(()=>[l.open?(n(),c(`div`,{key:0,class:`customer-create-overlay`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`customer-create-title`,onClick:g(y,[`self`])},[u(`div`,N,[i[0]||=u(`div`,{class:`customer-create-sheet__handle`,"aria-hidden":`true`},null,-1),u(`header`,P,[u(`h2`,F,r(h.value),1),u(`button`,{type:`button`,class:`customer-create-sheet__close`,"aria-label":`بستن`,onClick:y},` × `)]),a(M,{"customer-id":l.customerId,initial:l.initial,onSuccess:b},null,8,[`customer-id`,`initial`])])])):s(``,!0)]),_:1})]))}}),[[`__scopeId`,`data-v-ac91feb8`]]);export{I as t};
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{I as e,M as t,Pt as n,_ as r,c as i,d as a,f as o,g as s,l as c,t as l,v as u}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as d}from"./BasicIcon-ba1FsUKx.js";var f={class:`empty-state`},p={class:`empty-state__icon`,"aria-hidden":`true`},m={key:0,class:`empty-state__title`},h={key:1,class:`empty-state__message`},g={key:2,class:`empty-state__action`},_=l(u({__name:`EmptyState`,props:{message:{default:void 0},title:{default:void 0},variant:{default:`default`},icon:{default:void 0},iconSize:{default:72}},setup(l){let u=l,_={default:`vuesax-linear:clipboard-close`,products:`vuesax-linear:box-remove`,catalogs:`vuesax-linear:category`,orders:`vuesax-linear:document-text`,cart:`vuesax-linear:bag-cross`,checks:`vuesax-linear:card-receive`,search:`vuesax-linear:search-status`},v={default:``,products:`محصولی یافت نشد`,catalogs:`کالیته‌ای یافت نشد`,orders:`سفارشی یافت نشد`,cart:`سبد خرید خالی است`,checks:`چکی ثبت نشده است`,search:`نتیجه‌ای یافت نشد`},y=i(()=>u.icon??_[u.variant]??`vuesax-linear:clipboard-close`),b=i(()=>u.title??v[u.variant]??``),x=i(()=>u.message??``);return(i,u)=>(t(),o(`div`,f,[c(`div`,p,[e(i.$slots,`icon`,{},()=>[r(d,{icon:y.value,size:l.iconSize,"stroke-width":1.25},null,8,[`icon`,`size`])],!0)]),b.value||i.$slots.title?(t(),o(`h2`,m,[e(i.$slots,`title`,{},()=>[s(n(b.value),1)],!0)])):a(``,!0),x.value||i.$slots.message?(t(),o(`p`,h,[e(i.$slots,`message`,{},()=>[s(n(x.value),1)],!0)])):a(``,!0),i.$slots.default?(t(),o(`div`,g,[e(i.$slots,`default`,{},void 0,!0)])):a(``,!0)]))}}),[[`__scopeId`,`data-v-243a4fc7`]]);export{_ as t};
import{I as e,M as t,Pt as n,_ as r,c as i,d as a,f as o,g as s,l as c,t as l,v as u}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as d}from"./BasicIcon-DPmc0iaK.js";var f={class:`empty-state`},p={class:`empty-state__icon`,"aria-hidden":`true`},m={key:0,class:`empty-state__title`},h={key:1,class:`empty-state__message`},g={key:2,class:`empty-state__action`},_=l(u({__name:`EmptyState`,props:{message:{default:void 0},title:{default:void 0},variant:{default:`default`},icon:{default:void 0},iconSize:{default:72}},setup(l){let u=l,_={default:`vuesax-linear:clipboard-close`,products:`vuesax-linear:box-remove`,catalogs:`vuesax-linear:category`,orders:`vuesax-linear:document-text`,cart:`vuesax-linear:bag-cross`,checks:`vuesax-linear:card-receive`,search:`vuesax-linear:search-status`},v={default:``,products:`محصولی یافت نشد`,catalogs:`کالیته‌ای یافت نشد`,orders:`سفارشی یافت نشد`,cart:`سبد خرید خالی است`,checks:`چکی ثبت نشده است`,search:`نتیجه‌ای یافت نشد`},y=i(()=>u.icon??_[u.variant]??`vuesax-linear:clipboard-close`),b=i(()=>u.title??v[u.variant]??``),x=i(()=>u.message??``);return(i,u)=>(t(),o(`div`,f,[c(`div`,p,[e(i.$slots,`icon`,{},()=>[r(d,{icon:y.value,size:l.iconSize,"stroke-width":1.25},null,8,[`icon`,`size`])],!0)]),b.value||i.$slots.title?(t(),o(`h2`,m,[e(i.$slots,`title`,{},()=>[s(n(b.value),1)],!0)])):a(``,!0),x.value||i.$slots.message?(t(),o(`p`,h,[e(i.$slots,`message`,{},()=>[s(n(x.value),1)],!0)])):a(``,!0),i.$slots.default?(t(),o(`div`,g,[e(i.$slots,`default`,{},void 0,!0)])):a(``,!0)]))}}),[[`__scopeId`,`data-v-243a4fc7`]]);export{_ as t};
@@ -1 +1 @@
import{F as e,M as t,Nt as n,Pt as r,_ as i,d as a,f as o,g as s,i as c,k as l,l as u,nt as d,t as f,u as p,ut as m,v as h}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{u as g}from"./BasicIcon-ba1FsUKx.js";import{o as _}from"./format-C72AoJ2H.js";import{c as v,d as y,w as b}from"./index-CON313Q2.js";import{t as x}from"./PageHeader-juIsDT9M.js";import{t as S}from"./PageSkeleton-DYdjm4l9.js";import{t as C}from"./crm-CgnSby61.js";import{t as w}from"./IconBookmark-CQq-TOS-.js";import{i as T,n as E,r as D,t as O}from"./productAvailability-B5nVr_sJ.js";var k={class:`page favorites-page`},A={class:`page__scroll page__scroll--with-nav body`},j={key:1},M={key:2,class:`empty`},N=[`onClick`],P={class:`product-item__body`},F={class:`product-item__head`},I={class:`product-item__title`},L={key:0,class:`new-tag new-tag--oos`},R={key:1,class:`new-tag`},z=[`onClick`],B={class:`product-item__specs`},V={key:0,class:`swatches`},H=[`onClick`],U=f(h({__name:`FavoritesView`,setup(f){let h={summer:`تابستانه`,winter:`زمستانه`,all_season:`چهارفصل`},U=b(),W=y(),G=C(),K=d([]),q=d(!0),J=d(null);l(async()=>{q.value=!0;try{await W.hydrate();let e=await G.loadBrowseProducts(),t=new Set(W.ids);K.value=e.filter(e=>t.has(e.id))}catch(e){J.value=e instanceof Error?e.message:`بارگذاری علاقه‌مندی‌ها ناموفق بود.`}finally{q.value=!1}});function Y(e){return h[e]??`—`}function X(e){return T(e.imageUrls,e.colorImages,e.imageUrl)}function Z(e){U.push({path:`/product`,query:{id:e}})}async function Q(e){await W.toggle(e),K.value=K.value.filter(t=>t.id!==e)}return(l,d)=>(t(),o(`div`,k,[i(x,{class:`mobile-only`,title:`علاقه‌مندی‌ها`,"show-back":``,centered:``,onBack:d[0]||=e=>m(U).back()}),d[2]||=u(`header`,{class:`desktop-page__head desktop-only`},[u(`h1`,{class:`desktop-page__title`},`علاقه‌مندی‌ها`),u(`p`,{class:`desktop-page__subtitle`},`محصولات ذخیره‌شده برای دسترسی سریع`)],-1),u(`div`,A,[q.value?(t(),p(S,{key:0,variant:`grid`})):J.value?(t(),o(`p`,j,r(J.value),1)):K.value.length?a(``,!0):(t(),o(`p`,M,`هنوز محصولی ذخیره نکرده‌اید.`)),(t(!0),o(c,null,e(K.value,l=>(t(),o(`article`,{key:l.id,class:`product-item`,onClick:e=>Z(l.id)},[u(`div`,{class:`product-item__image`,style:n(X(l)?{backgroundImage:`url(${X(l)})`}:m(E)(l.colors[0]??``))},null,4),u(`div`,P,[u(`div`,F,[u(`div`,I,[u(`strong`,null,r(l.name),1),m(O)(l)?(t(),o(`span`,L,`ناموجود`)):l.isNew?(t(),o(`span`,R,`جدید`)):a(``,!0)]),u(`button`,{type:`button`,class:`bookmark`,"aria-label":`حذف از علاقه‌مندی‌ها`,onClick:g(e=>Q(l.id),[`stop`])},[i(w,{size:18,filled:``,color:`var(--color-primary)`})],8,z)]),u(`ul`,B,[u(`li`,null,`عرض: `+r(m(_)(l.widthCm))+` سانتی‌متر`,1),u(`li`,null,`ترکیب: `+r(l.composition||`—`),1),u(`li`,null,`مناسب: `+r(Y(l.season)),1)]),l.colors.length?(t(),o(`div`,V,[(t(!0),o(c,null,e(l.colors.slice(0,6),(e,r)=>(t(),o(`span`,{key:r,class:`swatch`,style:n(m(E)(e,m(D)(l.colorImages,l.colorVariantImages,r)))},null,4))),128))])):a(``,!0),u(`button`,{type:`button`,class:`details-link`,onClick:g(e=>Z(l.id),[`stop`])},[d[1]||=s(` مشاهده جزئیات `,-1),i(v,{size:14})],8,H)])],8,N))),128))])]))}}),[[`__scopeId`,`data-v-241cceb3`]]);export{U as default};
import{F as e,M as t,Nt as n,Pt as r,_ as i,d as a,f as o,g as s,i as c,k as l,l as u,nt as d,t as f,u as p,ut as m,v as h}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{l as g}from"./BasicIcon-DPmc0iaK.js";import{o as _}from"./format-C72AoJ2H.js";import{C as v,l as y,o as b}from"./index-DYwnTikp.js";import{t as x}from"./PageHeader-C5c2Pzrn.js";import{t as S}from"./PageSkeleton-DYdjm4l9.js";import{t as C}from"./crm-CgnSby61.js";import{t as w}from"./IconBookmark-CQq-TOS-.js";import{i as T,n as E,r as D,t as O}from"./productAvailability-B5nVr_sJ.js";var k={class:`page favorites-page`},A={class:`page__scroll page__scroll--with-nav body`},j={key:1},M={key:2,class:`empty`},N=[`onClick`],P={class:`product-item__body`},F={class:`product-item__head`},I={class:`product-item__title`},L={key:0,class:`new-tag new-tag--oos`},R={key:1,class:`new-tag`},z=[`onClick`],B={class:`product-item__specs`},V={key:0,class:`swatches`},H=[`onClick`],U=f(h({__name:`FavoritesView`,setup(f){let h={summer:`تابستانه`,winter:`زمستانه`,all_season:`چهارفصل`},U=v(),W=y(),G=C(),K=d([]),q=d(!0),J=d(null);l(async()=>{q.value=!0;try{await W.hydrate();let e=await G.loadBrowseProducts(),t=new Set(W.ids);K.value=e.filter(e=>t.has(e.id))}catch(e){J.value=e instanceof Error?e.message:`بارگذاری علاقه‌مندی‌ها ناموفق بود.`}finally{q.value=!1}});function Y(e){return h[e]??`—`}function X(e){return T(e.imageUrls,e.colorImages,e.imageUrl)}function Z(e){U.push({path:`/product`,query:{id:e}})}async function Q(e){await W.toggle(e),K.value=K.value.filter(t=>t.id!==e)}return(l,d)=>(t(),o(`div`,k,[i(x,{class:`mobile-only`,title:`علاقه‌مندی‌ها`,"show-back":``,centered:``,onBack:d[0]||=e=>m(U).back()}),d[2]||=u(`header`,{class:`desktop-page__head desktop-only`},[u(`h1`,{class:`desktop-page__title`},`علاقه‌مندی‌ها`),u(`p`,{class:`desktop-page__subtitle`},`محصولات ذخیره‌شده برای دسترسی سریع`)],-1),u(`div`,A,[q.value?(t(),p(S,{key:0,variant:`grid`})):J.value?(t(),o(`p`,j,r(J.value),1)):K.value.length?a(``,!0):(t(),o(`p`,M,`هنوز محصولی ذخیره نکرده‌اید.`)),(t(!0),o(c,null,e(K.value,l=>(t(),o(`article`,{key:l.id,class:`product-item`,onClick:e=>Z(l.id)},[u(`div`,{class:`product-item__image`,style:n(X(l)?{backgroundImage:`url(${X(l)})`}:m(E)(l.colors[0]??``))},null,4),u(`div`,P,[u(`div`,F,[u(`div`,I,[u(`strong`,null,r(l.name),1),m(O)(l)?(t(),o(`span`,L,`ناموجود`)):l.isNew?(t(),o(`span`,R,`جدید`)):a(``,!0)]),u(`button`,{type:`button`,class:`bookmark`,"aria-label":`حذف از علاقه‌مندی‌ها`,onClick:g(e=>Q(l.id),[`stop`])},[i(w,{size:18,filled:``,color:`var(--color-primary)`})],8,z)]),u(`ul`,B,[u(`li`,null,`عرض: `+r(m(_)(l.widthCm))+` سانتی‌متر`,1),u(`li`,null,`ترکیب: `+r(l.composition||`—`),1),u(`li`,null,`مناسب: `+r(Y(l.season)),1)]),l.colors.length?(t(),o(`div`,V,[(t(!0),o(c,null,e(l.colors.slice(0,6),(e,r)=>(t(),o(`span`,{key:r,class:`swatch`,style:n(m(E)(e,m(D)(l.colorImages,l.colorVariantImages,r)))},null,4))),128))])):a(``,!0),u(`button`,{type:`button`,class:`details-link`,onClick:g(e=>Z(l.id),[`stop`])},[d[1]||=s(` مشاهده جزئیات `,-1),i(b,{size:14})],8,H)])],8,N))),128))])]))}}),[[`__scopeId`,`data-v-241cceb3`]]);export{U as default};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-ba1FsUKx.js";var i=n({__name:`IconCart`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:bag-2`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-DPmc0iaK.js";var i=n({__name:`IconCart`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:bag-2`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
@@ -1 +1 @@
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-ba1FsUKx.js";var i=n({__name:`IconHome`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:home`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}}),a=n({__name:`IconCatalog`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:category`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as n,a as t};
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-DPmc0iaK.js";var i=n({__name:`IconHome`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:home`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}}),a=n({__name:`IconCatalog`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:category`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as n,a as t};
@@ -1 +1 @@
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-ba1FsUKx.js";var i=n({__name:`IconCheckBook`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:card-receive`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-DPmc0iaK.js";var i=n({__name:`IconCheckBook`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:card-receive`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
@@ -1 +1 @@
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-ba1FsUKx.js";var i=n({__name:`IconChevronBack`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:arrow-right-1`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-DPmc0iaK.js";var i=n({__name:`IconChevronBack`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:arrow-right-1`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
@@ -1 +1 @@
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-ba1FsUKx.js";var i=n({__name:`IconClipboardEmpty`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:clipboard-close`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-DPmc0iaK.js";var i=n({__name:`IconClipboardEmpty`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:clipboard-close`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
@@ -1 +1 @@
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-ba1FsUKx.js";var i=n({__name:`IconLayoutGrid`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:element-3`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}}),a=n({__name:`IconDiamond`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:diamonds`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as n,a as t};
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-DPmc0iaK.js";var i=n({__name:`IconLayoutGrid`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:element-3`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}}),a=n({__name:`IconDiamond`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:diamonds`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as n,a as t};
@@ -1 +1 @@
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-ba1FsUKx.js";var i=n({__name:`IconEditPen`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:edit-2`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-DPmc0iaK.js";var i=n({__name:`IconEditPen`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:edit-2`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
@@ -1 +1 @@
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-ba1FsUKx.js";var i=n({__name:`IconFilter`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:filter`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-DPmc0iaK.js";var i=n({__name:`IconFilter`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:filter`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
@@ -1 +1 @@
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-ba1FsUKx.js";var i=n({__name:`IconMoreVertical`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:more`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-DPmc0iaK.js";var i=n({__name:`IconMoreVertical`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:more`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
@@ -1 +1 @@
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-ba1FsUKx.js";var i=n({__name:`IconOrders`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:document-text`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-DPmc0iaK.js";var i=n({__name:`IconOrders`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:document-text`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
+1
View File
@@ -0,0 +1 @@
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-DPmc0iaK.js";var i=n({__name:`IconPhone`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:call`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
@@ -1 +1 @@
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-ba1FsUKx.js";var i=n({__name:`IconPlus`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:add`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-DPmc0iaK.js";var i=n({__name:`IconPlus`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:add`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
@@ -1 +1 @@
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-ba1FsUKx.js";var i=n({__name:`IconProfile`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:profile-circle`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-DPmc0iaK.js";var i=n({__name:`IconProfile`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:profile-circle`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
@@ -1 +1 @@
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-ba1FsUKx.js";var i=n({__name:`IconProgressClock`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:clock`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-DPmc0iaK.js";var i=n({__name:`IconProgressClock`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:clock`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
@@ -1 +1 @@
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-ba1FsUKx.js";var i=n({__name:`IconSettings`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:setting-2`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-DPmc0iaK.js";var i=n({__name:`IconSettings`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:setting-2`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
@@ -1 +1 @@
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-ba1FsUKx.js";var i=n({__name:`IconTrash`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:trash`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-DPmc0iaK.js";var i=n({__name:`IconTrash`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(n){return(i,a)=>(e(),t(r,{icon:`vuesax-linear:trash`,size:n.size,"stroke-width":n.strokeWidth,color:n.color},null,8,[`size`,`stroke-width`,`color`]))}});export{i as t};
@@ -1 +1 @@
import{M as e,f as t,h as n,u as r,v as i}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as a}from"./BasicIcon-ba1FsUKx.js";var o=i({__name:`IconShoppingBag`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(t){return(n,i)=>(e(),r(a,{icon:`vuesax-linear:shopping-bag`,size:t.size,"stroke-width":t.strokeWidth,color:t.color},null,8,[`size`,`stroke-width`,`color`]))}}),s=[`width`,`height`,`stroke`],c=i({__name:`IconRuler`,props:{size:{default:22},color:{default:`currentColor`}},setup(r){return(i,a)=>(e(),t(`svg`,{width:r.size,height:r.size,viewBox:`0 0 24 24`,fill:`none`,stroke:r.color,"stroke-width":`1.6`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[...a[0]||=[n(`<rect x="3" y="8" width="18" height="8" rx="1.5"></rect><path d="M7 8v3"></path><path d="M10 8v4"></path><path d="M13 8v3"></path><path d="M16 8v4"></path>`,5)]],8,s))}}),l=[`width`,`height`,`stroke`],u=i({__name:`IconWeave`,props:{size:{default:22},color:{default:`currentColor`}},setup(r){return(i,a)=>(e(),t(`svg`,{width:r.size,height:r.size,viewBox:`0 0 24 24`,fill:`none`,stroke:r.color,"stroke-width":`1.6`,"stroke-linecap":`round`,"aria-hidden":`true`},[...a[0]||=[n(`<path d="M6 4v16"></path><path d="M10 4v16"></path><path d="M14 4v16"></path><path d="M18 4v16"></path><path d="M4 8h16"></path><path d="M4 12h16"></path><path d="M4 16h16"></path>`,7)]],8,l))}});export{c as n,o as r,u as t};
import{M as e,f as t,h as n,u as r,v as i}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as a}from"./BasicIcon-DPmc0iaK.js";var o=i({__name:`IconShoppingBag`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(t){return(n,i)=>(e(),r(a,{icon:`vuesax-linear:shopping-bag`,size:t.size,"stroke-width":t.strokeWidth,color:t.color},null,8,[`size`,`stroke-width`,`color`]))}}),s=[`width`,`height`,`stroke`],c=i({__name:`IconRuler`,props:{size:{default:22},color:{default:`currentColor`}},setup(r){return(i,a)=>(e(),t(`svg`,{width:r.size,height:r.size,viewBox:`0 0 24 24`,fill:`none`,stroke:r.color,"stroke-width":`1.6`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[...a[0]||=[n(`<rect x="3" y="8" width="18" height="8" rx="1.5"></rect><path d="M7 8v3"></path><path d="M10 8v4"></path><path d="M13 8v3"></path><path d="M16 8v4"></path>`,5)]],8,s))}}),l=[`width`,`height`,`stroke`],u=i({__name:`IconWeave`,props:{size:{default:22},color:{default:`currentColor`}},setup(r){return(i,a)=>(e(),t(`svg`,{width:r.size,height:r.size,viewBox:`0 0 24 24`,fill:`none`,stroke:r.color,"stroke-width":`1.6`,"stroke-linecap":`round`,"aria-hidden":`true`},[...a[0]||=[n(`<path d="M6 4v16"></path><path d="M10 4v16"></path><path d="M14 4v16"></path><path d="M18 4v16"></path><path d="M4 8h16"></path><path d="M4 12h16"></path><path d="M4 16h16"></path>`,7)]],8,l))}});export{c as n,o as r,u as t};
@@ -1 +1 @@
import{M as e,Pt as t,_ as n,c as r,f as i,g as a,i as o,k as s,l as c,nt as l,t as u,u as d,ut as f,v as p}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{i as m,o as h}from"./format-C72AoJ2H.js";import{w as g}from"./index-CON313Q2.js";import{t as _}from"./PageHeader-juIsDT9M.js";import{t as v}from"./catalogRequests-COPPKp3x.js";import{t as y}from"./PageSkeleton-DYdjm4l9.js";import{t as b}from"./SimpleStatusTimeline-C5IzJmCG.js";var x=[{id:`registered`,label:`درخواست کالیته ثبت شد`},{id:`ready_to_ship`,label:`آماده ارسال`},{id:`shipped`,label:`ارسال شد`},{id:`returned`,label:`تحویل گرفته شد`},{id:`cancelled`,label:`درخواست لغو شد`}],S={new:0,approved:0,ready_to_ship:1,delivered:2,returned:3,cancelled:4};function C(e){return e.serverStatus?e.serverStatus:{submitted:`new`,reviewing:`approved`,preparing:`ready_to_ship`,shipped:`delivered`,delivered:`returned`,new:`new`,approved:`approved`,ready_to_ship:`ready_to_ship`,returned:`returned`,cancelled:`cancelled`}[e.status]??`new`}function w(e){return S[C(e)]??0}function T(e){let t=C(e),n=m(e.createdAt),r=e.updatedAt?m(e.updatedAt):null;return{registered:n,ready_to_ship:[`ready_to_ship`,`delivered`,`returned`].includes(t)?r:null,shipped:[`delivered`,`returned`].includes(t)?r:null,returned:t===`returned`?r:null,cancelled:t===`cancelled`?r:null}}var E={class:`page latest-status-page`},D={class:`page__scroll page__scroll--with-nav body`},O={class:`summary-card`},k={class:`summary-card__value`},A={class:`summary-card__meta`},j={key:2,class:`empty-cta`},M=u(p({__name:`LatestCatalogRequestStatusView`,setup(u){let p=g(),m=v(),S=l(!0),C=r(()=>m.sorted.length?m.sorted[0]:null),M=r(()=>C.value?w(C.value):0),N=r(()=>C.value?T(C.value):{});s(async()=>{S.value=!0,await m.hydrate(),S.value=!1});function P(){p.push(`/categories`)}return(r,s)=>(e(),i(`div`,E,[n(_,{class:`mobile-only`,title:`آخرین درخواست کالیته`,"show-back":``,centered:``,onBack:s[0]||=e=>f(p).push(`/`)}),s[4]||=c(`header`,{class:`desktop-page__head desktop-only`},[c(`div`,null,[c(`h1`,{class:`desktop-page__title`},`آخرین درخواست کالیته`),c(`p`,{class:`desktop-page__subtitle`},`پیگیری مراحل آخرین درخواست کالیته`)])],-1),c(`div`,D,[S.value?(e(),d(y,{key:0})):C.value?(e(),i(o,{key:1},[c(`article`,O,[s[2]||=c(`p`,{class:`summary-card__label`},`درخواست`,-1),c(`strong`,k,t(C.value.id.slice(-8)),1),c(`p`,A,t(f(h)(C.value.items.length))+` قلم کالیته `,1)]),n(b,{steps:f(x),"current-index":M.value,timestamps:N.value},null,8,[`steps`,`current-index`,`timestamps`]),c(`button`,{type:`button`,class:`detail-link`,onClick:s[1]||=e=>f(p).push(`/catalog-requests`)},` مشاهده همه درخواست‌ها `)],64)):(e(),i(`div`,j,[s[3]||=a(` شما هیچ کالیته ای درخواست نکرده اید، جهت درخواست کالیته و مشاهده فیزیکی پارچه ها کلیک کنید `,-1),c(`button`,{type:`button`,class:`desk-new-btn`,onClick:P},` مشاهده محصولات `)]))])]))}}),[[`__scopeId`,`data-v-ceeabf36`]]);export{M as default};
import{M as e,Pt as t,_ as n,c as r,f as i,g as a,i as o,k as s,l as c,nt as l,t as u,u as d,ut as f,v as p}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{i as m,o as h}from"./format-C72AoJ2H.js";import{C as g}from"./index-DYwnTikp.js";import{t as _}from"./PageHeader-C5c2Pzrn.js";import{t as v}from"./catalogRequests-COPPKp3x.js";import{t as y}from"./PageSkeleton-DYdjm4l9.js";import{t as b}from"./SimpleStatusTimeline-C5IzJmCG.js";var x=[{id:`registered`,label:`درخواست کالیته ثبت شد`},{id:`ready_to_ship`,label:`آماده ارسال`},{id:`shipped`,label:`ارسال شد`},{id:`returned`,label:`تحویل گرفته شد`},{id:`cancelled`,label:`درخواست لغو شد`}],S={new:0,approved:0,ready_to_ship:1,delivered:2,returned:3,cancelled:4};function C(e){return e.serverStatus?e.serverStatus:{submitted:`new`,reviewing:`approved`,preparing:`ready_to_ship`,shipped:`delivered`,delivered:`returned`,new:`new`,approved:`approved`,ready_to_ship:`ready_to_ship`,returned:`returned`,cancelled:`cancelled`}[e.status]??`new`}function w(e){return S[C(e)]??0}function T(e){let t=C(e),n=m(e.createdAt),r=e.updatedAt?m(e.updatedAt):null;return{registered:n,ready_to_ship:[`ready_to_ship`,`delivered`,`returned`].includes(t)?r:null,shipped:[`delivered`,`returned`].includes(t)?r:null,returned:t===`returned`?r:null,cancelled:t===`cancelled`?r:null}}var E={class:`page latest-status-page`},D={class:`page__scroll page__scroll--with-nav body`},O={class:`summary-card`},k={class:`summary-card__value`},A={class:`summary-card__meta`},j={key:2,class:`empty-cta`},M=u(p({__name:`LatestCatalogRequestStatusView`,setup(u){let p=g(),m=v(),S=l(!0),C=r(()=>m.sorted.length?m.sorted[0]:null),M=r(()=>C.value?w(C.value):0),N=r(()=>C.value?T(C.value):{});s(async()=>{S.value=!0,await m.hydrate(),S.value=!1});function P(){p.push(`/categories`)}return(r,s)=>(e(),i(`div`,E,[n(_,{class:`mobile-only`,title:`آخرین درخواست کالیته`,"show-back":``,centered:``,onBack:s[0]||=e=>f(p).push(`/`)}),s[4]||=c(`header`,{class:`desktop-page__head desktop-only`},[c(`div`,null,[c(`h1`,{class:`desktop-page__title`},`آخرین درخواست کالیته`),c(`p`,{class:`desktop-page__subtitle`},`پیگیری مراحل آخرین درخواست کالیته`)])],-1),c(`div`,D,[S.value?(e(),d(y,{key:0})):C.value?(e(),i(o,{key:1},[c(`article`,O,[s[2]||=c(`p`,{class:`summary-card__label`},`درخواست`,-1),c(`strong`,k,t(C.value.id.slice(-8)),1),c(`p`,A,t(f(h)(C.value.items.length))+` قلم کالیته `,1)]),n(b,{steps:f(x),"current-index":M.value,timestamps:N.value},null,8,[`steps`,`current-index`,`timestamps`]),c(`button`,{type:`button`,class:`detail-link`,onClick:s[1]||=e=>f(p).push(`/catalog-requests`)},` مشاهده همه درخواست‌ها `)],64)):(e(),i(`div`,j,[s[3]||=a(` شما هیچ کالیته ای درخواست نکرده اید، جهت درخواست کالیته و مشاهده فیزیکی پارچه ها کلیک کنید `,-1),c(`button`,{type:`button`,class:`desk-new-btn`,onClick:P},` مشاهده محصولات `)]))])]))}}),[[`__scopeId`,`data-v-ceeabf36`]]);export{M as default};
@@ -1 +1 @@
import{M as e,Pt as t,_ as n,c as r,d as i,f as a,i as o,k as s,l as c,nt as l,t as u,u as d,ut as f,v as p}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{i as m,n as h}from"./format-C72AoJ2H.js";import{m as g,u as _,w as v}from"./index-CON313Q2.js";import{t as y}from"./PageHeader-juIsDT9M.js";import{t as b}from"./PageSkeleton-DYdjm4l9.js";import{t as x}from"./SimpleStatusTimeline-C5IzJmCG.js";var S=[{id:`registered`,label:`سفارش ثبت شد`},{id:`priced`,label:`قیمت گذاری انجام شد`},{id:`proforma_sent`,label:`پیش فاکتور ارسال شد`},{id:`proforma_confirmed`,label:`پیش فاکتور تایید شد`},{id:`invoice_sent`,label:`فاکتور ارسال شد`},{id:`shipped`,label:`بار ارسال شد`},{id:`delivered`,label:`بار توسط شما تحویل گرفته شد`}],C={submitted:0,awaiting_review:1,pricing:1,needs_correction:1,awaiting_settlement:2,awaiting_settlement_fix:2,cash_in_progress:2,cash_invoice_issued:2,awaiting_cash_payment:2,cash_payment_submitted:2,check_in_progress:2,awaiting_cash_confirmation:3,awaiting_check_review:3,check_needs_fix:3,check_rejected:3,checks_approved:3,cash_confirmed:3,final_approved:4,preparing:4,ready_to_ship:4,shipped:5,delivered:6,expired:2,cancelled:0,rejected:1},w={registered:[`submitted`],priced:[`pricing`,`awaiting_review`,`needs_correction`],proforma_sent:[`awaiting_settlement`,`awaiting_settlement_fix`,`cash_in_progress`,`cash_invoice_issued`,`awaiting_cash_payment`,`cash_payment_submitted`,`check_in_progress`],proforma_confirmed:[`awaiting_cash_confirmation`,`awaiting_check_review`,`check_needs_fix`,`check_rejected`,`checks_approved`,`cash_confirmed`],invoice_sent:[`final_approved`,`preparing`,`ready_to_ship`],shipped:[`shipped`],delivered:[`delivered`]};function T(e){return C[e]??0}function E(e){let t={};for(let n of S){if(n.id===`registered`){t[n.id]=m(e.createdAt);continue}let r=w[n.id]??[],i=[...e.statusHistory].reverse().find(e=>r.includes(e.toStatus));t[n.id]=i?m(i.changedAt):null}return t}var D={class:`page latest-status-page`},O={class:`page__scroll page__scroll--with-nav body`},k={class:`summary-card`},A={class:`summary-card__value`},j={key:0,class:`summary-card__meta`},M=u(p({__name:`LatestOrderStatusView`,setup(u){let p=v(),m=g(),C=_(),w=l(!0),M=r(()=>{let e=m.userOrders(C.user?.id??``);return e.length?e[0]:null}),N=r(()=>M.value?T(M.value.status):0),P=r(()=>M.value?E(M.value):{});s(async()=>{w.value=!0,await m.hydrate(),w.value=!1});function F(){p.push(`/categories`)}return(r,s)=>(e(),a(`div`,D,[n(y,{class:`mobile-only`,title:`آخرین وضعیت سفارش`,"show-back":``,centered:``,onBack:s[0]||=e=>f(p).push(`/`)}),s[3]||=c(`header`,{class:`desktop-page__head desktop-only`},[c(`div`,null,[c(`h1`,{class:`desktop-page__title`},`آخرین وضعیت سفارش`),c(`p`,{class:`desktop-page__subtitle`},`پیگیری مراحل آخرین سفارش ثبت‌شده`)])],-1),c(`div`,O,[w.value?(e(),d(b,{key:0})):M.value?(e(),a(o,{key:1},[c(`article`,k,[s[2]||=c(`p`,{class:`summary-card__label`},`سفارش شماره`,-1),c(`strong`,A,t(M.value.orderNumber),1),M.value.finalAmount?(e(),a(`p`,j,t(f(h)(M.value.finalAmount)),1)):i(``,!0)]),n(x,{steps:f(S),"current-index":N.value,timestamps:P.value},null,8,[`steps`,`current-index`,`timestamps`]),c(`button`,{type:`button`,class:`detail-link`,onClick:s[1]||=e=>f(p).push(`/orders/${M.value.id}`)},` مشاهده جزئیات سفارش `)],64)):(e(),a(`button`,{key:2,type:`button`,class:`empty-cta`,onClick:F},` سفارشی ثبت نکرده اید. لطفا جهت مشاهده محصولات کلیک کنید `))])]))}}),[[`__scopeId`,`data-v-030bc575`]]);export{M as default};
import{M as e,Pt as t,_ as n,c as r,d as i,f as a,i as o,k as s,l as c,nt as l,t as u,u as d,ut as f,v as p}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{i as m,n as h}from"./format-C72AoJ2H.js";import{C as g,c as _,f as v}from"./index-DYwnTikp.js";import{t as y}from"./PageHeader-C5c2Pzrn.js";import{t as b}from"./PageSkeleton-DYdjm4l9.js";import{t as x}from"./SimpleStatusTimeline-C5IzJmCG.js";var S=[{id:`registered`,label:`سفارش ثبت شد`},{id:`priced`,label:`قیمت گذاری انجام شد`},{id:`proforma_sent`,label:`پیش فاکتور ارسال شد`},{id:`proforma_confirmed`,label:`پیش فاکتور تایید شد`},{id:`invoice_sent`,label:`فاکتور ارسال شد`},{id:`shipped`,label:`بار ارسال شد`},{id:`delivered`,label:`بار توسط شما تحویل گرفته شد`}],C={submitted:0,awaiting_review:1,pricing:1,needs_correction:1,awaiting_settlement:2,awaiting_settlement_fix:2,cash_in_progress:2,cash_invoice_issued:2,awaiting_cash_payment:2,cash_payment_submitted:2,check_in_progress:2,awaiting_cash_confirmation:3,awaiting_check_review:3,check_needs_fix:3,check_rejected:3,checks_approved:3,cash_confirmed:3,final_approved:4,preparing:4,ready_to_ship:4,shipped:5,delivered:6,expired:2,cancelled:0,rejected:1},w={registered:[`submitted`],priced:[`pricing`,`awaiting_review`,`needs_correction`],proforma_sent:[`awaiting_settlement`,`awaiting_settlement_fix`,`cash_in_progress`,`cash_invoice_issued`,`awaiting_cash_payment`,`cash_payment_submitted`,`check_in_progress`],proforma_confirmed:[`awaiting_cash_confirmation`,`awaiting_check_review`,`check_needs_fix`,`check_rejected`,`checks_approved`,`cash_confirmed`],invoice_sent:[`final_approved`,`preparing`,`ready_to_ship`],shipped:[`shipped`],delivered:[`delivered`]};function T(e){return C[e]??0}function E(e){let t={};for(let n of S){if(n.id===`registered`){t[n.id]=m(e.createdAt);continue}let r=w[n.id]??[],i=[...e.statusHistory].reverse().find(e=>r.includes(e.toStatus));t[n.id]=i?m(i.changedAt):null}return t}var D={class:`page latest-status-page`},O={class:`page__scroll page__scroll--with-nav body`},k={class:`summary-card`},A={class:`summary-card__value`},j={key:0,class:`summary-card__meta`},M=u(p({__name:`LatestOrderStatusView`,setup(u){let p=g(),m=v(),C=_(),w=l(!0),M=r(()=>{let e=m.userOrders(C.user?.id??``);return e.length?e[0]:null}),N=r(()=>M.value?T(M.value.status):0),P=r(()=>M.value?E(M.value):{});s(async()=>{w.value=!0,await m.hydrate(),w.value=!1});function F(){p.push(`/categories`)}return(r,s)=>(e(),a(`div`,D,[n(y,{class:`mobile-only`,title:`آخرین وضعیت سفارش`,"show-back":``,centered:``,onBack:s[0]||=e=>f(p).push(`/`)}),s[3]||=c(`header`,{class:`desktop-page__head desktop-only`},[c(`div`,null,[c(`h1`,{class:`desktop-page__title`},`آخرین وضعیت سفارش`),c(`p`,{class:`desktop-page__subtitle`},`پیگیری مراحل آخرین سفارش ثبت‌شده`)])],-1),c(`div`,O,[w.value?(e(),d(b,{key:0})):M.value?(e(),a(o,{key:1},[c(`article`,k,[s[2]||=c(`p`,{class:`summary-card__label`},`سفارش شماره`,-1),c(`strong`,A,t(M.value.orderNumber),1),M.value.finalAmount?(e(),a(`p`,j,t(f(h)(M.value.finalAmount)),1)):i(``,!0)]),n(x,{steps:f(S),"current-index":N.value,timestamps:P.value},null,8,[`steps`,`current-index`,`timestamps`]),c(`button`,{type:`button`,class:`detail-link`,onClick:s[1]||=e=>f(p).push(`/orders/${M.value.id}`)},` مشاهده جزئیات سفارش `)],64)):(e(),a(`button`,{key:2,type:`button`,class:`empty-cta`,onClick:F},` سفارشی ثبت نکرده اید. لطفا جهت مشاهده محصولات کلیک کنید `))])]))}}),[[`__scopeId`,`data-v-030bc575`]]);export{M as default};
-1
View File
@@ -1 +0,0 @@
import{At as e,G as t,L as n,M as r,Pt as i,_ as a,c as o,d as s,f as c,g as l,l as u,nt as d,t as f,u as p,ut as m,v as h}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{u as g}from"./BasicIcon-ba1FsUKx.js";import{d as _,l as v}from"./format-C72AoJ2H.js";import{a as y}from"./validation-Duyyve7l.js";import{a as b,u as x,w as S}from"./index-CON313Q2.js";import{t as C}from"./AuthShell-CYH2Fv8N.js";import{t as w}from"./FormErrorBanner-Ud1D04xf.js";import{n as T,r as E,t as D}from"./formErrors-DglFjYkZ.js";var O=[`value`,`aria-invalid`],k={key:0,class:`auth-error`},A=[`disabled`],j=f(h({__name:`LoginView`,setup(f){let h=S(),j=x(),M=d(``),N=d({}),P=d(``),F=o(()=>M.value?_(M.value):``);function I(e){return e?y(e)?``:`شماره موبایل معتبر نیست. (مثال: ۰۹۱۲۱۲۳۴۵۶۷)`:`شماره موبایل را وارد کنید.`}function L(){N.value=T(N.value,`phone`),E(N.value)||(P.value=``)}function R(e){M.value=v(e),L()}function z(){if(!M.value)return;let e=I(M.value);e&&(N.value={...N.value,phone:e})}async function B(){N.value={},P.value=``;let e=v(M.value);M.value=e;let t=I(e);if(t){N.value={phone:t},P.value=D;return}let n=await j.requestOtp(e,{isRegister:!1});n.success?h.push({name:`otp`,query:{phone:e,mode:`login`}}):P.value=n.message??`خطا در ارسال کد تأیید.`}return(o,d)=>{let f=n(`RouterLink`);return r(),p(C,{"back-to":`/welcome`},{default:t(()=>[d[3]||=u(`h1`,{class:`auth-title`},`به نادمی تکس خوش آمدید`,-1),d[4]||=u(`p`,{class:`auth-lead`},`برای ادامه، وارد حساب کاربری خود شوید`,-1),u(`form`,{class:`auth-form`,onSubmit:g(B,[`prevent`])},[a(w,{message:P.value},null,8,[`message`]),u(`label`,{class:e([`auth-field`,{"is-invalid":!!N.value.phone}])},[a(b,{size:18,color:`#64748b`}),u(`input`,{value:F.value,type:`tel`,inputmode:`numeric`,autocomplete:`tel`,maxlength:`11`,placeholder:`شماره موبایل`,"aria-invalid":!!N.value.phone,"aria-label":`شماره موبایل`,onInput:d[0]||=e=>R(e.target.value),onBlur:z},null,40,O)],2),N.value.phone?(r(),c(`p`,k,i(N.value.phone),1)):s(``,!0),u(`button`,{class:`auth-submit`,type:`submit`,disabled:m(j).loading},i(m(j).loading?`در حال ارسال…`:`ورود`),9,A),d[2]||=u(`p`,{class:`auth-or`},[u(`span`,null,`یا`)],-1),a(f,{class:`auth-outline`,to:`/register`},{default:t(()=>[...d[1]||=[l(`ثبت‌نام در نادمی تکس`,-1)]]),_:1})],32)]),_:1})}}}),[[`__scopeId`,`data-v-5764ebe1`]]);export{j as default};
+1
View File
@@ -0,0 +1 @@
import{At as e,G as t,L as n,M as r,Pt as i,_ as a,c as o,d as s,f as c,g as l,l as u,nt as d,t as f,u as p,ut as m,v as h}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{l as g}from"./BasicIcon-DPmc0iaK.js";import{d as _,l as v}from"./format-C72AoJ2H.js";import{a as y}from"./validation-Duyyve7l.js";import{C as b,c as x}from"./index-DYwnTikp.js";import{t as S}from"./AuthShell-BRlVYnTX.js";import{t as C}from"./FormErrorBanner-Ud1D04xf.js";import{t as w}from"./IconPhone-BSof4l2r.js";import{n as T,r as E,t as D}from"./formErrors-DglFjYkZ.js";var O=[`value`,`aria-invalid`],k={key:0,class:`auth-error`},A=[`disabled`],j=f(h({__name:`LoginView`,setup(f){let h=b(),j=x(),M=d(``),N=d({}),P=d(``),F=o(()=>M.value?_(M.value):``);function I(e){return e?y(e)?``:`شماره موبایل معتبر نیست. (مثال: ۰۹۱۲۱۲۳۴۵۶۷)`:`شماره موبایل را وارد کنید.`}function L(){N.value=T(N.value,`phone`),E(N.value)||(P.value=``)}function R(e){M.value=v(e),L()}function z(){if(!M.value)return;let e=I(M.value);e&&(N.value={...N.value,phone:e})}async function B(){N.value={},P.value=``;let e=v(M.value);M.value=e;let t=I(e);if(t){N.value={phone:t},P.value=D;return}let n=await j.requestOtp(e,{isRegister:!1});n.success?h.push({name:`otp`,query:{phone:e,mode:`login`}}):P.value=n.message??`خطا در ارسال کد تأیید.`}return(o,d)=>{let f=n(`RouterLink`);return r(),p(S,{"back-to":`/welcome`},{default:t(()=>[d[3]||=u(`h1`,{class:`auth-title`},`به نادمی تکس خوش آمدید`,-1),d[4]||=u(`p`,{class:`auth-lead`},`برای ادامه، وارد حساب کاربری خود شوید`,-1),u(`form`,{class:`auth-form`,onSubmit:g(B,[`prevent`])},[a(C,{message:P.value},null,8,[`message`]),u(`label`,{class:e([`auth-field`,{"is-invalid":!!N.value.phone}])},[a(w,{size:18,color:`#64748b`}),u(`input`,{value:F.value,type:`tel`,inputmode:`numeric`,autocomplete:`tel`,maxlength:`11`,placeholder:`شماره موبایل`,"aria-invalid":!!N.value.phone,"aria-label":`شماره موبایل`,onInput:d[0]||=e=>R(e.target.value),onBlur:z},null,40,O)],2),N.value.phone?(r(),c(`p`,k,i(N.value.phone),1)):s(``,!0),u(`button`,{class:`auth-submit`,type:`submit`,disabled:m(j).loading},i(m(j).loading?`در حال ارسال…`:`ورود`),9,A),d[2]||=u(`p`,{class:`auth-or`},[u(`span`,null,`یا`)],-1),a(f,{class:`auth-outline`,to:`/register`},{default:t(()=>[...d[1]||=[l(`ثبت‌نام در نادمی تکس`,-1)]]),_:1})],32)]),_:1})}}}),[[`__scopeId`,`data-v-5764ebe1`]]);export{j 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
View File
@@ -0,0 +1 @@
import{G as e,M as t,Pt as n,_ as r,c as i,d as a,f as o,g as s,l as c,t as l,ut as u,v as d}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{a as f}from"./format-C72AoJ2H.js";import{C as p,S as m,f as h,r as g}from"./index-DYwnTikp.js";import{t as _}from"./PageHeader-C5c2Pzrn.js";import{t as v}from"./useGoBack-DnRfwA4b.js";var y={class:`page success-page`},b={class:`page__scroll success-page__scroll`},x={key:0,class:`card mb-4`},S={class:`info-row`},C={class:`info-row`},w={class:`info-row`},T=l(d({__name:`OrderSuccessView`,setup(l){let d=m(),T=p(),{goBack:E}=v(`/orders`),D=h(),O=i(()=>D.getOrderById(d.params.id));return(i,l)=>(t(),o(`div`,y,[r(_,{title:`ثبت موفق`,"show-back":``,centered:``,onBack:u(E)},null,8,[`onBack`]),c(`div`,b,[l[8]||=c(`div`,{class:`success-icon`},`✓`,-1),l[9]||=c(`h1`,{class:`page-title text-center`},`سفارش ثبت شد`,-1),l[10]||=c(`p`,{class:`text-center text-muted mb-4`},` سفارش شما با موفقیت ثبت شد. کارشناسان ما سفارش را بررسی و قیمت‌گذاری می‌کنند و به‌محض صدور فاکتور، از طریق پیامک و پنل کاربری به شما اطلاع می‌دهیم تا روش تسویه را انتخاب کنید. `,-1),O.value?(t(),o(`div`,x,[c(`div`,S,[l[2]||=c(`span`,null,`شماره سفارش:`,-1),c(`strong`,null,n(O.value.orderNumber),1)]),c(`div`,C,[l[3]||=c(`span`,null,`تأمین‌کننده:`,-1),c(`span`,null,n(O.value.companyName),1)]),c(`div`,w,[l[4]||=c(`span`,null,`متراژ:`,-1),c(`span`,null,n(u(f)(O.value.totalMeterage)),1)]),l[5]||=c(`div`,{class:`info-row`},[c(`span`,null,`وضعیت:`),c(`span`,null,`در انتظار قیمت‌گذاری`)],-1)])):a(``,!0),r(g,{block:``,onClick:l[0]||=e=>u(T).replace(`/orders/${O.value?.id}`)},{default:e(()=>[...l[6]||=[s(` مشاهده جزئیات سفارش `,-1)]]),_:1}),r(g,{block:``,variant:`outline`,class:`mt-2`,onClick:l[1]||=e=>u(T).replace(`/`)},{default:e(()=>[...l[7]||=[s(` بازگشت به خانه `,-1)]]),_:1})])]))}}),[[`__scopeId`,`data-v-bb2e861d`]]);export{T as default};
-1
View File
@@ -1 +0,0 @@
import{G as e,M as t,Pt as n,_ as r,c as i,d as a,f as o,g as s,l as c,t as l,ut as u,v as d}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{a as f}from"./format-C72AoJ2H.js";import{C as p,m,r as h,w as g}from"./index-CON313Q2.js";import{t as _}from"./PageHeader-juIsDT9M.js";import{t as v}from"./useGoBack-B1rclh3v.js";var y={class:`page success-page`},b={class:`page__scroll success-page__scroll`},x={key:0,class:`card mb-4`},S={class:`info-row`},C={class:`info-row`},w={class:`info-row`},T=l(d({__name:`OrderSuccessView`,setup(l){let d=p(),T=g(),{goBack:E}=v(`/orders`),D=m(),O=i(()=>D.getOrderById(d.params.id));return(i,l)=>(t(),o(`div`,y,[r(_,{title:`ثبت موفق`,"show-back":``,centered:``,onBack:u(E)},null,8,[`onBack`]),c(`div`,b,[l[8]||=c(`div`,{class:`success-icon`},`✓`,-1),l[9]||=c(`h1`,{class:`page-title text-center`},`سفارش ثبت شد`,-1),l[10]||=c(`p`,{class:`text-center text-muted mb-4`},` سفارش شما با موفقیت ثبت شد. کارشناسان ما سفارش را بررسی و قیمت‌گذاری می‌کنند و به‌محض صدور فاکتور، از طریق پیامک و پنل کاربری به شما اطلاع می‌دهیم تا روش تسویه را انتخاب کنید. `,-1),O.value?(t(),o(`div`,x,[c(`div`,S,[l[2]||=c(`span`,null,`شماره سفارش:`,-1),c(`strong`,null,n(O.value.orderNumber),1)]),c(`div`,C,[l[3]||=c(`span`,null,`تأمین‌کننده:`,-1),c(`span`,null,n(O.value.companyName),1)]),c(`div`,w,[l[4]||=c(`span`,null,`متراژ:`,-1),c(`span`,null,n(u(f)(O.value.totalMeterage)),1)]),l[5]||=c(`div`,{class:`info-row`},[c(`span`,null,`وضعیت:`),c(`span`,null,`در انتظار قیمت‌گذاری`)],-1)])):a(``,!0),r(h,{block:``,onClick:l[0]||=e=>u(T).replace(`/orders/${O.value?.id}`)},{default:e(()=>[...l[6]||=[s(` مشاهده جزئیات سفارش `,-1)]]),_:1}),r(h,{block:``,variant:`outline`,class:`mt-2`,onClick:l[1]||=e=>u(T).replace(`/`)},{default:e(()=>[...l[7]||=[s(` بازگشت به خانه `,-1)]]),_:1})])]))}}),[[`__scopeId`,`data-v-bb2e861d`]]);export{T as default};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{At as e,E as t,F as n,G as r,M as i,Pt as a,_ as o,c as s,d as c,f as l,g as u,i as d,k as f,l as p,nt as m,t as h,u as g,ut as _,v}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{u as y}from"./BasicIcon-ba1FsUKx.js";import{l as b}from"./dist-U-AqZ6hP.js";import{d as x,l as S,t as C}from"./format-C72AoJ2H.js";import{C as w,u as T,v as E,w as ee}from"./index-CON313Q2.js";import{t as te}from"./AuthShell-CYH2Fv8N.js";import{t as ne}from"./FormErrorBanner-Ud1D04xf.js";import{n as re,r as D,t as O}from"./formErrors-DglFjYkZ.js";var k={class:`auth-lead`},A={dir:`ltr`},ie={class:`otp-row`,dir:`ltr`,role:`group`,"aria-label":`کد تأیید`},ae=[`id`,`value`,`aria-label`,`onInput`,`onKeydown`,`onPaste`],j={key:0,class:`auth-error`},M=[`disabled`],N=[`disabled`],P=4,F=60,I=h(v({__name:`OtpView`,setup(h){let v=w(),I=ee(),L=T(),R=s(()=>{let e=v.query.phone,t=Array.isArray(e)?e[0]:e;return S(typeof t==`string`?t:``)}),z=s(()=>v.query.mode===`register`),B=m(Array.from({length:P},()=>``)),V=m([]),H=m({}),U=m(``),W=m(F),G=s(()=>B.value.join(``)),K=s(()=>W.value<=0&&!L.loading),q=s(()=>x(String(W.value))),{pause:oe,resume:se}=b(()=>{if(W.value<=1){W.value=0,oe();return}--W.value},1e3,{immediate:!1});function J(){H.value=re(H.value,`code`),D(H.value)||(U.value=``)}function ce(e,t){V.value[t]=e}function Y(e){let n=Math.max(0,Math.min(3,e));t(()=>V.value[n]?.focus())}function X(){W.value=F,se()}function Z(e,t=0){let n=C(e).slice(0,P-t);if(!n)return t;let r=[...B.value],i=t;for(let e of n){if(i>=P)break;r[i]=e,i+=1}return B.value=r,J(),Math.min(i,3)}function Q(){G.value.length===P&&!L.loading&&$()}function le(e,t){let n=t.target,r=C(n.value);if(r.length>1){let t=Z(r,e);n.value=B.value[e]??``,Y(t),Q();return}let i=r.slice(-1);B.value[e]=i,n.value=i,J(),i&&e<3?Y(e+1):i&&Q()}function ue(e,t){if(t.key===`Backspace`){if(B.value[e]){B.value[e]=``,J();return}e>0&&(B.value[e-1]=``,J(),Y(e-1));return}if(t.key===`ArrowLeft`){t.preventDefault(),Y(e-1);return}t.key===`ArrowRight`&&(t.preventDefault(),Y(e+1))}function de(e,t){t.preventDefault(),Y(Z(t.clipboardData?.getData(`text`)??``,e)),Q()}function fe(e){return e?x(e):``}async function $(){if(L.loading)return;H.value={},U.value=``;let e={};if(G.value.length<P&&(e.code=`کد تأیید را کامل وارد کنید.`),D(e)){H.value=e,U.value=O;return}let t=await L.confirmOtp(R.value,C(G.value));t.success?I.replace(`/`):(U.value=t.message??`کد تأیید نامعتبر است.`,B.value=Array.from({length:P},()=>``),Y(0))}async function pe(){if(!K.value)return;U.value=``,H.value={};let e=z.value?E():null;if(z.value&&!e){U.value=`برای ارسال مجدد کد، نام و نام خانوادگی لازم است. لطفاً دوباره ثبت‌نام را شروع کنید.`;return}let t=await L.requestOtp(R.value,{isRegister:z.value,firstName:e?.firstName,lastName:e?.lastName,referrerAgentCode:e?.referrerAgentCode});t.success?(B.value=Array.from({length:P},()=>``),X(),Y(0)):U.value=t.message??`خطا در ارسال مجدد کد.`}function me(){I.replace({name:z.value?`register`:`login`})}return f(()=>{if(!R.value){I.replace({name:`login`});return}X(),Y(0)}),(t,s)=>(i(),g(te,{"back-to":z.value?`/register`:`/login`},{default:r(()=>[s[2]||=p(`h1`,{class:`auth-title`},`کد تأیید`,-1),p(`p`,k,[s[0]||=u(` کد ارسال‌شده به `,-1),p(`span`,A,a(_(x)(R.value)),1),s[1]||=u(` را وارد کنید `,-1)]),p(`form`,{class:`auth-form`,onSubmit:y($,[`prevent`])},[o(ne,{message:U.value},null,8,[`message`]),p(`div`,ie,[(i(!0),l(d,null,n(B.value,(t,n)=>(i(),l(`input`,{id:`otp-${n}`,key:n,ref_for:!0,ref:e=>ce(e,n),class:e([`otp-box`,{"is-invalid":H.value.code}]),type:`text`,inputmode:`numeric`,autocomplete:`one-time-code`,maxlength:`1`,value:fe(t),"aria-label":`رقم ${_(x)(String(n+1))}`,onInput:e=>le(n,e),onKeydown:e=>ue(n,e),onPaste:e=>de(n,e)},null,42,ae))),128))]),H.value.code?(i(),l(`p`,j,a(H.value.code),1)):c(``,!0),p(`button`,{class:`otp-resend`,type:`button`,disabled:!K.value,onClick:pe},[K.value?(i(),l(d,{key:0},[u(`ارسال مجدد کد`)],64)):(i(),l(d,{key:1},[u(`ارسال مجدد کد (`+a(q.value)+` ثانیه)`,1)],64))],8,M),p(`button`,{class:`auth-submit`,type:`submit`,disabled:_(L).loading},a(_(L).loading?`در حال بررسی…`:`تأیید`),9,N),p(`button`,{type:`button`,class:`otp-edit`,onClick:me},`ویرایش شماره`)],32)]),_:1},8,[`back-to`]))}}),[[`__scopeId`,`data-v-dd3d5b1e`]]);export{I as default};
import{At as e,E as t,F as n,G as r,M as i,Pt as a,_ as o,c as s,d as c,f as l,g as u,i as d,k as f,l as p,nt as m,t as h,u as g,ut as _,v}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{l as y}from"./BasicIcon-DPmc0iaK.js";import{l as b}from"./dist-U-AqZ6hP.js";import{d as x,l as S,t as C}from"./format-C72AoJ2H.js";import{C as w,S as T,_ as E,c as ee}from"./index-DYwnTikp.js";import{t as te}from"./AuthShell-BRlVYnTX.js";import{t as ne}from"./FormErrorBanner-Ud1D04xf.js";import{n as re,r as D,t as O}from"./formErrors-DglFjYkZ.js";var k={class:`auth-lead`},A={dir:`ltr`},ie={class:`otp-row`,dir:`ltr`,role:`group`,"aria-label":`کد تأیید`},ae=[`id`,`value`,`aria-label`,`onInput`,`onKeydown`,`onPaste`],j={key:0,class:`auth-error`},M=[`disabled`],N=[`disabled`],P=4,F=60,I=h(v({__name:`OtpView`,setup(h){let v=T(),I=w(),L=ee(),R=s(()=>{let e=v.query.phone,t=Array.isArray(e)?e[0]:e;return S(typeof t==`string`?t:``)}),z=s(()=>v.query.mode===`register`),B=m(Array.from({length:P},()=>``)),V=m([]),H=m({}),U=m(``),W=m(F),G=s(()=>B.value.join(``)),K=s(()=>W.value<=0&&!L.loading),q=s(()=>x(String(W.value))),{pause:oe,resume:se}=b(()=>{if(W.value<=1){W.value=0,oe();return}--W.value},1e3,{immediate:!1});function J(){H.value=re(H.value,`code`),D(H.value)||(U.value=``)}function ce(e,t){V.value[t]=e}function Y(e){let n=Math.max(0,Math.min(3,e));t(()=>V.value[n]?.focus())}function X(){W.value=F,se()}function Z(e,t=0){let n=C(e).slice(0,P-t);if(!n)return t;let r=[...B.value],i=t;for(let e of n){if(i>=P)break;r[i]=e,i+=1}return B.value=r,J(),Math.min(i,3)}function Q(){G.value.length===P&&!L.loading&&$()}function le(e,t){let n=t.target,r=C(n.value);if(r.length>1){let t=Z(r,e);n.value=B.value[e]??``,Y(t),Q();return}let i=r.slice(-1);B.value[e]=i,n.value=i,J(),i&&e<3?Y(e+1):i&&Q()}function ue(e,t){if(t.key===`Backspace`){if(B.value[e]){B.value[e]=``,J();return}e>0&&(B.value[e-1]=``,J(),Y(e-1));return}if(t.key===`ArrowLeft`){t.preventDefault(),Y(e-1);return}t.key===`ArrowRight`&&(t.preventDefault(),Y(e+1))}function de(e,t){t.preventDefault(),Y(Z(t.clipboardData?.getData(`text`)??``,e)),Q()}function fe(e){return e?x(e):``}async function $(){if(L.loading)return;H.value={},U.value=``;let e={};if(G.value.length<P&&(e.code=`کد تأیید را کامل وارد کنید.`),D(e)){H.value=e,U.value=O;return}let t=await L.confirmOtp(R.value,C(G.value));t.success?I.replace(`/`):(U.value=t.message??`کد تأیید نامعتبر است.`,B.value=Array.from({length:P},()=>``),Y(0))}async function pe(){if(!K.value)return;U.value=``,H.value={};let e=z.value?E():null;if(z.value&&!e){U.value=`برای ارسال مجدد کد، نام و نام خانوادگی لازم است. لطفاً دوباره ثبت‌نام را شروع کنید.`;return}let t=await L.requestOtp(R.value,{isRegister:z.value,firstName:e?.firstName,lastName:e?.lastName,referrerAgentCode:e?.referrerAgentCode});t.success?(B.value=Array.from({length:P},()=>``),X(),Y(0)):U.value=t.message??`خطا در ارسال مجدد کد.`}function me(){I.replace({name:z.value?`register`:`login`})}return f(()=>{if(!R.value){I.replace({name:`login`});return}X(),Y(0)}),(t,s)=>(i(),g(te,{"back-to":z.value?`/register`:`/login`},{default:r(()=>[s[2]||=p(`h1`,{class:`auth-title`},`کد تأیید`,-1),p(`p`,k,[s[0]||=u(` کد ارسال‌شده به `,-1),p(`span`,A,a(_(x)(R.value)),1),s[1]||=u(` را وارد کنید `,-1)]),p(`form`,{class:`auth-form`,onSubmit:y($,[`prevent`])},[o(ne,{message:U.value},null,8,[`message`]),p(`div`,ie,[(i(!0),l(d,null,n(B.value,(t,n)=>(i(),l(`input`,{id:`otp-${n}`,key:n,ref_for:!0,ref:e=>ce(e,n),class:e([`otp-box`,{"is-invalid":H.value.code}]),type:`text`,inputmode:`numeric`,autocomplete:`one-time-code`,maxlength:`1`,value:fe(t),"aria-label":`رقم ${_(x)(String(n+1))}`,onInput:e=>le(n,e),onKeydown:e=>ue(n,e),onPaste:e=>de(n,e)},null,42,ae))),128))]),H.value.code?(i(),l(`p`,j,a(H.value.code),1)):c(``,!0),p(`button`,{class:`otp-resend`,type:`button`,disabled:!K.value,onClick:pe},[K.value?(i(),l(d,{key:0},[u(`ارسال مجدد کد`)],64)):(i(),l(d,{key:1},[u(`ارسال مجدد کد (`+a(q.value)+` ثانیه)`,1)],64))],8,M),p(`button`,{class:`auth-submit`,type:`submit`,disabled:_(L).loading},a(_(L).loading?`در حال بررسی…`:`تأیید`),9,N),p(`button`,{type:`button`,class:`otp-edit`,onClick:me},`ویرایش شماره`)],32)]),_:1},8,[`back-to`]))}}),[[`__scopeId`,`data-v-dd3d5b1e`]]);export{I as default};
@@ -1 +1 @@
import{I as e,M as t,Pt as n,T as r,_ as i,d as a,f as o,i as s,l as c,t as l,v as u}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{s as d}from"./index-CON313Q2.js";import{t as f}from"./IconChevronBack-DytWz6TD.js";var p={key:1,class:`nav-btn`},m={class:`page-nav__title`},h={class:`page-nav__trailing`},g={key:0,class:`page-nav__subtitle`},_={class:`header-text`},v={class:`page-title`},y={key:0,class:`page-subtitle`},b={class:`page-header__trailing`},x=l(u({inheritAttrs:!1,__name:`PageHeader`,props:{title:{},subtitle:{},showBack:{type:Boolean},centered:{type:Boolean}},emits:[`back`],setup(l){return(u,x)=>l.centered?(t(),o(s,{key:0},[c(`header`,r({class:`page-nav`},u.$attrs),[l.showBack?(t(),o(`button`,{key:0,type:`button`,class:`nav-btn`,"aria-label":`بازگشت`,onClick:x[0]||=e=>u.$emit(`back`)},[i(f,{size:20})])):(t(),o(`span`,p)),c(`h1`,m,n(l.title),1),c(`div`,h,[e(u.$slots,`trailing`,{},void 0,!0),i(d,{variant:`inline`,class:`mobile-only`})])],16),l.subtitle?(t(),o(`p`,g,n(l.subtitle),1)):a(``,!0)],64)):(t(),o(`header`,r({key:1,class:`page-header`},u.$attrs),[l.showBack?(t(),o(`button`,{key:0,type:`button`,class:`back-btn`,"aria-label":`بازگشت`,onClick:x[1]||=e=>u.$emit(`back`)},[i(f,{size:20})])):a(``,!0),c(`div`,_,[c(`h1`,v,n(l.title),1),l.subtitle?(t(),o(`p`,y,n(l.subtitle),1)):a(``,!0)]),c(`div`,b,[e(u.$slots,`trailing`,{},void 0,!0),i(d,{variant:`inline`,class:`mobile-only`})])],16))}}),[[`__scopeId`,`data-v-45fb00ff`]]);export{x as t};
import{I as e,M as t,Pt as n,T as r,_ as i,d as a,f as o,i as s,l as c,t as l,v as u}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{a as d}from"./index-DYwnTikp.js";import{t as f}from"./IconChevronBack-BsHmfODG.js";var p={key:1,class:`nav-btn`},m={class:`page-nav__title`},h={class:`page-nav__trailing`},g={key:0,class:`page-nav__subtitle`},_={class:`header-text`},v={class:`page-title`},y={key:0,class:`page-subtitle`},b={class:`page-header__trailing`},x=l(u({inheritAttrs:!1,__name:`PageHeader`,props:{title:{},subtitle:{},showBack:{type:Boolean},centered:{type:Boolean}},emits:[`back`],setup(l){return(u,x)=>l.centered?(t(),o(s,{key:0},[c(`header`,r({class:`page-nav`},u.$attrs),[l.showBack?(t(),o(`button`,{key:0,type:`button`,class:`nav-btn`,"aria-label":`بازگشت`,onClick:x[0]||=e=>u.$emit(`back`)},[i(f,{size:20})])):(t(),o(`span`,p)),c(`h1`,m,n(l.title),1),c(`div`,h,[e(u.$slots,`trailing`,{},void 0,!0),i(d,{variant:`inline`,class:`mobile-only`})])],16),l.subtitle?(t(),o(`p`,g,n(l.subtitle),1)):a(``,!0)],64)):(t(),o(`header`,r({key:1,class:`page-header`},u.$attrs),[l.showBack?(t(),o(`button`,{key:0,type:`button`,class:`back-btn`,"aria-label":`بازگشت`,onClick:x[1]||=e=>u.$emit(`back`)},[i(f,{size:20})])):a(``,!0),c(`div`,_,[c(`h1`,v,n(l.title),1),l.subtitle?(t(),o(`p`,y,n(l.subtitle),1)):a(``,!0)]),c(`div`,b,[e(u.$slots,`trailing`,{},void 0,!0),i(d,{variant:`inline`,class:`mobile-only`})])],16))}}),[[`__scopeId`,`data-v-45fb00ff`]]);export{x as t};
@@ -1 +1 @@
import{At as e,D as t,F as n,M as r,Pt as i,U as a,c as o,d as s,f as c,i as l,k as u,l as d,nt as f,t as p,ut as m,v as h}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{u as g}from"./BasicIcon-ba1FsUKx.js";import{_,b as v,d as y,f as b,g as x,h as S,m as C,p as w}from"./format-C72AoJ2H.js";var T={key:0,class:`form-label`},E=[`disabled`],D={class:`persian-date-input__header`},O={class:`persian-date-input__month`},k={class:`persian-date-input__weekdays`},A={class:`persian-date-input__grid`},j={key:0,class:`persian-date-input__cell persian-date-input__cell--empty`},M=[`onClick`],N={key:2,class:`input-error-text`},P={key:3,class:`form-hint`},F=p(h({__name:`PersianDateInput`,props:{modelValue:{},label:{},placeholder:{},hint:{},error:{},disabled:{type:Boolean}},emits:[`update:modelValue`],setup(p,{emit:h}){let F=p,I=h,L=f(null),R=f(!1),z=f(v().jy),B=f(v().jm),V=o(()=>x(F.modelValue??``)),H=o(()=>{if(!V.value)return``;let{jy:e,jm:t,jd:n}=V.value;return S(e,t,n)}),U=o(()=>C(z.value,B.value)),W=o(()=>`${b[B.value-1]} ${y(String(z.value))}`);a(()=>F.modelValue,e=>{let t=x(e??``);t&&(z.value=t.jy,B.value=t.jm)},{immediate:!0});function G(){F.disabled||(R.value=!R.value)}function K(){R.value=!1}function q(e){I(`update:modelValue`,_(z.value,B.value,e)),K()}function J(e){let t=B.value+e,n=z.value;t>12?(t=1,n+=1):t<1&&(t=12,--n),B.value=t,z.value=n}function Y(){let e=v();z.value=e.jy,B.value=e.jm,I(`update:modelValue`,_(e.jy,e.jm,e.jd)),K()}function X(e){if(!V.value)return!1;let{jy:t,jm:n,jd:r}=V.value;return t===z.value&&n===B.value&&r===e}function Z(e){let t=v();return t.jy===z.value&&t.jm===B.value&&t.jd===e}function Q(e){L.value?.contains(e.target)||K()}return u(()=>{document.addEventListener(`click`,Q)}),t(()=>{document.removeEventListener(`click`,Q)}),(t,a)=>(r(),c(`div`,{ref_key:`rootRef`,ref:L,class:`form-group persian-date-input`},[p.label?(r(),c(`label`,T,i(p.label),1)):s(``,!0),d(`button`,{type:`button`,class:e([`input persian-date-input__trigger`,{"input-error":p.error,"is-open":R.value}]),disabled:p.disabled,onClick:g(G,[`stop`])},[d(`span`,{class:e({"persian-date-input__placeholder":!H.value})},i(H.value||p.placeholder||`انتخاب تاریخ`),3),a[3]||=d(`span`,{class:`persian-date-input__icon`,"aria-hidden":`true`},[d(`svg`,{width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`},[d(`rect`,{x:`3`,y:`5`,width:`18`,height:`16`,rx:`2`,stroke:`currentColor`,"stroke-width":`1.5`}),d(`path`,{d:`M8 3v4M16 3v4M3 10h18`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`})])],-1)],10,E),R.value?(r(),c(`div`,{key:1,class:`persian-date-input__panel`,onClick:a[2]||=g(()=>{},[`stop`])},[d(`div`,D,[d(`button`,{type:`button`,class:`persian-date-input__nav`,onClick:a[0]||=e=>J(-1)},`‹`),d(`strong`,O,i(W.value),1),d(`button`,{type:`button`,class:`persian-date-input__nav`,onClick:a[1]||=e=>J(1)},`›`)]),d(`div`,k,[(r(!0),c(l,null,n(m(w),e=>(r(),c(`span`,{key:e},i(e),1))),128))]),d(`div`,A,[(r(!0),c(l,null,n(U.value,(t,n)=>(r(),c(l,{key:n},[t===null?(r(),c(`span`,j)):(r(),c(`button`,{key:1,type:`button`,class:e([`persian-date-input__cell`,{"persian-date-input__cell--selected":X(t),"persian-date-input__cell--today":Z(t)}]),onClick:e=>q(t)},i(m(y)(String(t))),11,M))],64))),128))]),d(`button`,{type:`button`,class:`persian-date-input__today`,onClick:Y},`امروز`)])):s(``,!0),p.error?(r(),c(`p`,N,i(p.error),1)):p.hint?(r(),c(`p`,P,i(p.hint),1)):s(``,!0)],512))}}),[[`__scopeId`,`data-v-f02e5adc`]]);export{F as t};
import{At as e,D as t,F as n,M as r,Pt as i,U as a,c as o,d as s,f as c,i as l,k as u,l as d,nt as f,t as p,ut as m,v as h}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{l as g}from"./BasicIcon-DPmc0iaK.js";import{_,b as v,d as y,f as b,g as x,h as S,m as C,p as w}from"./format-C72AoJ2H.js";var T={key:0,class:`form-label`},E=[`disabled`],D={class:`persian-date-input__header`},O={class:`persian-date-input__month`},k={class:`persian-date-input__weekdays`},A={class:`persian-date-input__grid`},j={key:0,class:`persian-date-input__cell persian-date-input__cell--empty`},M=[`onClick`],N={key:2,class:`input-error-text`},P={key:3,class:`form-hint`},F=p(h({__name:`PersianDateInput`,props:{modelValue:{},label:{},placeholder:{},hint:{},error:{},disabled:{type:Boolean}},emits:[`update:modelValue`],setup(p,{emit:h}){let F=p,I=h,L=f(null),R=f(!1),z=f(v().jy),B=f(v().jm),V=o(()=>x(F.modelValue??``)),H=o(()=>{if(!V.value)return``;let{jy:e,jm:t,jd:n}=V.value;return S(e,t,n)}),U=o(()=>C(z.value,B.value)),W=o(()=>`${b[B.value-1]} ${y(String(z.value))}`);a(()=>F.modelValue,e=>{let t=x(e??``);t&&(z.value=t.jy,B.value=t.jm)},{immediate:!0});function G(){F.disabled||(R.value=!R.value)}function K(){R.value=!1}function q(e){I(`update:modelValue`,_(z.value,B.value,e)),K()}function J(e){let t=B.value+e,n=z.value;t>12?(t=1,n+=1):t<1&&(t=12,--n),B.value=t,z.value=n}function Y(){let e=v();z.value=e.jy,B.value=e.jm,I(`update:modelValue`,_(e.jy,e.jm,e.jd)),K()}function X(e){if(!V.value)return!1;let{jy:t,jm:n,jd:r}=V.value;return t===z.value&&n===B.value&&r===e}function Z(e){let t=v();return t.jy===z.value&&t.jm===B.value&&t.jd===e}function Q(e){L.value?.contains(e.target)||K()}return u(()=>{document.addEventListener(`click`,Q)}),t(()=>{document.removeEventListener(`click`,Q)}),(t,a)=>(r(),c(`div`,{ref_key:`rootRef`,ref:L,class:`form-group persian-date-input`},[p.label?(r(),c(`label`,T,i(p.label),1)):s(``,!0),d(`button`,{type:`button`,class:e([`input persian-date-input__trigger`,{"input-error":p.error,"is-open":R.value}]),disabled:p.disabled,onClick:g(G,[`stop`])},[d(`span`,{class:e({"persian-date-input__placeholder":!H.value})},i(H.value||p.placeholder||`انتخاب تاریخ`),3),a[3]||=d(`span`,{class:`persian-date-input__icon`,"aria-hidden":`true`},[d(`svg`,{width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`},[d(`rect`,{x:`3`,y:`5`,width:`18`,height:`16`,rx:`2`,stroke:`currentColor`,"stroke-width":`1.5`}),d(`path`,{d:`M8 3v4M16 3v4M3 10h18`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`})])],-1)],10,E),R.value?(r(),c(`div`,{key:1,class:`persian-date-input__panel`,onClick:a[2]||=g(()=>{},[`stop`])},[d(`div`,D,[d(`button`,{type:`button`,class:`persian-date-input__nav`,onClick:a[0]||=e=>J(-1)},`‹`),d(`strong`,O,i(W.value),1),d(`button`,{type:`button`,class:`persian-date-input__nav`,onClick:a[1]||=e=>J(1)},`›`)]),d(`div`,k,[(r(!0),c(l,null,n(m(w),e=>(r(),c(`span`,{key:e},i(e),1))),128))]),d(`div`,A,[(r(!0),c(l,null,n(U.value,(t,n)=>(r(),c(l,{key:n},[t===null?(r(),c(`span`,j)):(r(),c(`button`,{key:1,type:`button`,class:e([`persian-date-input__cell`,{"persian-date-input__cell--selected":X(t),"persian-date-input__cell--today":Z(t)}]),onClick:e=>q(t)},i(m(y)(String(t))),11,M))],64))),128))]),d(`button`,{type:`button`,class:`persian-date-input__today`,onClick:Y},`امروز`)])):s(``,!0),p.error?(r(),c(`p`,N,i(p.error),1)):p.hint?(r(),c(`p`,P,i(p.hint),1)):s(``,!0)],512))}}),[[`__scopeId`,`data-v-f02e5adc`]]);export{F as t};
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{t as e}from"./CheckListView-Tts4g0Eq.js";import{M as t,u as n,v as r}from"./_plugin-vue_export-helper-1xMDlcEE.js";var i=r({__name:`ProfileChecksView`,setup(r){return(r,i)=>(t(),n(e))}});export{i as default};
import{t as e}from"./CheckListView-DEwQImhv.js";import{M as t,u as n,v as r}from"./_plugin-vue_export-helper-1xMDlcEE.js";var i=r({__name:`ProfileChecksView`,setup(r){return(r,i)=>(t(),n(e))}});export{i as default};
@@ -1 +1 @@
import{At as e,F as t,G as n,M as r,Pt as i,_ as a,c as o,d as s,f as c,g as l,i as u,l as d,nt as f,t as p,u as m,ut as h,v as g}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as _}from"./BasicIcon-ba1FsUKx.js";import{u as v}from"./dist-U-AqZ6hP.js";import{t as y}from"./theme-DDmZuxb4.js";import{m as b,r as x,u as S,w as C}from"./index-CON313Q2.js";import{t as w}from"./ProfileSubpageLayout-CUE0Dzm7.js";var T={class:`settings-page`},E={class:`settings-links`,"aria-label":`حساب کاربری`},D={class:`settings-link__icon`,"aria-hidden":`true`},O={class:`settings-link__icon`,"aria-hidden":`true`},k={class:`settings-link__label`},A={key:0},j={class:`display-fieldset`},M={class:`display-grid`,role:`radiogroup`,"aria-label":`حالت نمایش`},N=[`aria-checked`,`onClick`],P={class:`theme-card__icon`,"aria-hidden":`true`},F={class:`theme-card__body`},I={class:`theme-card__label`},L={class:`theme-card__desc`},R={class:`theme-card__check`,"aria-hidden":`true`},z={key:0,class:`display-saved`},B=p(g({__name:`ProfileDisplayView`,setup(p){let g=C(),B=S(),V=b(),H=y(),U=f(!1),{start:W}=v(()=>{U.value=!1},2e3),G=[{value:`light`,label:`روشن`,description:`پس‌زمینه روشن و کنتراست بالا`,icon:`vuesax-linear:sun-1`},{value:`dark`,label:`تاریک`,description:`مناسب استفاده در شب`,icon:`vuesax-linear:moon`},{value:`system`,label:`سیستم`,description:`هم‌تراز با تنظیمات دستگاه`,icon:`vuesax-linear:mobile`}],K=o(()=>V.draftChecks.length);function q(){U.value=!0,W()}function J(){B.logout(),g.replace(`/welcome`)}return(o,f)=>(r(),m(w,{title:`تنظیمات`,subtitle:`نمایش، حساب کاربری و خروج`},{default:n(()=>[d(`div`,T,[d(`nav`,E,[d(`button`,{type:`button`,class:`settings-link`,onClick:f[0]||=e=>h(g).push(`/profile/edit`)},[d(`span`,D,[a(_,{icon:`vuesax-linear:profile-circle`,size:20,"stroke-width":1.5})]),f[2]||=d(`span`,{class:`settings-link__label`},`اطلاعات کاربری`,-1),a(_,{class:`settings-link__chevron`,icon:`vuesax-linear:arrow-left-1`,size:16,"stroke-width":1.5})]),d(`button`,{type:`button`,class:`settings-link`,onClick:f[1]||=e=>h(g).push(`/profile/checks`)},[d(`span`,O,[a(_,{icon:`vuesax-linear:card`,size:20,"stroke-width":1.5})]),d(`span`,k,[f[3]||=l(` لیست چک‌ها `,-1),K.value?(r(),c(`em`,A,`(`+i(K.value)+`)`,1)):s(``,!0)]),a(_,{class:`settings-link__chevron`,icon:`vuesax-linear:arrow-left-1`,size:16,"stroke-width":1.5})])]),d(`fieldset`,j,[f[4]||=d(`legend`,{class:`display-fieldset__legend`},`حالت نمایش`,-1),d(`div`,M,[(r(),c(u,null,t(G,t=>d(`button`,{key:t.value,type:`button`,class:e([`theme-card`,{"theme-card--active":h(H).preference===t.value}]),role:`radio`,"aria-checked":h(H).preference===t.value,onClick:e=>h(H).preference=t.value},[d(`span`,P,[a(_,{icon:t.icon,size:26,"stroke-width":1.5},null,8,[`icon`])]),d(`span`,F,[d(`strong`,I,i(t.label),1),d(`span`,L,i(t.description),1)]),d(`span`,R,[h(H).preference===t.value?(r(),m(_,{key:0,icon:`vuesax-linear:tick-circle`,size:20,"stroke-width":1.75})):s(``,!0)])],10,N)),64))])]),a(x,{block:``,onClick:q},{default:n(()=>[...f[5]||=[l(`ذخیره تنظیمات`,-1)]]),_:1}),U.value?(r(),c(`p`,z,`تنظیمات نمایش ذخیره شد ✓`)):s(``,!0),d(`button`,{type:`button`,class:`settings-logout`,onClick:J},`خروج`)])]),_:1}))}}),[[`__scopeId`,`data-v-f16dc950`]]);export{B as default};
import{At as e,F as t,G as n,M as r,Pt as i,_ as a,c as o,d as s,f as c,g as l,i as u,l as d,nt as f,t as p,u as m,ut as h,v as g}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as _}from"./BasicIcon-DPmc0iaK.js";import{u as v}from"./dist-U-AqZ6hP.js";import{t as y}from"./theme-DDmZuxb4.js";import{C as b,c as x,f as S,r as C}from"./index-DYwnTikp.js";import{t as w}from"./ProfileSubpageLayout-CbD3-u8j.js";var T={class:`settings-page`},E={class:`settings-links`,"aria-label":`حساب کاربری`},D={class:`settings-link__icon`,"aria-hidden":`true`},O={class:`settings-link__icon`,"aria-hidden":`true`},k={class:`settings-link__label`},A={key:0},j={class:`display-fieldset`},M={class:`display-grid`,role:`radiogroup`,"aria-label":`حالت نمایش`},N=[`aria-checked`,`onClick`],P={class:`theme-card__icon`,"aria-hidden":`true`},F={class:`theme-card__body`},I={class:`theme-card__label`},L={class:`theme-card__desc`},R={class:`theme-card__check`,"aria-hidden":`true`},z={key:0,class:`display-saved`},B=p(g({__name:`ProfileDisplayView`,setup(p){let g=b(),B=x(),V=S(),H=y(),U=f(!1),{start:W}=v(()=>{U.value=!1},2e3),G=[{value:`light`,label:`روشن`,description:`پس‌زمینه روشن و کنتراست بالا`,icon:`vuesax-linear:sun-1`},{value:`dark`,label:`تاریک`,description:`مناسب استفاده در شب`,icon:`vuesax-linear:moon`},{value:`system`,label:`سیستم`,description:`هم‌تراز با تنظیمات دستگاه`,icon:`vuesax-linear:mobile`}],K=o(()=>V.draftChecks.length);function q(){U.value=!0,W()}function J(){B.logout(),g.replace(`/welcome`)}return(o,f)=>(r(),m(w,{title:`تنظیمات`,subtitle:`نمایش، حساب کاربری و خروج`},{default:n(()=>[d(`div`,T,[d(`nav`,E,[d(`button`,{type:`button`,class:`settings-link`,onClick:f[0]||=e=>h(g).push(`/profile/edit`)},[d(`span`,D,[a(_,{icon:`vuesax-linear:profile-circle`,size:20,"stroke-width":1.5})]),f[2]||=d(`span`,{class:`settings-link__label`},`اطلاعات کاربری`,-1),a(_,{class:`settings-link__chevron`,icon:`vuesax-linear:arrow-left-1`,size:16,"stroke-width":1.5})]),d(`button`,{type:`button`,class:`settings-link`,onClick:f[1]||=e=>h(g).push(`/profile/checks`)},[d(`span`,O,[a(_,{icon:`vuesax-linear:card`,size:20,"stroke-width":1.5})]),d(`span`,k,[f[3]||=l(` لیست چک‌ها `,-1),K.value?(r(),c(`em`,A,`(`+i(K.value)+`)`,1)):s(``,!0)]),a(_,{class:`settings-link__chevron`,icon:`vuesax-linear:arrow-left-1`,size:16,"stroke-width":1.5})])]),d(`fieldset`,j,[f[4]||=d(`legend`,{class:`display-fieldset__legend`},`حالت نمایش`,-1),d(`div`,M,[(r(),c(u,null,t(G,t=>d(`button`,{key:t.value,type:`button`,class:e([`theme-card`,{"theme-card--active":h(H).preference===t.value}]),role:`radio`,"aria-checked":h(H).preference===t.value,onClick:e=>h(H).preference=t.value},[d(`span`,P,[a(_,{icon:t.icon,size:26,"stroke-width":1.5},null,8,[`icon`])]),d(`span`,F,[d(`strong`,I,i(t.label),1),d(`span`,L,i(t.description),1)]),d(`span`,R,[h(H).preference===t.value?(r(),m(_,{key:0,icon:`vuesax-linear:tick-circle`,size:20,"stroke-width":1.75})):s(``,!0)])],10,N)),64))])]),a(C,{block:``,onClick:q},{default:n(()=>[...f[5]||=[l(`ذخیره تنظیمات`,-1)]]),_:1}),U.value?(r(),c(`p`,z,`تنظیمات نمایش ذخیره شد ✓`)):s(``,!0),d(`button`,{type:`button`,class:`settings-logout`,onClick:J},`خروج`)])]),_:1}))}}),[[`__scopeId`,`data-v-f16dc950`]]);export{B 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{At as e,F as t,G as n,M as r,Pt as i,_ as a,c as o,d as s,f as c,g as l,i as u,k as d,l as f,t as p,u as m,ut as h,v as g}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as _}from"./BasicIcon-ba1FsUKx.js";import{i as v}from"./format-C72AoJ2H.js";import{p as y,r as b,w as x}from"./index-CON313Q2.js";import{t as S}from"./EmptyState-DYhkpGhZ.js";import{t as C}from"./ProfileSubpageLayout-CUE0Dzm7.js";var w={key:0,class:`notif-box`},T={class:`notif-box__head`},E={class:`notif-box__count`},D=[`onClick`],O={class:`notif-row__icon`,"aria-hidden":`true`},k={class:`notif-row__body`},A={class:`notif-row__title-row`},j={class:`notif-row__title`},M={key:0,class:`notif-row__dot`,"aria-label":`خوانده‌نشده`},N={class:`notif-row__text`},P={class:`notif-row__time`},F=p(g({__name:`ProfileNotificationsView`,setup(p){let g=x(),F=y(),I=o(()=>F.items),L=o(()=>F.hasUnread),R={info:`vuesax-linear:information`,success:`vuesax-linear:tick-circle`,warning:`vuesax-linear:timer`,danger:`vuesax-linear:close-circle`};d(()=>{F.hydrate()});async function z(e){await F.markRead(e.id),e.link&&g.push(e.link)}return(o,d)=>(r(),m(C,{title:`اعلان‌ها`,subtitle:`سفارش‌ها، پیشنهاد محصول و سایر اعلان‌ها`},{default:n(()=>[I.value.length?(r(),c(`div`,w,[f(`div`,T,[f(`span`,E,i(L.value?`${h(F).unreadCount} اعلان خوانده‌نشده`:`همه خوانده شده`),1),L.value?(r(),m(b,{key:0,variant:`outline`,class:`notif-box__mark`,onClick:d[0]||=e=>h(F).markAllRead()},{default:n(()=>[...d[2]||=[l(` خواندن همه `,-1)]]),_:1})):s(``,!0)]),(r(!0),c(u,null,t(I.value,t=>(r(),c(`button`,{key:t.id,type:`button`,class:e([`notif-row`,[`notif-row--${t.tone}`,{"notif-row--unread":!t.isRead}]]),onClick:e=>z(t)},[f(`span`,O,[a(_,{icon:R[t.tone],size:22,"stroke-width":1.5},null,8,[`icon`])]),f(`span`,k,[f(`span`,A,[f(`strong`,j,i(t.title),1),t.isRead?s(``,!0):(r(),c(`span`,M))]),f(`span`,N,i(t.body),1),f(`span`,P,i(h(v)(t.sentAt)),1)])],10,D))),128))])):(r(),m(S,{key:1,icon:`vuesax-linear:notification-bing`,title:`اعلانی ندارید`,message:`وقتی فاکتور سفارشتان صادر شود، پیشنهاد محصولی برایتان ثبت شود یا وضعیت پرداخت تغییر کند، همین‌جا خبردار می‌شوید.`},{default:n(()=>[a(b,{variant:`outline`,onClick:d[1]||=e=>h(g).push(`/orders`)},{default:n(()=>[...d[3]||=[l(`سفارش‌های من`,-1)]]),_:1})]),_:1}))]),_:1}))}}),[[`__scopeId`,`data-v-7e884b50`]]);export{F as default};
import{At as e,F as t,G as n,M as r,Pt as i,_ as a,c as o,d as s,f as c,g as l,i as u,k as d,l as f,t as p,u as m,ut as h,v as g}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as _}from"./BasicIcon-DPmc0iaK.js";import{i as v}from"./format-C72AoJ2H.js";import{C as y,d as b,r as x}from"./index-DYwnTikp.js";import{t as S}from"./EmptyState-DoHTAy4d.js";import{t as C}from"./ProfileSubpageLayout-CbD3-u8j.js";var w={key:0,class:`notif-box`},T={class:`notif-box__head`},E={class:`notif-box__count`},D=[`onClick`],O={class:`notif-row__icon`,"aria-hidden":`true`},k={class:`notif-row__body`},A={class:`notif-row__title-row`},j={class:`notif-row__title`},M={key:0,class:`notif-row__dot`,"aria-label":`خوانده‌نشده`},N={class:`notif-row__text`},P={class:`notif-row__time`},F=p(g({__name:`ProfileNotificationsView`,setup(p){let g=y(),F=b(),I=o(()=>F.items),L=o(()=>F.hasUnread),R={info:`vuesax-linear:information`,success:`vuesax-linear:tick-circle`,warning:`vuesax-linear:timer`,danger:`vuesax-linear:close-circle`};d(()=>{F.hydrate()});async function z(e){await F.markRead(e.id),e.link&&g.push(e.link)}return(o,d)=>(r(),m(C,{title:`اعلان‌ها`,subtitle:`سفارش‌ها، پیشنهاد محصول و سایر اعلان‌ها`},{default:n(()=>[I.value.length?(r(),c(`div`,w,[f(`div`,T,[f(`span`,E,i(L.value?`${h(F).unreadCount} اعلان خوانده‌نشده`:`همه خوانده شده`),1),L.value?(r(),m(x,{key:0,variant:`outline`,class:`notif-box__mark`,onClick:d[0]||=e=>h(F).markAllRead()},{default:n(()=>[...d[2]||=[l(` خواندن همه `,-1)]]),_:1})):s(``,!0)]),(r(!0),c(u,null,t(I.value,t=>(r(),c(`button`,{key:t.id,type:`button`,class:e([`notif-row`,[`notif-row--${t.tone}`,{"notif-row--unread":!t.isRead}]]),onClick:e=>z(t)},[f(`span`,O,[a(_,{icon:R[t.tone],size:22,"stroke-width":1.5},null,8,[`icon`])]),f(`span`,k,[f(`span`,A,[f(`strong`,j,i(t.title),1),t.isRead?s(``,!0):(r(),c(`span`,M))]),f(`span`,N,i(t.body),1),f(`span`,P,i(h(v)(t.sentAt)),1)])],10,D))),128))])):(r(),m(S,{key:1,icon:`vuesax-linear:notification-bing`,title:`اعلانی ندارید`,message:`وقتی فاکتور سفارشتان صادر شود، پیشنهاد محصولی برایتان ثبت شود یا وضعیت پرداخت تغییر کند، همین‌جا خبردار می‌شوید.`},{default:n(()=>[a(x,{variant:`outline`,onClick:d[1]||=e=>h(g).push(`/orders`)},{default:n(()=>[...d[3]||=[l(`سفارش‌های من`,-1)]]),_:1})]),_:1}))]),_:1}))}}),[[`__scopeId`,`data-v-7e884b50`]]);export{F as default};
@@ -1 +1 @@
import{G as e,M as t,_ as n,d as r,f as i,g as a,l as o,nt as s,t as c,u as l,v as u}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{r as d}from"./index-CON313Q2.js";import{t as f}from"./FormErrorBanner-Ud1D04xf.js";import{n as p,r as m,t as h}from"./formErrors-DglFjYkZ.js";import{t as g}from"./BaseInput-CpE3bVJZ.js";import{t as _}from"./ProfileSubpageLayout-CUE0Dzm7.js";var v={class:`settings-form`},y={key:0,class:`settings-form__saved`},b=c(u({__name:`ProfileSecurityView`,setup(c){let u=s(``),b=s(``),x=s(``),S=s({}),C=s(``),w=s(!1);function T(e){S.value=p(S.value,e),m(S.value)||(C.value=``)}function E(){S.value={},C.value=``,w.value=!1;let e={};if(u.value||(e.currentPassword=`رمز فعلی الزامی است.`),b.value.length<6&&(e.newPassword=`رمز جدید باید حداقل ۶ کاراکتر باشد.`),x.value!==b.value&&(e.confirmPassword=`تکرار رمز با رمز جدید یکسان نیست.`),m(e)){S.value=e,C.value=h;return}u.value=``,b.value=``,x.value=``,w.value=!0,setTimeout(()=>{w.value=!1},2e3)}return(s,c)=>(t(),l(_,{title:`امنیت حساب`,subtitle:`تغییر رمز عبور و تنظیمات ورود`},{default:e(()=>[n(f,{message:C.value},null,8,[`message`]),o(`div`,v,[n(g,{modelValue:u.value,"onUpdate:modelValue":[c[0]||=e=>u.value=e,c[1]||=e=>T(`currentPassword`)],type:`password`,label:`رمز عبور فعلی`,error:S.value.currentPassword},null,8,[`modelValue`,`error`]),n(g,{modelValue:b.value,"onUpdate:modelValue":[c[2]||=e=>b.value=e,c[3]||=e=>T(`newPassword`)],type:`password`,label:`رمز عبور جدید`,error:S.value.newPassword},null,8,[`modelValue`,`error`]),n(g,{modelValue:x.value,"onUpdate:modelValue":[c[4]||=e=>x.value=e,c[5]||=e=>T(`confirmPassword`)],type:`password`,label:`تکرار رمز عبور جدید`,error:S.value.confirmPassword},null,8,[`modelValue`,`error`]),n(d,{block:``,onClick:E},{default:e(()=>[...c[6]||=[a(`ذخیره رمز جدید`,-1)]]),_:1}),w.value?(t(),i(`p`,y,`رمز عبور با موفقیت تغییر کرد ✓`)):r(``,!0)])]),_:1}))}}),[[`__scopeId`,`data-v-074827a2`]]);export{b as default};
import{G as e,M as t,_ as n,d as r,f as i,g as a,l as o,nt as s,t as c,u as l,v as u}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{r as d}from"./index-DYwnTikp.js";import{t as f}from"./FormErrorBanner-Ud1D04xf.js";import{n as p,r as m,t as h}from"./formErrors-DglFjYkZ.js";import{t as g}from"./BaseInput-CpE3bVJZ.js";import{t as _}from"./ProfileSubpageLayout-CbD3-u8j.js";var v={class:`settings-form`},y={key:0,class:`settings-form__saved`},b=c(u({__name:`ProfileSecurityView`,setup(c){let u=s(``),b=s(``),x=s(``),S=s({}),C=s(``),w=s(!1);function T(e){S.value=p(S.value,e),m(S.value)||(C.value=``)}function E(){S.value={},C.value=``,w.value=!1;let e={};if(u.value||(e.currentPassword=`رمز فعلی الزامی است.`),b.value.length<6&&(e.newPassword=`رمز جدید باید حداقل ۶ کاراکتر باشد.`),x.value!==b.value&&(e.confirmPassword=`تکرار رمز با رمز جدید یکسان نیست.`),m(e)){S.value=e,C.value=h;return}u.value=``,b.value=``,x.value=``,w.value=!0,setTimeout(()=>{w.value=!1},2e3)}return(s,c)=>(t(),l(_,{title:`امنیت حساب`,subtitle:`تغییر رمز عبور و تنظیمات ورود`},{default:e(()=>[n(f,{message:C.value},null,8,[`message`]),o(`div`,v,[n(g,{modelValue:u.value,"onUpdate:modelValue":[c[0]||=e=>u.value=e,c[1]||=e=>T(`currentPassword`)],type:`password`,label:`رمز عبور فعلی`,error:S.value.currentPassword},null,8,[`modelValue`,`error`]),n(g,{modelValue:b.value,"onUpdate:modelValue":[c[2]||=e=>b.value=e,c[3]||=e=>T(`newPassword`)],type:`password`,label:`رمز عبور جدید`,error:S.value.newPassword},null,8,[`modelValue`,`error`]),n(g,{modelValue:x.value,"onUpdate:modelValue":[c[4]||=e=>x.value=e,c[5]||=e=>T(`confirmPassword`)],type:`password`,label:`تکرار رمز عبور جدید`,error:S.value.confirmPassword},null,8,[`modelValue`,`error`]),n(d,{block:``,onClick:E},{default:e(()=>[...c[6]||=[a(`ذخیره رمز جدید`,-1)]]),_:1}),w.value?(t(),i(`p`,y,`رمز عبور با موفقیت تغییر کرد ✓`)):r(``,!0)])]),_:1}))}}),[[`__scopeId`,`data-v-074827a2`]]);export{b as default};
@@ -1 +1 @@
import{I as e,M as t,Pt as n,_ as r,d as i,f as a,i as o,l as s,t as c,v as l}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{w as u}from"./index-CON313Q2.js";import{t as d}from"./IconChevronBack-DytWz6TD.js";var f={class:`page profile-subpage mobile-only`},p={class:`page__scroll page__scroll--with-nav`},m={class:`profile-subpage__card card`},h={class:`profile-subpage__nav`},g={class:`profile-subpage__title`},_={type:`button`,class:`nav-btn nav-btn--ghost`,"aria-hidden":`true`,tabindex:`-1`},v={class:`desktop-page profile-subpage-desktop desktop-only`},y={class:`desktop-page__head profile-subpage-desktop__head`},b={class:`desktop-page__title`},x={key:0,class:`desktop-page__subtitle`},S={class:`profile-subpage-desktop__panel card`},C=c(l({__name:`ProfileSubpageLayout`,props:{title:{},subtitle:{}},setup(c){let l=u();function C(){l.push(`/profile`)}return(l,u)=>(t(),a(o,null,[s(`div`,f,[s(`div`,p,[s(`div`,m,[s(`header`,h,[s(`button`,{type:`button`,class:`nav-btn`,"aria-label":`بازگشت`,onClick:C},[r(d,{size:20})]),s(`h1`,g,n(c.title),1),s(`button`,_,[r(d,{size:18,class:`nav-btn__flip`})])]),e(l.$slots,`default`,{},void 0,!0)])])]),s(`div`,v,[s(`header`,y,[s(`h1`,b,n(c.title),1),c.subtitle?(t(),a(`p`,x,n(c.subtitle),1)):i(``,!0)]),s(`section`,S,[e(l.$slots,`default`,{},void 0,!0)])])],64))}}),[[`__scopeId`,`data-v-e7684fde`]]);export{C as t};
import{I as e,M as t,Pt as n,_ as r,d as i,f as a,i as o,l as s,t as c,v as l}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{C as u}from"./index-DYwnTikp.js";import{t as d}from"./IconChevronBack-BsHmfODG.js";var f={class:`page profile-subpage mobile-only`},p={class:`page__scroll page__scroll--with-nav`},m={class:`profile-subpage__card card`},h={class:`profile-subpage__nav`},g={class:`profile-subpage__title`},_={type:`button`,class:`nav-btn nav-btn--ghost`,"aria-hidden":`true`,tabindex:`-1`},v={class:`desktop-page profile-subpage-desktop desktop-only`},y={class:`desktop-page__head profile-subpage-desktop__head`},b={class:`desktop-page__title`},x={key:0,class:`desktop-page__subtitle`},S={class:`profile-subpage-desktop__panel card`},C=c(l({__name:`ProfileSubpageLayout`,props:{title:{},subtitle:{}},setup(c){let l=u();function C(){l.push(`/profile`)}return(l,u)=>(t(),a(o,null,[s(`div`,f,[s(`div`,p,[s(`div`,m,[s(`header`,h,[s(`button`,{type:`button`,class:`nav-btn`,"aria-label":`بازگشت`,onClick:C},[r(d,{size:20})]),s(`h1`,g,n(c.title),1),s(`button`,_,[r(d,{size:18,class:`nav-btn__flip`})])]),e(l.$slots,`default`,{},void 0,!0)])])]),s(`div`,v,[s(`header`,y,[s(`h1`,b,n(c.title),1),c.subtitle?(t(),a(`p`,x,n(c.subtitle),1)):i(``,!0)]),s(`section`,S,[e(l.$slots,`default`,{},void 0,!0)])])],64))}}),[[`__scopeId`,`data-v-e7684fde`]]);export{C as t};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{At as e,D as t,F as n,M as r,Pt as i,f as a,i as o,k as s,l as c,nt as l,t as u,ut as d,v as f}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{w as p}from"./index-CON313Q2.js";import{t as m}from"./nademitex-auth-logo-CQhPwje_.js";var h=`/assets/login-fabric-CSZOoxR9.jpg`,g=`/assets/fabric-slide-2-BWGo09Th.jpg`,_=`/assets/fabric-slide-3-CyMWKjFB.jpg`,v=`/assets/fabric-slide-4-UycLZic-.jpg`,y=[`src`],b={class:`welcome__brand`},x=[`src`],S={class:`welcome__copy`},C={class:`welcome__dots`,role:`tablist`,"aria-label":`اسلایدها`},w=[`aria-label`,`onClick`],T=u(f({__name:`WelcomeView`,setup(u){let f=p(),T=[{image:h,title:`پارچه، برای ایده‌های بزرگ`,lead:`انتخاب بهتر، تأمین سریع‌تر، همراه حرفه‌ای شما در مسیر تولید پوشاک`},{image:g,title:`پارچه، برای ایده‌های بزرگ`,lead:`از کت و شلوار تا مانتو؛ بافتی که طرح شما را کامل می‌کند`},{image:_,title:`پارچه، برای ایده‌های بزرگ`,lead:`کتان، پنبه و فاستونی؛ موجودی عمده برای مزون و تولیدکننده`},{image:v,title:`پارچه، برای ایده‌های بزرگ`,lead:`کالیته را ببینید، رنگ را لمس کنید، بعد سفارش دهید`}],E=l(0),D=0,O=0;function k(e){E.value=(e+T.length)%T.length}function A(e){O=e.changedTouches[0]?.clientX??0}function j(e){let t=(e.changedTouches[0]?.clientX??0)-O;Math.abs(t)<40||k(E.value+(t<0?1:-1))}return s(()=>{D=window.setInterval(()=>k(E.value+1),4500)}),t(()=>window.clearInterval(D)),(t,s)=>(r(),a(`div`,{class:`welcome`,onTouchstartPassive:A,onTouchendPassive:j},[(r(),a(o,null,n(T,(t,n)=>c(`img`,{key:t.lead,class:e([`welcome__photo`,{"is-on":n===E.value}]),src:t.image,alt:``},null,10,y)),64)),s[1]||=c(`div`,{class:`welcome__shade`},null,-1),c(`header`,b,[c(`img`,{class:`welcome__logo`,src:d(m),alt:`Nademi Tex`,draggable:`false`},null,8,x)]),c(`div`,S,[c(`h1`,null,i(T[E.value]?.title),1),c(`p`,null,i(T[E.value]?.lead),1),c(`div`,C,[(r(),a(o,null,n(T,(t,n)=>c(`button`,{key:t.lead,type:`button`,class:e({"is-on":n===E.value}),"aria-label":`اسلاید ${n+1}`,onClick:e=>k(n)},null,10,w)),64))])]),c(`button`,{type:`button`,class:`welcome__cta`,onClick:s[0]||=e=>d(f).push(`/login`)},`ورود / ثبت‌نام`)],32))}}),[[`__scopeId`,`data-v-34e03d54`]]);export{T as default};
import{At as e,D as t,F as n,M as r,Pt as i,f as a,i as o,k as s,l as c,nt as l,t as u,ut as d,v as f}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{C as p}from"./index-DYwnTikp.js";import{t as m}from"./nademitex-auth-logo-CQhPwje_.js";var h=`/assets/login-fabric-CSZOoxR9.jpg`,g=`/assets/fabric-slide-2-BWGo09Th.jpg`,_=`/assets/fabric-slide-3-CyMWKjFB.jpg`,v=`/assets/fabric-slide-4-UycLZic-.jpg`,y=[`src`],b={class:`welcome__brand`},x=[`src`],S={class:`welcome__copy`},C={class:`welcome__dots`,role:`tablist`,"aria-label":`اسلایدها`},w=[`aria-label`,`onClick`],T=u(f({__name:`WelcomeView`,setup(u){let f=p(),T=[{image:h,title:`پارچه، برای ایده‌های بزرگ`,lead:`انتخاب بهتر، تأمین سریع‌تر، همراه حرفه‌ای شما در مسیر تولید پوشاک`},{image:g,title:`پارچه، برای ایده‌های بزرگ`,lead:`از کت و شلوار تا مانتو؛ بافتی که طرح شما را کامل می‌کند`},{image:_,title:`پارچه، برای ایده‌های بزرگ`,lead:`کتان، پنبه و فاستونی؛ موجودی عمده برای مزون و تولیدکننده`},{image:v,title:`پارچه، برای ایده‌های بزرگ`,lead:`کالیته را ببینید، رنگ را لمس کنید، بعد سفارش دهید`}],E=l(0),D=0,O=0;function k(e){E.value=(e+T.length)%T.length}function A(e){O=e.changedTouches[0]?.clientX??0}function j(e){let t=(e.changedTouches[0]?.clientX??0)-O;Math.abs(t)<40||k(E.value+(t<0?1:-1))}return s(()=>{D=window.setInterval(()=>k(E.value+1),4500)}),t(()=>window.clearInterval(D)),(t,s)=>(r(),a(`div`,{class:`welcome`,onTouchstartPassive:A,onTouchendPassive:j},[(r(),a(o,null,n(T,(t,n)=>c(`img`,{key:t.lead,class:e([`welcome__photo`,{"is-on":n===E.value}]),src:t.image,alt:``},null,10,y)),64)),s[1]||=c(`div`,{class:`welcome__shade`},null,-1),c(`header`,b,[c(`img`,{class:`welcome__logo`,src:d(m),alt:`Nademi Tex`,draggable:`false`},null,8,x)]),c(`div`,S,[c(`h1`,null,i(T[E.value]?.title),1),c(`p`,null,i(T[E.value]?.lead),1),c(`div`,C,[(r(),a(o,null,n(T,(t,n)=>c(`button`,{key:t.lead,type:`button`,class:e({"is-on":n===E.value}),"aria-label":`اسلاید ${n+1}`,onClick:e=>k(n)},null,10,w)),64))])]),c(`button`,{type:`button`,class:`welcome__cta`,onClick:s[0]||=e=>d(f).push(`/login`)},`ورود / ثبت‌نام`)],32))}}),[[`__scopeId`,`data-v-34e03d54`]]);export{T as default};
File diff suppressed because one or more lines are too long
-3
View File
File diff suppressed because one or more lines are too long
+2
View File
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{w as e}from"./index-CON313Q2.js";function t(t=`/`){let n=e();function r(){if(window.history.length>1){n.back();return}n.push(t)}return{goBack:r}}export{t};
import{C as e}from"./index-DYwnTikp.js";function t(t=`/`){let n=e();function r(){if(window.history.length>1){n.back();return}n.push(t)}return{goBack:r}}export{t};
@@ -1 +1 @@
import{U as e,c as t}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{C as n,m as r,w as i}from"./index-CON313Q2.js";import{n as a}from"./orderInvoice-DPYzRyAs.js";function o(){let o=n(),s=i(),c=r(),l=t(()=>o.params.id),u=t(()=>c.getOrderById(l.value)),d=t(()=>a(u.value));function f(e){e&&(a(e)||s.replace(`/orders/${e.id}`))}return e(l,async e=>{e&&f(c.getOrderById(e)??await c.fetchOrder(e))},{immediate:!0}),e(u,e=>{f(e)}),{orderId:l,order:u,invoiceReady:d}}export{o as t};
import{U as e,c as t}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{C as n,S as r,f as i}from"./index-DYwnTikp.js";import{n as a}from"./orderInvoice-DPYzRyAs.js";function o(){let o=r(),s=n(),c=i(),l=t(()=>o.params.id),u=t(()=>c.getOrderById(l.value)),d=t(()=>a(u.value));function f(e){e&&(a(e)||s.replace(`/orders/${e.id}`))}return e(l,async e=>{e&&f(c.getOrderById(e)??await c.fetchOrder(e))},{immediate:!0}),e(u,e=>{f(e)}),{orderId:l,order:u,invoiceReady:d}}export{o as t};
@@ -1 +1 @@
import{M as e,f as t,k as n,l as r,nt as i,u as a,v as o}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as s}from"./BasicIcon-ba1FsUKx.js";import{n as c,t as l}from"./IconCatalog-CtNgvEo2.js";import{b as u}from"./index-CON313Q2.js";import{n as d,t as f}from"./IconDiamond-CCzZ7nPM.js";import{r as p}from"./crm-CgnSby61.js";import{n as m,r as h,t as g}from"./IconWeave-CTypFxhM.js";var _=o({__name:`IconBolt`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(t){return(n,r)=>(e(),a(s,{icon:`vuesax-linear:flash`,size:t.size,"stroke-width":t.strokeWidth,color:t.color},null,8,[`size`,`stroke-width`,`color`]))}}),v=o({__name:`IconFeather`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(t){return(n,r)=>(e(),a(s,{icon:`vuesax-linear:pen-add`,size:t.size,"stroke-width":t.strokeWidth,color:t.color},null,8,[`size`,`stroke-width`,`color`]))}}),y=o({__name:`IconIdCard`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(t){return(n,r)=>(e(),a(s,{icon:`vuesax-linear:personalcard`,size:t.size,"stroke-width":t.strokeWidth,color:t.color},null,8,[`size`,`stroke-width`,`color`]))}}),b=[`width`,`height`],x=[`stroke`,`stroke-width`],S=[`stroke`,`stroke-width`],C=o({__name:`IconShirt`,props:{size:{default:24},color:{default:`currentColor`},strokeWidth:{default:1.5}},setup(n){return(i,a)=>(e(),t(`svg`,{width:n.size,height:n.size,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[r(`path`,{d:`M8.25 5.25 12 7.75l3.75-2.5 2.25 2.75L16 9.5V18.5a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V9.5L6 8l2.25-2.75Z`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,x),r(`path`,{d:`M12 7.75V18.5`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`},null,8,S)],8,b))}}),w=[`width`,`height`],T=[`stroke`,`stroke-width`],E=[`stroke`,`stroke-width`],D=[`stroke`,`stroke-width`],O=[`stroke`,`stroke-width`],k=o({__name:`IconSuit`,props:{size:{default:24},color:{default:`currentColor`},strokeWidth:{default:1.5}},setup(n){return(i,a)=>(e(),t(`svg`,{width:n.size,height:n.size,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[r(`path`,{d:`M7.5 5.5h9l2 3v10.5a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1V8.5l2-3Z`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,T),r(`path`,{d:`M12 5.5v13`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`},null,8,E),r(`path`,{d:`M7.5 9 12 11.75 16.5 9`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,D),r(`path`,{d:`M10.25 5.5V4a1.75 1.75 0 0 1 3.5 0v1.5`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`},null,8,O)],8,w))}}),A=[`width`,`height`],j=[`stroke`,`stroke-width`],M=[`stroke`,`stroke-width`],N=[`stroke`,`stroke-width`],P=o({__name:`IconTrousers`,props:{size:{default:24},color:{default:`currentColor`},strokeWidth:{default:1.5}},setup(n){return(i,a)=>(e(),t(`svg`,{width:n.size,height:n.size,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[r(`path`,{d:`M8 4.5h8v4.25l-1.75 11H13l-1-9.5-1 9.5H7.75L6 8.75V4.5Z`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,j),r(`path`,{d:`M12 8.75v11`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`},null,8,M),r(`path`,{d:`M8 7.25h8`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`},null,8,N)],8,A))}}),F=[`width`,`height`,`stroke`,`stroke-width`],I={bolt:_,feather:v,diamond:f,grid:d,bag:h,"id-card":y,catalog:l,headset:u,home:c,shirt:C,suit:k,trousers:P,ruler:m,composition:o({__name:`IconComposition`,props:{size:{default:22},color:{default:`currentColor`},strokeWidth:{default:1.6}},setup(n){return(i,a)=>(e(),t(`svg`,{width:n.size,height:n.size,viewBox:`0 0 24 24`,fill:`none`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[...a[0]||=[r(`path`,{d:`M12 3.5 20 8v8l-8 4.5L4 16V8l8-4.5Z`},null,-1)]],8,F))}}),weight:h,weave:g},L={shirt:`shirt`,suit:`suit`,trousers:`trousers`};function R(e){return L[e.id]?L[e.id]:e.icon&&I[e.icon]?e.icon:e.icon??`grid`}function z(e,t=f){return e&&I[e]||t}function B(e){let t=i([]),r=i(!0);async function a(){r.value=!0;try{t.value=await p(e)}catch{t.value=[]}finally{r.value=!1}}return n(()=>{a()}),{banners:t,loading:r,reload:a}}export{z as n,R as r,B as t};
import{M as e,f as t,k as n,l as r,nt as i,u as a,v as o}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as s}from"./BasicIcon-DPmc0iaK.js";import{n as c,t as l}from"./IconCatalog-BaNuPmu8.js";import{y as u}from"./index-DYwnTikp.js";import{n as d,t as f}from"./IconDiamond-BZQtRyIy.js";import{r as p}from"./crm-CgnSby61.js";import{n as m,r as h,t as g}from"./IconWeave-DAcvD2P0.js";var _=o({__name:`IconBolt`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(t){return(n,r)=>(e(),a(s,{icon:`vuesax-linear:flash`,size:t.size,"stroke-width":t.strokeWidth,color:t.color},null,8,[`size`,`stroke-width`,`color`]))}}),v=o({__name:`IconFeather`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(t){return(n,r)=>(e(),a(s,{icon:`vuesax-linear:pen-add`,size:t.size,"stroke-width":t.strokeWidth,color:t.color},null,8,[`size`,`stroke-width`,`color`]))}}),y=o({__name:`IconIdCard`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(t){return(n,r)=>(e(),a(s,{icon:`vuesax-linear:personalcard`,size:t.size,"stroke-width":t.strokeWidth,color:t.color},null,8,[`size`,`stroke-width`,`color`]))}}),b=[`width`,`height`],x=[`stroke`,`stroke-width`],S=[`stroke`,`stroke-width`],C=o({__name:`IconShirt`,props:{size:{default:24},color:{default:`currentColor`},strokeWidth:{default:1.5}},setup(n){return(i,a)=>(e(),t(`svg`,{width:n.size,height:n.size,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[r(`path`,{d:`M8.25 5.25 12 7.75l3.75-2.5 2.25 2.75L16 9.5V18.5a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V9.5L6 8l2.25-2.75Z`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,x),r(`path`,{d:`M12 7.75V18.5`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`},null,8,S)],8,b))}}),w=[`width`,`height`],T=[`stroke`,`stroke-width`],E=[`stroke`,`stroke-width`],D=[`stroke`,`stroke-width`],O=[`stroke`,`stroke-width`],k=o({__name:`IconSuit`,props:{size:{default:24},color:{default:`currentColor`},strokeWidth:{default:1.5}},setup(n){return(i,a)=>(e(),t(`svg`,{width:n.size,height:n.size,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[r(`path`,{d:`M7.5 5.5h9l2 3v10.5a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1V8.5l2-3Z`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,T),r(`path`,{d:`M12 5.5v13`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`},null,8,E),r(`path`,{d:`M7.5 9 12 11.75 16.5 9`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,D),r(`path`,{d:`M10.25 5.5V4a1.75 1.75 0 0 1 3.5 0v1.5`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`},null,8,O)],8,w))}}),A=[`width`,`height`],j=[`stroke`,`stroke-width`],M=[`stroke`,`stroke-width`],N=[`stroke`,`stroke-width`],P=o({__name:`IconTrousers`,props:{size:{default:24},color:{default:`currentColor`},strokeWidth:{default:1.5}},setup(n){return(i,a)=>(e(),t(`svg`,{width:n.size,height:n.size,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[r(`path`,{d:`M8 4.5h8v4.25l-1.75 11H13l-1-9.5-1 9.5H7.75L6 8.75V4.5Z`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,j),r(`path`,{d:`M12 8.75v11`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`},null,8,M),r(`path`,{d:`M8 7.25h8`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`},null,8,N)],8,A))}}),F=[`width`,`height`,`stroke`,`stroke-width`],I={bolt:_,feather:v,diamond:f,grid:d,bag:h,"id-card":y,catalog:l,headset:u,home:c,shirt:C,suit:k,trousers:P,ruler:m,composition:o({__name:`IconComposition`,props:{size:{default:22},color:{default:`currentColor`},strokeWidth:{default:1.6}},setup(n){return(i,a)=>(e(),t(`svg`,{width:n.size,height:n.size,viewBox:`0 0 24 24`,fill:`none`,stroke:n.color,"stroke-width":n.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[...a[0]||=[r(`path`,{d:`M12 3.5 20 8v8l-8 4.5L4 16V8l8-4.5Z`},null,-1)]],8,F))}}),weight:h,weave:g},L={shirt:`shirt`,suit:`suit`,trousers:`trousers`};function R(e){return L[e.id]?L[e.id]:e.icon&&I[e.icon]?e.icon:e.icon??`grid`}function z(e,t=f){return e&&I[e]||t}function B(e){let t=i([]),r=i(!0);async function a(){r.value=!0;try{t.value=await p(e)}catch{t.value=[]}finally{r.value=!1}}return n(()=>{a()}),{banners:t,loading:r,reload:a}}export{z as n,R as r,B as t};
+10 -10
View File
@@ -11,9 +11,9 @@
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<title>سامانه سفارش عمده پارچه</title>
<script type="module" crossorigin src="/assets/index-CON313Q2.js"></script>
<script type="module" crossorigin src="/assets/index-DYwnTikp.js"></script>
<link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-1xMDlcEE.js">
<link rel="modulepreload" crossorigin href="/assets/BasicIcon-ba1FsUKx.js">
<link rel="modulepreload" crossorigin href="/assets/BasicIcon-DPmc0iaK.js">
<link rel="modulepreload" crossorigin href="/assets/pinia-BK9B9Wwf.js">
<link rel="modulepreload" crossorigin href="/assets/dist-U-AqZ6hP.js">
<link rel="modulepreload" crossorigin href="/assets/dist-Bc4P4ngC.js">
@@ -22,16 +22,16 @@
<link rel="modulepreload" crossorigin href="/assets/catalog-DWpH1dVc.js">
<link rel="modulepreload" crossorigin href="/assets/validation-Duyyve7l.js">
<link rel="modulepreload" crossorigin href="/assets/cart-F5Rptvi1.js">
<link rel="modulepreload" crossorigin href="/assets/IconCatalog-CtNgvEo2.js">
<link rel="modulepreload" crossorigin href="/assets/IconCart-f4izyxj_.js">
<link rel="modulepreload" crossorigin href="/assets/IconOrders-sYhLO0Db.js">
<link rel="modulepreload" crossorigin href="/assets/IconProfile-Th_9x4I5.js">
<link rel="modulepreload" crossorigin href="/assets/IconPlus-ClEaCwsc.js">
<link rel="modulepreload" crossorigin href="/assets/IconCheckBook-ZRtkiJkL.js">
<link rel="modulepreload" crossorigin href="/assets/IconSettings-BiUeQykn.js">
<link rel="modulepreload" crossorigin href="/assets/IconCatalog-BaNuPmu8.js">
<link rel="modulepreload" crossorigin href="/assets/IconCart-D9TX5E-P.js">
<link rel="modulepreload" crossorigin href="/assets/IconOrders-Cf-FXBIB.js">
<link rel="modulepreload" crossorigin href="/assets/IconProfile-ginWFJfQ.js">
<link rel="modulepreload" crossorigin href="/assets/IconPlus-Dk2FJATn.js">
<link rel="modulepreload" crossorigin href="/assets/IconCheckBook-IuV8Li8k.js">
<link rel="modulepreload" crossorigin href="/assets/IconSettings-D9-FUXw4.js">
<link rel="modulepreload" crossorigin href="/assets/theme-DDmZuxb4.js">
<link rel="stylesheet" crossorigin href="/assets/BasicIcon-QF_b9Svq.css">
<link rel="stylesheet" crossorigin href="/assets/index-cRXrW70T.css">
<link rel="stylesheet" crossorigin href="/assets/index-7tUw5-eF.css">
</head>
<body>
<div id="app"></div>
+34 -27
View File
@@ -1,6 +1,6 @@
{
"0": "ProductsView.vue",
"1": "LatestOrderStatusView.vue",
"1": "LatestCatalogRequestStatusView.vue",
"2": "HomeView.vue",
"3": "OrderDetailView.vue",
"4": "ProductDetailView.vue",
@@ -11,8 +11,8 @@
"9": "CatalogDetailView.vue",
"10": "TimeInput.vue",
"11": "RemindersView.vue",
"12": "types/crm.ts",
"13": "SettlementTypeView.vue",
"12": "ReminderDetailView.vue",
"13": "orderInvoice.ts",
"14": "MobileProfilePage.vue",
"15": "AppSelect.vue",
"16": "OtpView.vue",
@@ -22,10 +22,10 @@
"20": "vue-router",
"21": "MeetingReportForm.vue",
"22": "package.json",
"23": "categoryIcons.ts",
"23": "BasicIcon.vue",
"24": "format.ts",
"25": "router/index.ts",
"26": "auth.ts",
"25": "ProfileNotificationsView.vue",
"26": "useAuthStore",
"27": "CustomersView.vue",
"28": "devDependencies",
"29": "serve-user.mjs",
@@ -37,13 +37,13 @@
"35": "orderTracking.ts",
"36": "CheckListView.vue",
"37": "CashSettlementView.vue",
"38": "AuthThemeToggle.vue",
"38": "PageHeader.vue",
"39": "CategoriesView.vue",
"40": "types/index.ts",
"41": "vue",
"42": "BasicIcon.vue",
"40": "checkRass.ts",
"41": "CompanySelectView.vue",
"42": "DesktopOrdersPage.vue",
"43": "BaseButton.vue",
"44": "AppToast.vue",
"44": "useAppToast.ts",
"45": "CatalogsHubView.vue",
"46": "FavoritesView.vue",
"47": "HomeSuggestionsSection.vue",
@@ -52,48 +52,55 @@
"50": "DesktopHeader.vue",
"51": "SupportWidget.vue",
"52": "catalogGallery.ts",
"53": "DesktopCartPage.vue",
"54": "useOrderStore",
"55": "cart.ts",
"56": "supportLinks.ts",
"53": "hasFieldErrors",
"54": "order.ts",
"55": "types/index.ts",
"56": "usePublicContact.ts",
"57": "scripts",
"58": "main.ts",
"59": "caliteCollections.ts",
"60": "WelcomeView.vue",
"61": "CheckModeSelectView.vue",
"62": "DesktopSidebar.vue",
"63": "StatusBadge.vue",
"61": "SettlementTypeView.vue",
"62": "OrderTrackingSummary.vue",
"63": "jalali.ts",
"64": "http.ts",
"65": "ProfileDisplayView.vue",
"66": "fabric-trade",
"67": "App.vue",
"68": "IconChevronLeft.vue",
"68": "LatestOrderStatusView.vue",
"69": "useConfirm.ts",
"70": "dependencies",
"71": "tsconfig.app.json",
"72": "CustomerCreateOverlay.vue",
"72": "auth.ts",
"73": "formatNumber",
"74": "useProductOrdering",
"75": "usePublicContact.ts",
"76": "buildCatalogGallery",
"75": "types/crm.ts",
"76": "catalogRequests.ts",
"77": ".oxlintrc.json",
"78": "DefaultLayout.vue",
"78": "router/index.ts",
"79": "useCatalogRequest",
"80": "vite.config.ts",
"81": "AddressCompletionModal.vue",
"82": "MeetingReportOverlay.vue",
"83": "buildProductsQuery",
"84": ".prettierrc.json",
"85": "useCatalogRequest.ts",
"85": "CartView.vue",
"86": "useSlotBanners.ts",
"87": "storage.ts",
"88": "entrypoint.sh",
"89": "IconHeart.vue",
"90": "SearchField.vue",
"89": "MeterageBar.vue",
"90": "vue",
"91": "tsconfig.json",
"92": "unocss",
"93": "src_assets_images_auth_wave",
"94": "env.d.ts",
"95": "sw.js",
"96": "IconMedal.vue"
"96": "IconMedal.vue",
"97": "SimpleStatusTimeline.vue",
"98": "catalogCategories.ts",
"99": "isProductUnavailable",
"100": "useTouchSwipe",
"101": "categoryIconOf",
"102": "CapacitySummary.vue",
"103": "bannerCopy"
}
+1 -1
View File
@@ -1 +1 @@
{"0": "ace5ba267cc27876", "1": "2107fffc2c63667e", "2": "32a29ebce64c2056", "3": "1d16b759d40f5b84", "4": "7aab7088ce3589aa", "5": "027f0dd9153a3cd6", "6": "38b2d2d32c17de5b", "7": "35b1bdec7b3242f0", "8": "81b2d7140079752c", "9": "b68c73f550637fbb", "10": "962e58b0d6756457", "11": "f1fab55fb95ac0ac", "12": "5be74193bfc2299c", "13": "f4a3f638c207773a", "14": "7c11eecb729dd7fb", "15": "b8ca951cc5fa74f7", "16": "3dde46803a861115", "17": "d07288c5bef8271a", "18": "bbeed756c0417a3b", "19": "cbe4e372c49fbd01", "20": "fffd4fd6e85144c7", "21": "8e1132b35d5f5314", "22": "6bb5dee834bf05da", "23": "9914809b0858295f", "24": "ce53bcd1662ddf9e", "25": "f72eb351a02d5011", "26": "86319aa3762b62bc", "27": "aa136d23cd307fa8", "28": "040d00c717f769fa", "29": "e200ef2a8e60b687", "30": "84a9b68530ce369e", "31": "915c18212741a1b4", "32": "20fa314840fd3c2e", "33": "c04a2c3b45cee524", "34": "8aca35da05f684bd", "35": "dd53db6e57dacdc7", "36": "a3bfd69c2bbacd4f", "37": "daa3f576318d6f44", "38": "78153c216e4f9fb1", "39": "ff3c8751ef827982", "40": "6b038d1acc4dec28", "41": "4f726adc17549261", "42": "e5571a8f4f622975", "43": "6e16f936c7611298", "44": "8beb4500a5697e1c", "45": "833d206638785c2e", "46": "f284a8d0f6ab4247", "47": "7be3d589f9b42e62", "48": "368a28c211a6b895", "49": "71f427e677f2c395", "50": "67480b911a2eaeb1", "51": "996c6e7420934cbb", "52": "3af4bd92163ea3b3", "53": "4bc1914cd618e82a", "54": "f5c3c344c0459d41", "55": "f36a0aeab8d3f3c0", "56": "af553665789d1eb3", "57": "a0a84fc345504be4", "58": "e790f0c0d47becd4", "59": "fa77c1c5947a8542", "60": "e315a4d0a1c4a4a8", "61": "99ab93a5b4ab9f29", "62": "2c03b618f7621e02", "63": "df78a9fd8a3fcf50", "64": "c60932fb653542ce", "65": "fcc6ce88e08ee378", "66": "2ca22c7b1c3cb226", "67": "dab881472cb5d41f", "68": "e096611e993ea677", "69": "ecfbbc52fdb12887", "70": "aabe88739024b488", "71": "7e6a93a1f0234aaf", "72": "1d8352ea416a9751", "73": "e3d07661409c53e1", "74": "7c1b63b170c4122e", "75": "15a48fcb2cad3350", "76": "6022b11b48aa0a41", "77": "b36e5dd304f7b526", "78": "ea07e53229467aa9", "79": "a4b753c1de95cc77", "80": "b8a8eed69d2ed35f", "81": "b4c5a196082413f4", "82": "8e3b93f65430738a", "83": "13aadfc19e59bc5b", "84": "34469f25a7b03549", "85": "2ac671aad35d142a", "86": "13a401e2f2c252ac", "87": "5ab4740914b2a240", "88": "d5f34292f17184de", "89": "3362f643cd6ccdd8", "90": "1fc4e8acc5eae872", "91": "7256026fe64f6f6a", "92": "582ceb90dc20ccce", "93": "b0eb9e068ea727fc", "94": "1a75221deb24c0e9", "95": "23f698eeb33cbef6", "96": "0076139ae92edd0c"}
{"0": "3e774e27ca631413", "1": "3c78084318042560", "2": "32a29ebce64c2056", "3": "b02f85bcd4accede", "4": "7aab7088ce3589aa", "5": "d2c98eafb6f43ff7", "6": "38b2d2d32c17de5b", "7": "bc92344c6449d89a", "8": "20efff23c65324d8", "9": "6cd999677170e560", "10": "962e58b0d6756457", "11": "f1fab55fb95ac0ac", "12": "223c9db2aa26b18c", "13": "b27c286d0247ff8b", "14": "dbb19254929140d0", "15": "b8ca951cc5fa74f7", "16": "3dde46803a861115", "17": "9c07031c3e320560", "18": "204737a74005ed45", "19": "9a2464eda94e4393", "20": "33ff14fe4fd2b6e8", "21": "a8688f5cc0b5e4d3", "22": "65b54cec91caf12c", "23": "2462a4e66a23e6d8", "24": "de0159aaddefde75", "25": "d9f4606d0852e273", "26": "b9d1442f080652c8", "27": "233860308cbc19eb", "28": "040d00c717f769fa", "29": "e200ef2a8e60b687", "30": "4a64fea473769be4", "31": "bb63bf17c02a1ca0", "32": "20fa314840fd3c2e", "33": "6f3e02ed3f9995da", "34": "42bd5e261b5f0b2d", "35": "dd53db6e57dacdc7", "36": "a3bfd69c2bbacd4f", "37": "7190e6d5864cc31e", "38": "ff19c173c9b107fa", "39": "5bae1e6327b9fa3e", "40": "ee7b12050f4c1dea", "41": "53444328dbcf002d", "42": "961467692a102a3f", "43": "2148e94e65ae2399", "44": "be9eb1766eea473e", "45": "f7eb999cfffe3acd", "46": "64f98ddf65b6e85d", "47": "c5f9303cfe71e5f4", "48": "208e6cde3caa9752", "49": "e81b0892e183805f", "50": "67480b911a2eaeb1", "51": "989f6a0a6dc6dbdb", "52": "bce1a8dc769cdee6", "53": "3d267ff23e818bbb", "54": "7c6926628f840137", "55": "99e63082affabd4f", "56": "1970a7f49cc299ff", "57": "a0a84fc345504be4", "58": "e790f0c0d47becd4", "59": "fa77c1c5947a8542", "60": "e315a4d0a1c4a4a8", "61": "e940b4c8c2e4fa2f", "62": "39f0e3f0b028c683", "63": "41601ecd16852392", "64": "80f4a35e9a6d73af", "65": "fcc6ce88e08ee378", "66": "2ca22c7b1c3cb226", "67": "181959888ac1dbe0", "68": "2e0ca22fefa6d442", "69": "ecfbbc52fdb12887", "70": "aabe88739024b488", "71": "7e6a93a1f0234aaf", "72": "3b9f50604131b2a9", "73": "e3d07661409c53e1", "74": "7c1b63b170c4122e", "75": "ed22aba705c3c64e", "76": "8efdf2c242c53358", "77": "b36e5dd304f7b526", "78": "ffd20d273f260611", "79": "a4b753c1de95cc77", "80": "b8a8eed69d2ed35f", "81": "b4c5a196082413f4", "82": "8e3b93f65430738a", "83": "13aadfc19e59bc5b", "84": "34469f25a7b03549", "85": "292219e661f5747e", "86": "13a401e2f2c252ac", "87": "5ab4740914b2a240", "88": "d5f34292f17184de", "89": "0c6fd4c761ae4749", "90": "d71cb68c5791bc84", "91": "7256026fe64f6f6a", "92": "582ceb90dc20ccce", "93": "b0eb9e068ea727fc", "94": "1a75221deb24c0e9", "95": "23f698eeb33cbef6", "96": "0076139ae92edd0c", "97": "ddcbc88d886f2c7a", "98": "e6dc7f1a1decf235", "99": "de1a28d522e2c425", "100": "16d7383498dcbaa3", "101": "b3c348b3e9f8b116", "102": "72e2655523a79b45", "103": "3b4c1129e7872277"}
+1 -1
View File
@@ -1 +1 @@
fabric-nademitex_user
.
@@ -0,0 +1,99 @@
{
"0": "ProductsView.vue",
"1": "LatestOrderStatusView.vue",
"2": "HomeView.vue",
"3": "OrderDetailView.vue",
"4": "ProductDetailView.vue",
"5": "CheckFormView.vue",
"6": "CustomerDetailView.vue",
"7": "CustomerCreateForm.vue",
"8": "PersianDateInput.vue",
"9": "CatalogDetailView.vue",
"10": "TimeInput.vue",
"11": "RemindersView.vue",
"12": "types/crm.ts",
"13": "SettlementTypeView.vue",
"14": "MobileProfilePage.vue",
"15": "AppSelect.vue",
"16": "OtpView.vue",
"17": "ProfileEditView.vue",
"18": "useOrderList.ts",
"19": "DesktopProfilePage.vue",
"20": "vue-router",
"21": "MeetingReportForm.vue",
"22": "package.json",
"23": "categoryIcons.ts",
"24": "format.ts",
"25": "router/index.ts",
"26": "auth.ts",
"27": "CustomersView.vue",
"28": "devDependencies",
"29": "serve-user.mjs",
"30": "RegisterView.vue",
"31": "AddressesView.vue",
"32": "stores/crm.ts",
"33": "AppSlotBanner.vue",
"34": "navigation.ts",
"35": "orderTracking.ts",
"36": "CheckListView.vue",
"37": "CashSettlementView.vue",
"38": "AuthThemeToggle.vue",
"39": "CategoriesView.vue",
"40": "types/index.ts",
"41": "vue",
"42": "BasicIcon.vue",
"43": "BaseButton.vue",
"44": "AppToast.vue",
"45": "CatalogsHubView.vue",
"46": "FavoritesView.vue",
"47": "HomeSuggestionsSection.vue",
"48": "LoginView.vue",
"49": "ProductOrderModal.vue",
"50": "DesktopHeader.vue",
"51": "SupportWidget.vue",
"52": "catalogGallery.ts",
"53": "DesktopCartPage.vue",
"54": "useOrderStore",
"55": "cart.ts",
"56": "supportLinks.ts",
"57": "scripts",
"58": "main.ts",
"59": "caliteCollections.ts",
"60": "WelcomeView.vue",
"61": "CheckModeSelectView.vue",
"62": "DesktopSidebar.vue",
"63": "StatusBadge.vue",
"64": "http.ts",
"65": "ProfileDisplayView.vue",
"66": "fabric-trade",
"67": "App.vue",
"68": "IconChevronLeft.vue",
"69": "useConfirm.ts",
"70": "dependencies",
"71": "tsconfig.app.json",
"72": "CustomerCreateOverlay.vue",
"73": "formatNumber",
"74": "useProductOrdering",
"75": "usePublicContact.ts",
"76": "buildCatalogGallery",
"77": ".oxlintrc.json",
"78": "DefaultLayout.vue",
"79": "useCatalogRequest",
"80": "vite.config.ts",
"81": "AddressCompletionModal.vue",
"82": "MeetingReportOverlay.vue",
"83": "buildProductsQuery",
"84": ".prettierrc.json",
"85": "useCatalogRequest.ts",
"86": "useSlotBanners.ts",
"87": "storage.ts",
"88": "entrypoint.sh",
"89": "IconHeart.vue",
"90": "SearchField.vue",
"91": "tsconfig.json",
"92": "unocss",
"93": "src_assets_images_auth_wave",
"94": "env.d.ts",
"95": "sw.js",
"96": "IconMedal.vue"
}
+529
View File
@@ -0,0 +1,529 @@
# Graph Report - fabric-nademitex_user (2026-10-01)
## Corpus Check
- 222 files · ~295,428 words
- Verdict: corpus is large enough that graph structure adds value.
- Unclassified: 23 file(s) not represented in the graph (top: .css 7, .woff2 6, (none) 5)
## Summary
- 1643 nodes · 3374 edges · 97 communities (85 shown, 12 thin omitted)
- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 57 edges (avg confidence: 0.85)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `adb0ce88`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
## Community Hubs (Navigation)
- ProductsView.vue
- LatestOrderStatusView.vue
- HomeView.vue
- OrderDetailView.vue
- ProductDetailView.vue
- CheckFormView.vue
- CustomerDetailView.vue
- CustomerCreateForm.vue
- PersianDateInput.vue
- CatalogDetailView.vue
- TimeInput.vue
- RemindersView.vue
- types/crm.ts
- SettlementTypeView.vue
- MobileProfilePage.vue
- AppSelect.vue
- OtpView.vue
- ProfileEditView.vue
- useOrderList.ts
- DesktopProfilePage.vue
- vue-router
- MeetingReportForm.vue
- package.json
- categoryIcons.ts
- format.ts
- router/index.ts
- auth.ts
- CustomersView.vue
- devDependencies
- serve-user.mjs
- RegisterView.vue
- AddressesView.vue
- stores/crm.ts
- AppSlotBanner.vue
- navigation.ts
- orderTracking.ts
- CheckListView.vue
- CashSettlementView.vue
- AuthThemeToggle.vue
- CategoriesView.vue
- types/index.ts
- vue
- BasicIcon.vue
- BaseButton.vue
- AppToast.vue
- CatalogsHubView.vue
- FavoritesView.vue
- HomeSuggestionsSection.vue
- LoginView.vue
- ProductOrderModal.vue
- DesktopHeader.vue
- SupportWidget.vue
- catalogGallery.ts
- DesktopCartPage.vue
- useOrderStore
- cart.ts
- supportLinks.ts
- scripts
- main.ts
- caliteCollections.ts
- WelcomeView.vue
- CheckModeSelectView.vue
- DesktopSidebar.vue
- StatusBadge.vue
- http.ts
- ProfileDisplayView.vue
- fabric-trade
- App.vue
- IconChevronLeft.vue
- useConfirm.ts
- dependencies
- tsconfig.app.json
- CustomerCreateOverlay.vue
- formatNumber
- useProductOrdering
- usePublicContact.ts
- buildCatalogGallery
- .oxlintrc.json
- DefaultLayout.vue
- useCatalogRequest
- vite.config.ts
- AddressCompletionModal.vue
- MeetingReportOverlay.vue
- buildProductsQuery
- .prettierrc.json
- useCatalogRequest.ts
- useSlotBanners.ts
- storage.ts
- entrypoint.sh
- IconHeart.vue
- SearchField.vue
- tsconfig.json
- unocss
## God Nodes (most connected - your core abstractions)
1. `vue` - 90 edges
2. `vue-router` - 56 edges
3. `router` - 35 edges
4. `useAuthStore` - 32 edges
5. `formatNumber()` - 32 edges
6. `useCrmStore` - 27 edges
7. `useOrderStore` - 27 edges
8. `apiRequest()` - 24 edges
9. `toPersianDigits()` - 24 edges
10. `useCartStore` - 22 edges
## Surprising Connections (you probably didn't know these)
- `useFavoritesStore` --indirect_call--> `toggle()` [INFERRED]
fabric-nademitex_user/src/stores/favorites.ts → fabric-nademitex_user/src/components/ui/AppSelect.vue
- `useCartStore` --indirect_call--> `selectCompany()` [INFERRED]
fabric-nademitex_user/src/stores/cart.ts → fabric-nademitex_user/src/views/companies/CompanySelectView.vue
- `useCatalogRequestsStore` --indirect_call--> `statusLabel()` [INFERRED]
fabric-nademitex_user/src/stores/catalogRequests.ts → fabric-nademitex_user/src/views/customers/CustomersView.vue
- `goCta()` --calls--> `followBannerLink()` [EXTRACTED]
fabric-nademitex_user/src/components/banners/AppSlotBanner.vue → fabric-nademitex_user/src/utils/bannerLink.ts
- `onBannerSurfaceClick()` --calls--> `followBannerLink()` [EXTRACTED]
fabric-nademitex_user/src/components/banners/AppSlotBanner.vue → fabric-nademitex_user/src/utils/bannerLink.ts
## Import Cycles
- None detected.
## Communities (97 total, 12 thin omitted)
### Community 0 - "ProductsView.vue"
Cohesion: 0.04
Nodes (41): categoryIconOf(), usageCategoryIconKey(), bannerCopy, bannerIcon, bannerImageLink, bannerImageUrl, { banners: productsHeroBanners }, bannerStyle (+33 more)
### Community 1 - "LatestOrderStatusView.vue"
Cohesion: 0.06
Nodes (38): props, CatalogRequest, CatalogRequestItem, CatalogRequestStatus, mapServerRow(), readAll(), SERVER_TO_UI, STATUS_LABELS (+30 more)
### Community 2 - "HomeView.vue"
Cohesion: 0.05
Nodes (37): actions, agentActions, agentLevel, auth, banner, bannerImageLink, bannerIndex, banners (+29 more)
### Community 3 - "OrderDetailView.vue"
Cohesion: 0.07
Nodes (38): checksTotal, props, getStatusHero(), getTrackingFooterLabel(), CASH_PAYMENT_STATUSES, isInCashPaymentPhase(), isInCheckPhase(), SETTLEMENT_TYPE_LABELS (+30 more)
### Community 4 - "ProductDetailView.vue"
Cohesion: 0.05
Nodes (37): adding, cartStore, catalogStore, categoryChips, closeOrderModal(), crm, currentColorName, currentGalleryImage (+29 more)
### Community 5 - "CheckFormView.vue"
Cohesion: 0.07
Nodes (37): MeterageValidationResult, parseFormattedNumber(), fileToBase64(), validateImageFile(), validateNationalId(), validateSayadId(), amount, backImage (+29 more)
### Community 6 - "CustomerDetailView.vue"
Cohesion: 0.06
Nodes (27): agentCode, agentInitial, agentName, auth, closeEdit(), closeMeetingReport(), crm, customer (+19 more)
### Community 7 - "CustomerCreateForm.vue"
Cohesion: 0.08
Nodes (32): auth, businessName, clearField(), crm, emit, fieldErrors, firstName, formError (+24 more)
### Community 8 - "PersianDateInput.vue"
Cohesion: 0.10
Nodes (30): jalaali-js, calendarDays, closeCalendar(), displayValue, emit, isOpen, isToday(), onDocumentClick() (+22 more)
### Community 9 - "CatalogDetailView.vue"
Cohesion: 0.08
Nodes (27): demoProductsFor(), findMockCalite(), catalogLatinName(), addAllToInquiry(), adding, appToast, cartStore, catalog (+19 more)
### Community 10 - "TimeInput.vue"
Cohesion: 0.09
Nodes (27): closePanel(), confirmSelection(), displayValue, draftHour, draftMinute, emit, formatTimeLabel(), hourListRef (+19 more)
### Community 11 - "RemindersView.vue"
Cohesion: 0.07
Nodes (25): completedExpanded, completedToday, crm, customerOptions, customers, error, filter, filters (+17 more)
### Community 12 - "types/crm.ts"
Cohesion: 0.08
Nodes (25): AgentProfile, CrmCustomer, CrmMeeting, CrmOrderSummary, CrmReminder, CustomerStatus, CustomerTab, HomeBanner (+17 more)
### Community 13 - "SettlementTypeView.vue"
Cohesion: 0.10
Nodes (23): steps, useRequirePricedOrder(), redirectIfNeeded(), OrderItem, canChooseSettlement(), canEnterChecks(), canSubmitCashReceipt(), CASH_RECEIPT_STATUSES (+15 more)
### Community 14 - "MobileProfilePage.vue"
Cohesion: 0.07
Nodes (27): agentQuickActions, auth, code, codeLabel, crm, customerQuickActions, customersCount, displayName (+19 more)
### Community 15 - "AppSelect.vue"
Cohesion: 0.11
Nodes (25): AppSelectOption, bindPositionListeners(), displayLabel, emit, filteredOptions, menuRef, menuStyle, onOptionKeydown() (+17 more)
### Community 16 - "OtpView.vue"
Cohesion: 0.13
Nodes (23): extractNumericString(), auth, canResend, clearCodeError(), code, digits, fieldErrors, fillDigits() (+15 more)
### Community 17 - "ProfileEditView.vue"
Cohesion: 0.10
Nodes (23): fileToProfileAvatar(), readFileAsDataUrl(), resizeDataUrl(), address, auth, avatarUrl, fieldErrors, fileInput (+15 more)
### Community 18 - "useOrderList.ts"
Cohesion: 0.12
Nodes (16): useOrderList(), companySlug(), iconVariant(), CANCELLED_STATUSES, DELIVERED_STATUSES, DesktopOrderFilterId, IN_PROGRESS_STATUSES, matchesDesktopOrderFilter() (+8 more)
### Community 19 - "DesktopProfilePage.vue"
Cohesion: 0.09
Nodes (22): unreadLabel, monthLabel, toPersianDigits(), displayPhone, displayDigit(), timerLabel, displayPhone, auth (+14 more)
### Community 20 - "vue-router"
Cohesion: 0.11
Nodes (14): vue-router, navigateToCatalogProduct(), catalogs, catalogStore, company, companyId, loading, openCatalog() (+6 more)
### Community 21 - "MeetingReportForm.vue"
Cohesion: 0.09
Nodes (19): content, crm, customer, date, emit, error, interactionType, loading (+11 more)
### Community 22 - "package.json"
Cohesion: 0.11
Nodes (20): name, private, type, version, eslint, eslint-config-prettier, eslint-plugin-oxlint, eslint-plugin-vue (+12 more)
### Community 23 - "categoryIcons.ts"
Cohesion: 0.10
Nodes (8): CATEGORY_ICON_MAP, USAGE_ICON_BY_ID, displayCompanies, emit, orderSteps, props, quickLinks, router
### Community 24 - "format.ts"
Cohesion: 0.10
Nodes (16): props, remaining, isFull, isNearFull, percentage, props, remaining, formatMeterage() (+8 more)
### Community 25 - "router/index.ts"
Cohesion: 0.11
Nodes (11): router, NotificationTone, SHOP_BROWSE_PATH, {
cartStore,
items,
isEmpty,
companyName,
companySummaries,
showFullDialog,
submitting,
submitError,
addressPickerOpen,
addresses,
selectedAddressId,
newAddress,
addressBusy,
confirmAddressAndOrder,
removeItem,
proceedToCheckout,
proceedAnyway,
createNewInvoice,
}, router, router, hasUnread, items (+3 more)
### Community 26 - "auth.ts"
Cohesion: 0.23
Nodes (19): cacheUser(), fetchMe(), getCachedUser(), getCurrentUser(), isAuthenticated(), logout(), PendingOtp, sendOtp() (+11 more)
### Community 27 - "CustomersView.vue"
Cohesion: 0.11
Nodes (20): activeCount, closeCreate(), crm, customerListQuery(), customers, cycleStatusFilter(), error, filtered (+12 more)
### Community 28 - "devDependencies"
Cohesion: 0.10
Nodes (21): devDependencies, eslint, eslint-config-prettier, eslint-plugin-oxlint, eslint-plugin-vue, jiti, npm-run-all2, oxlint (+13 more)
### Community 29 - "serve-user.mjs"
Cohesion: 0.12
Nodes (12): root, __dirname, distDir, MIME, port, resolveSafe(), sendFile(), sendIndex() (+4 more)
### Community 30 - "RegisterView.vue"
Cohesion: 0.11
Nodes (16): JOB_CATEGORY_OPTIONS, JobCategory, PendingRegister, acceptedTerms, auth, clearField(), fieldErrors, firstName (+8 more)
### Community 31 - "AddressesView.vue"
Cohesion: 0.11
Nodes (17): add(), addOpen, closeAddForm(), formError, isDesktop, label, loading, makeDefault() (+9 more)
### Community 32 - "stores/crm.ts"
Cohesion: 0.26
Nodes (19): AgentProfileDto, agentRequest(), BrowseProductDto, completeReminder(), createAgentCustomer(), CreateAgentCustomerPayload, CreateMeetingPayload, createMeetingReport() (+11 more)
### Community 33 - "AppSlotBanner.vue"
Cohesion: 0.12
Nodes (15): banner, bannerImageLink, { banners, loading }, bannerStyle, goCta(), index, onBannerSurfaceClick(), { onTouchStart, onTouchEnd } (+7 more)
### Community 34 - "navigation.ts"
Cohesion: 0.13
Nodes (14): cartCount, cartStore, navigate(), route, router, DESKTOP_NAV_ITEMS, isNavItemActive(), MAIN_NAV_ITEMS (+6 more)
### Community 35 - "orderTracking.ts"
Cohesion: 0.15
Nodes (16): icons, currentIndex, props, steps, timestampFor(), OrderStatus, getOrderTrackingSteps(), getStepTimestamp() (+8 more)
### Community 36 - "CheckListView.vue"
Cohesion: 0.10
Nodes (15): authStore, checks, formError, invoiceAmount, isAmountComplete, isCheckout, isOverInvoice, openMenuId (+7 more)
### Community 37 - "CashSettlementView.vue"
Cohesion: 0.12
Nodes (14): BankAccount, formatDate(), formatDateTime(), isJalaliDateString(), accountsSectionTitle, bankAccounts, catalogStore, expiryMessage (+6 more)
### Community 38 - "AuthThemeToggle.vue"
Cohesion: 0.15
Nodes (15): pinia, @vueuse/core, { isDark }, themeIcon, themeLabel, themeStore, close(), open (+7 more)
### Community 39 - "CategoriesView.vue"
Cohesion: 0.12
Nodes (12): CATALOG_SEASON_CATEGORIES, CATALOG_USAGE_CATEGORIES, getCatalogCategories(), ProductCategory, SeasonCategory, crm, error, { goBack } (+4 more)
### Community 40 - "types/index.ts"
Cohesion: 0.20
Nodes (15): Cart, CashPaymentReceipt, CheckData, CheckRassResult, CheckRegistrationMode, Order, OrderStatusHistoryEntry, SettlementType (+7 more)
### Community 41 - "vue"
Cohesion: 0.14
Nodes (10): vue, Company, cartStore, catalogStore, companies, displayMeta, { goBack }, loading (+2 more)
### Community 42 - "BasicIcon.vue"
Cohesion: 0.15
Nodes (6): ariaHidden, attrs, props, style, svgHtml, emit
### Community 43 - "BaseButton.vue"
Cohesion: 0.14
Nodes (10): props, resolvedIcon, resolvedMessage, resolvedTitle, variantIcons, variantTitles, emit, emit (+2 more)
### Community 44 - "AppToast.vue"
Cohesion: 0.15
Nodes (12): footerRef, { message, title, tone, clear }, onKeydown(), toneClass, AppToastTone, defaultTitle(), message, title (+4 more)
### Community 45 - "CatalogsHubView.vue"
Cohesion: 0.12
Nodes (13): useGoBack(), catalogs, catalogStore, crm, filter, filters, { goBack }, loading (+5 more)
### Community 46 - "FavoritesView.vue"
Cohesion: 0.15
Nodes (12): readLocal(), useFavoritesStore, writeLocal(), productListThumb(), crm, error, favorites, loading (+4 more)
### Community 47 - "HomeSuggestionsSection.vue"
Cohesion: 0.14
Nodes (9): favorites, hasItems, props, {
requesting,
addressModalOpen,
addressError,
requestCatalog,
submitAddressAndRequest,
closeAddressModal,
}, requestSwatch(), router, toProductCard(), isProductUnavailable() (+1 more)
### Community 48 - "LoginView.vue"
Cohesion: 0.20
Nodes (13): normalizePhone(), validatePhone(), auth, fieldErrors, formError, onPhoneBlur(), onPhoneInput(), phone (+5 more)
### Community 49 - "ProductOrderModal.vue"
Cohesion: 0.20
Nodes (11): emit, estimatedPrice, onKeydown(), props, rollsByColor, submit(), totalMeters, totalRolls (+3 more)
### Community 50 - "DesktopHeader.vue"
Cohesion: 0.15
Nodes (8): authStore, cartStore, companyLabel, initials, logout(), notificationStore, router, showUserMenu
### Community 51 - "SupportWidget.vue"
Cohesion: 0.17
Nodes (10): LINK_ICON, { load, loaded, supportLinks, hasSupportLinks }, onFabKeydown(), open, panelRef, props, rootRef, showWidget (+2 more)
### Community 52 - "catalogGallery.ts"
Cohesion: 0.19
Nodes (12): CatalogProductCard, SeasonKind, Catalog, CatalogGalleryCard, CatalogGalleryFilter, CatalogPatternCard, filterCatalogGallery(), normalizeCatalogSearchText() (+4 more)
### Community 53 - "DesktopCartPage.vue"
Cohesion: 0.18
Nodes (5): CartItem, emit, quickLinks, router, emit
### Community 54 - "useOrderStore"
Cohesion: 0.26
Nodes (11): useCartPage(), chosenAddressText(), confirmAddressAndOrder(), openAddressPicker(), proceedAnyway(), proceedToCheckout(), removeItem(), submitOrder() (+3 more)
### Community 55 - "cart.ts"
Cohesion: 0.33
Nodes (9): ApiCart, companyMeterage(), emptyCart(), uniqueCompanyNames(), useCartStore, useLocalCart(), useCatalogStore, Product (+1 more)
### Community 56 - "supportLinks.ts"
Cohesion: 0.35
Nodes (10): mailtoHref(), PublicContact, telHref(), buildSupportLinks(), instagramHref(), isHttpUrl(), SupportLinkItem, telegramHref() (+2 more)
### Community 57 - "scripts"
Cohesion: 0.18
Nodes (11): scripts, build, build-only, dev, format, lint, lint:eslint, lint:oxlint (+3 more)
### Community 60 - "WelcomeView.vue"
Cohesion: 0.20
Nodes (5): go(), index, onTouchEnd(), router, slides
### Community 61 - "CheckModeSelectView.vue"
Cohesion: 0.20
Nodes (7): formatCurrency(), invoiceLabel, invoiceLabel, { orderId, order }, orderStore, router, invoiceLabel
### Community 62 - "DesktopSidebar.vue"
Cohesion: 0.20
Nodes (8): activeCompanyId, cartCount, cartStore, { load, supportPhone, supportHref }, navigate(), route, router, resolveNavPath()
### Community 63 - "StatusBadge.vue"
Cohesion: 0.22
Nodes (8): label, props, variant, DEFAULT_MAX_METERAGE, ORDER_STATUS_LABELS, ORDER_TRACKING_STEPS, PAYMENT_RECIPIENT_COMPANY_SLUG, STATUS_BADGE_VARIANT
### Community 64 - "http.ts"
Cohesion: 0.29
Nodes (8): ApiError, apiRequest(), buildUrl(), errorMessageFromBody(), getApiBaseUrl(), RequestOptions, fetchMySuggestions(), ProductSuggestionDto
### Community 65 - "ProfileDisplayView.vue"
Cohesion: 0.18
Nodes (9): auth, checksCount, logout(), orderStore, router, saved, { start: hideSaved }, theme (+1 more)
### Community 66 - "fabric-trade"
Cohesion: 0.20
Nodes (9): Compile and Hot-Reload for Development, Customize configuration, fabric-trade, Lint with [ESLint](https://eslint.org/), Project Setup, Recommended Browser Setup, Recommended IDE Setup, Type-Check, Compile and Minify for Production (+1 more)
### Community 67 - "App.vue"
Cohesion: 0.20
Nodes (8): lodash-es, authStore, cartStore, catalogStore, notificationStore, orderStore, router, transitionName
### Community 69 - "useConfirm.ts"
Cohesion: 0.31
Nodes (8): cancel(), confirmAction(), state, ConfirmOptions, ConfirmState, resolveConfirm(), state, useConfirmState()
### Community 70 - "dependencies"
Cohesion: 0.22
Nodes (9): dependencies, jalaali-js, lodash-es, pinia, unocss, @unocss/vite, vue, vue-router (+1 more)
### Community 71 - "tsconfig.app.json"
Cohesion: 0.22
Nodes (8): @vue/tsconfig/tsconfig.dom.json, compilerOptions, noUncheckedIndexedAccess, paths, tsBuildInfoFile, exclude, extends, include
### Community 72 - "CustomerCreateOverlay.vue"
Cohesion: 0.36
Nodes (7): CustomerFormInitial, close(), emit, onKeydown(), onSuccess(), props, sheetTitle
### Community 73 - "formatNumber"
Cohesion: 0.32
Nodes (7): widthText(), displayValue, emit, onInput(), props, formatNumber(), metaLine()
### Community 74 - "useProductOrdering"
Cohesion: 0.32
Nodes (4): useProductOrdering(), addProduct(), adjustMeterage(), getMeterage()
### Community 75 - "usePublicContact.ts"
Cohesion: 0.32
Nodes (6): emptyContact, ensureLoaded(), state, usePublicContact(), load(), getPublicContact()
### Community 76 - "buildCatalogGallery"
Cohesion: 0.25
Nodes (8): buildCatalogGallery(), catalogDisplayTitle(), groupCatalogPatterns(), majority(), patternKindOf(), patterns, title, gallery
### Community 77 - ".oxlintrc.json"
Cohesion: 0.29
Nodes (6): categories, correctness, env, browser, plugins, $schema
### Community 78 - "DefaultLayout.vue"
Cohesion: 0.29
Nodes (5): isImmersiveAuth, isWideGuest, route, showNav, showSupportWidget
### Community 79 - "useCatalogRequest"
Cohesion: 0.43
Nodes (7): useCatalogRequest(), closeAddressModal(), createRequest(), requestCatalog(), submitAddressAndRequest(), onAddressSubmit(), requestPhysicalCatalog()
### Community 80 - "vite.config.ts"
Cohesion: 0.33
Nodes (5): @unocss/vite, vite, vite-plugin-vue-devtools, @vitejs/plugin-vue, @vitejs/plugin-vue-jsx
### Community 81 - "AddressCompletionModal.vue"
Cohesion: 0.47
Nodes (5): address, emit, onKeydown(), props, submit()
### Community 82 - "MeetingReportOverlay.vue"
Cohesion: 0.53
Nodes (5): close(), emit, onKeydown(), onSuccess(), props
### Community 83 - "buildProductsQuery"
Cohesion: 0.40
Nodes (6): applyFilter(), applySearch(), buildProductsQuery(), clearFilter(), closeFilter(), resolveFilterAxis()
### Community 84 - ".prettierrc.json"
Cohesion: 0.40
Nodes (4): printWidth, $schema, semi, singleQuote
### Community 86 - "useSlotBanners.ts"
Cohesion: 0.60
Nodes (4): useSlotBanners(), load(), AppBannerDto, fetchBanners()
### Community 87 - "storage.ts"
Cohesion: 0.40
Nodes (4): getItem(), removeItem(), setItem(), STORAGE_KEYS
### Community 88 - "entrypoint.sh"
Cohesion: 0.83
Nodes (3): escape_sed(), load_env_file(), entrypoint.sh script
## Knowledge Gaps
- **759 isolated node(s):** `$schema`, `plugins`, `browser`, `correctness`, `$schema` (+754 more)
These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 926 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
- **12 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `vue` connect `vue` to `ProductsView.vue`, `LatestOrderStatusView.vue`, `HomeView.vue`, `OrderDetailView.vue`, `ProductDetailView.vue`, `CheckFormView.vue`, `CustomerDetailView.vue`, `CustomerCreateForm.vue`, `PersianDateInput.vue`, `CatalogDetailView.vue`, `TimeInput.vue`, `RemindersView.vue`, `types/crm.ts`, `SettlementTypeView.vue`, `MobileProfilePage.vue`, `AppSelect.vue`, `OtpView.vue`, `ProfileEditView.vue`, `useOrderList.ts`, `DesktopProfilePage.vue`, `vue-router`, `MeetingReportForm.vue`, `package.json`, `categoryIcons.ts`, `format.ts`, `router/index.ts`, `auth.ts`, `CustomersView.vue`, `RegisterView.vue`, `AddressesView.vue`, `stores/crm.ts`, `AppSlotBanner.vue`, `navigation.ts`, `orderTracking.ts`, `CheckListView.vue`, `CashSettlementView.vue`, `AuthThemeToggle.vue`, `CategoriesView.vue`, `types/index.ts`, `BasicIcon.vue`, `BaseButton.vue`, `AppToast.vue`, `CatalogsHubView.vue`, `FavoritesView.vue`, `HomeSuggestionsSection.vue`, `LoginView.vue`, `ProductOrderModal.vue`, `DesktopHeader.vue`, `SupportWidget.vue`, `cart.ts`, `main.ts`, `WelcomeView.vue`, `CheckModeSelectView.vue`, `DesktopSidebar.vue`, `StatusBadge.vue`, `ProfileDisplayView.vue`, `App.vue`, `useConfirm.ts`, `CustomerCreateOverlay.vue`, `formatNumber`, `usePublicContact.ts`, `DefaultLayout.vue`, `AddressCompletionModal.vue`, `MeetingReportOverlay.vue`, `useCatalogRequest.ts`, `useSlotBanners.ts`, `SearchField.vue`?**
_High betweenness centrality (0.334) - this node is a cross-community bridge._
- **Why does `vue-router` connect `vue-router` to `ProductsView.vue`, `LatestOrderStatusView.vue`, `HomeView.vue`, `OrderDetailView.vue`, `ProductDetailView.vue`, `CheckFormView.vue`, `CustomerDetailView.vue`, `CatalogDetailView.vue`, `RemindersView.vue`, `types/crm.ts`, `SettlementTypeView.vue`, `MobileProfilePage.vue`, `OtpView.vue`, `ProfileEditView.vue`, `useOrderList.ts`, `DesktopProfilePage.vue`, `package.json`, `categoryIcons.ts`, `format.ts`, `router/index.ts`, `CustomersView.vue`, `RegisterView.vue`, `AppSlotBanner.vue`, `navigation.ts`, `CheckListView.vue`, `CashSettlementView.vue`, `CategoriesView.vue`, `vue`, `BaseButton.vue`, `CatalogsHubView.vue`, `FavoritesView.vue`, `HomeSuggestionsSection.vue`, `LoginView.vue`, `DesktopHeader.vue`, `DesktopCartPage.vue`, `cart.ts`, `WelcomeView.vue`, `CheckModeSelectView.vue`, `DesktopSidebar.vue`, `ProfileDisplayView.vue`, `App.vue`, `IconChevronLeft.vue`, `DefaultLayout.vue`, `useCatalogRequest.ts`?**
_High betweenness centrality (0.105) - this node is a cross-community bridge._
- **Why does `devDependencies` connect `devDependencies` to `package.json`?**
_High betweenness centrality (0.031) - this node is a cross-community bridge._
- **Are the 2 inferred relationships involving `useAuthStore` (e.g. with `logout()` and `updateProfile()`) actually correct?**
_`useAuthStore` has 2 INFERRED edges - model-reasoned connections that need verification._
- **What connects `$schema`, `plugins`, `browser` to the rest of the system?**
_759 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `ProductsView.vue` be split into smaller, more focused modules?**
_Cohesion score 0.042352941176470586 - nodes in this community are weakly interconnected._
- **Should `LatestOrderStatusView.vue` be split into smaller, more focused modules?**
_Cohesion score 0.05959183673469388 - nodes in this community are weakly interconnected._
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+212 -183
View File
@@ -1,23 +1,23 @@
# Graph Report - fabric-nademitex_user (2026-10-01)
# Graph Report - fabric-nademitex_user (2026-10-29)
## Corpus Check
- 222 files · ~295,428 words
- 224 files · ~295,505 words
- Verdict: corpus is large enough that graph structure adds value.
- Unclassified: 23 file(s) not represented in the graph (top: .css 7, .woff2 6, (none) 5)
## Summary
- 1643 nodes · 3374 edges · 97 communities (85 shown, 12 thin omitted)
- 1653 nodes · 3407 edges · 104 communities (92 shown, 12 thin omitted)
- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 57 edges (avg confidence: 0.85)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `adb0ce88`
- Built from commit: `5141ce80`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
## Community Hubs (Navigation)
- ProductsView.vue
- LatestOrderStatusView.vue
- LatestCatalogRequestStatusView.vue
- HomeView.vue
- OrderDetailView.vue
- ProductDetailView.vue
@@ -28,8 +28,8 @@
- CatalogDetailView.vue
- TimeInput.vue
- RemindersView.vue
- types/crm.ts
- SettlementTypeView.vue
- ReminderDetailView.vue
- orderInvoice.ts
- MobileProfilePage.vue
- AppSelect.vue
- OtpView.vue
@@ -39,10 +39,10 @@
- vue-router
- MeetingReportForm.vue
- package.json
- categoryIcons.ts
- BasicIcon.vue
- format.ts
- router/index.ts
- auth.ts
- ProfileNotificationsView.vue
- useAuthStore
- CustomersView.vue
- devDependencies
- serve-user.mjs
@@ -54,13 +54,13 @@
- orderTracking.ts
- CheckListView.vue
- CashSettlementView.vue
- AuthThemeToggle.vue
- PageHeader.vue
- CategoriesView.vue
- types/index.ts
- vue
- BasicIcon.vue
- checkRass.ts
- CompanySelectView.vue
- DesktopOrdersPage.vue
- BaseButton.vue
- AppToast.vue
- useAppToast.ts
- CatalogsHubView.vue
- FavoritesView.vue
- HomeSuggestionsSection.vue
@@ -69,52 +69,59 @@
- DesktopHeader.vue
- SupportWidget.vue
- catalogGallery.ts
- DesktopCartPage.vue
- useOrderStore
- cart.ts
- supportLinks.ts
- hasFieldErrors
- order.ts
- types/index.ts
- usePublicContact.ts
- scripts
- main.ts
- caliteCollections.ts
- WelcomeView.vue
- CheckModeSelectView.vue
- DesktopSidebar.vue
- StatusBadge.vue
- SettlementTypeView.vue
- OrderTrackingSummary.vue
- jalali.ts
- http.ts
- ProfileDisplayView.vue
- fabric-trade
- App.vue
- IconChevronLeft.vue
- LatestOrderStatusView.vue
- useConfirm.ts
- dependencies
- tsconfig.app.json
- CustomerCreateOverlay.vue
- auth.ts
- formatNumber
- useProductOrdering
- usePublicContact.ts
- buildCatalogGallery
- types/crm.ts
- catalogRequests.ts
- .oxlintrc.json
- DefaultLayout.vue
- router/index.ts
- useCatalogRequest
- vite.config.ts
- AddressCompletionModal.vue
- MeetingReportOverlay.vue
- buildProductsQuery
- .prettierrc.json
- useCatalogRequest.ts
- CartView.vue
- useSlotBanners.ts
- storage.ts
- entrypoint.sh
- IconHeart.vue
- SearchField.vue
- MeterageBar.vue
- vue
- tsconfig.json
- unocss
- SimpleStatusTimeline.vue
- catalogCategories.ts
- isProductUnavailable
- useTouchSwipe
- categoryIconOf
- CapacitySummary.vue
- bannerCopy
## God Nodes (most connected - your core abstractions)
1. `vue` - 90 edges
2. `vue-router` - 56 edges
3. `router` - 35 edges
4. `useAuthStore` - 32 edges
4. `useAuthStore` - 34 edges
5. `formatNumber()` - 32 edges
6. `useCrmStore` - 27 edges
7. `useOrderStore` - 27 edges
@@ -124,28 +131,28 @@
## Surprising Connections (you probably didn't know these)
- `useFavoritesStore` --indirect_call--> `toggle()` [INFERRED]
fabric-nademitex_user/src/stores/favorites.ts → fabric-nademitex_user/src/components/ui/AppSelect.vue
src/stores/favorites.ts → src/components/ui/AppSelect.vue
- `useCartStore` --indirect_call--> `selectCompany()` [INFERRED]
fabric-nademitex_user/src/stores/cart.ts → fabric-nademitex_user/src/views/companies/CompanySelectView.vue
src/stores/cart.ts → src/views/companies/CompanySelectView.vue
- `useCatalogRequestsStore` --indirect_call--> `statusLabel()` [INFERRED]
fabric-nademitex_user/src/stores/catalogRequests.ts → fabric-nademitex_user/src/views/customers/CustomersView.vue
src/stores/catalogRequests.ts → src/views/customers/CustomersView.vue
- `goCta()` --calls--> `followBannerLink()` [EXTRACTED]
fabric-nademitex_user/src/components/banners/AppSlotBanner.vue → fabric-nademitex_user/src/utils/bannerLink.ts
src/components/banners/AppSlotBanner.vue → src/utils/bannerLink.ts
- `onBannerSurfaceClick()` --calls--> `followBannerLink()` [EXTRACTED]
fabric-nademitex_user/src/components/banners/AppSlotBanner.vue → fabric-nademitex_user/src/utils/bannerLink.ts
src/components/banners/AppSlotBanner.vue → src/utils/bannerLink.ts
## Import Cycles
- None detected.
## Communities (97 total, 12 thin omitted)
## Communities (104 total, 12 thin omitted)
### Community 0 - "ProductsView.vue"
Cohesion: 0.04
Nodes (41): categoryIconOf(), usageCategoryIconKey(), bannerCopy, bannerIcon, bannerImageLink, bannerImageUrl, { banners: productsHeroBanners }, bannerStyle (+33 more)
Nodes (35): bannerImageLink, bannerImageUrl, { banners: productsHeroBanners }, bannerStyle, categoryFilterOptions, categoryId, companyId, crm (+27 more)
### Community 1 - "LatestOrderStatusView.vue"
Cohesion: 0.06
Nodes (38): props, CatalogRequest, CatalogRequestItem, CatalogRequestStatus, mapServerRow(), readAll(), SERVER_TO_UI, STATUS_LABELS (+30 more)
### Community 1 - "LatestCatalogRequestStatusView.vue"
Cohesion: 0.20
Nodes (12): CatalogServerStatus, getSimpleCatalogStatusIndex(), getSimpleCatalogStatusTimestamps(), resolveCatalogServerStatus(), SIMPLE_CATALOG_STATUS_STEPS, STATUS_TO_STEP_INDEX, currentIndex, latestRequest (+4 more)
### Community 2 - "HomeView.vue"
Cohesion: 0.05
@@ -153,7 +160,7 @@ Nodes (37): actions, agentActions, agentLevel, auth, banner, bannerImageLink, ba
### Community 3 - "OrderDetailView.vue"
Cohesion: 0.07
Nodes (38): checksTotal, props, getStatusHero(), getTrackingFooterLabel(), CASH_PAYMENT_STATUSES, isInCashPaymentPhase(), isInCheckPhase(), SETTLEMENT_TYPE_LABELS (+30 more)
Nodes (28): canSubmitCashReceipt(), getStatusHero(), getTrackingFooterLabel(), bankAccountOptions, bankAccounts, destinationAccountId, fieldErrors, formError (+20 more)
### Community 4 - "ProductDetailView.vue"
Cohesion: 0.05
@@ -161,23 +168,23 @@ Nodes (37): adding, cartStore, catalogStore, categoryChips, closeOrderModal(), c
### Community 5 - "CheckFormView.vue"
Cohesion: 0.07
Nodes (37): MeterageValidationResult, parseFormattedNumber(), fileToBase64(), validateImageFile(), validateNationalId(), validateSayadId(), amount, backImage (+29 more)
Nodes (36): parseFormattedNumber(), fileToBase64(), validateImageFile(), validateNationalId(), validateSayadId(), amount, backImage, bankName (+28 more)
### Community 6 - "CustomerDetailView.vue"
Cohesion: 0.06
Nodes (27): agentCode, agentInitial, agentName, auth, closeEdit(), closeMeetingReport(), crm, customer (+19 more)
### Community 7 - "CustomerCreateForm.vue"
Cohesion: 0.08
Nodes (32): auth, businessName, clearField(), crm, emit, fieldErrors, firstName, formError (+24 more)
Cohesion: 0.12
Nodes (16): auth, businessName, crm, emit, fieldErrors, firstName, formError, isEdit() (+8 more)
### Community 8 - "PersianDateInput.vue"
Cohesion: 0.10
Nodes (30): jalaali-js, calendarDays, closeCalendar(), displayValue, emit, isOpen, isToday(), onDocumentClick() (+22 more)
Cohesion: 0.16
Nodes (15): closeCalendar(), emit, isOpen, isToday(), onDocumentClick(), props, rootRef, selectDay() (+7 more)
### Community 9 - "CatalogDetailView.vue"
Cohesion: 0.08
Nodes (27): demoProductsFor(), findMockCalite(), catalogLatinName(), addAllToInquiry(), adding, appToast, cartStore, catalog (+19 more)
Nodes (25): demoProductsFor(), findMockCalite(), catalogLatinName(), adding, appToast, cartStore, catalog, catalogId (+17 more)
### Community 10 - "TimeInput.vue"
Cohesion: 0.09
@@ -187,17 +194,17 @@ Nodes (27): closePanel(), confirmSelection(), displayValue, draftHour, draftMinu
Cohesion: 0.07
Nodes (25): completedExpanded, completedToday, crm, customerOptions, customers, error, filter, filters (+17 more)
### Community 12 - "types/crm.ts"
Cohesion: 0.08
Nodes (25): AgentProfile, CrmCustomer, CrmMeeting, CrmOrderSummary, CrmReminder, CustomerStatus, CustomerTab, HomeBanner (+17 more)
### Community 13 - "SettlementTypeView.vue"
### Community 12 - "ReminderDetailView.vue"
Cohesion: 0.10
Nodes (23): steps, useRequirePricedOrder(), redirectIfNeeded(), OrderItem, canChooseSettlement(), canEnterChecks(), canSubmitCashReceipt(), CASH_RECEIPT_STATUSES (+15 more)
Nodes (14): agentName, auth, chartBars, crm, customer, error, history, id (+6 more)
### Community 13 - "orderInvoice.ts"
Cohesion: 0.19
Nodes (13): useRequirePricedOrder(), redirectIfNeeded(), Order, canChooseSettlement(), CASH_RECEIPT_STATUSES, CHECK_ENTRY_STATUSES, isAwaitingAdminPricing(), isInvoicePriced() (+5 more)
### Community 14 - "MobileProfilePage.vue"
Cohesion: 0.07
Nodes (27): agentQuickActions, auth, code, codeLabel, crm, customerQuickActions, customersCount, displayName (+19 more)
Cohesion: 0.06
Nodes (35): label, props, variant, DEFAULT_MAX_METERAGE, ORDER_STATUS_LABELS, ORDER_TRACKING_STEPS, PAYMENT_RECIPIENT_COMPANY_SLUG, STATUS_BADGE_VARIANT (+27 more)
### Community 15 - "AppSelect.vue"
Cohesion: 0.11
@@ -208,67 +215,48 @@ Cohesion: 0.13
Nodes (23): extractNumericString(), auth, canResend, clearCodeError(), code, digits, fieldErrors, fillDigits() (+15 more)
### Community 17 - "ProfileEditView.vue"
Cohesion: 0.10
Nodes (23): fileToProfileAvatar(), readFileAsDataUrl(), resizeDataUrl(), address, auth, avatarUrl, fieldErrors, fileInput (+15 more)
Cohesion: 0.08
Nodes (25): fileToProfileAvatar(), readFileAsDataUrl(), resizeDataUrl(), router, address, agentReferralCode, auth, avatarUrl (+17 more)
### Community 18 - "useOrderList.ts"
Cohesion: 0.12
Cohesion: 0.13
Nodes (16): useOrderList(), companySlug(), iconVariant(), CANCELLED_STATUSES, DELIVERED_STATUSES, DesktopOrderFilterId, IN_PROGRESS_STATUSES, matchesDesktopOrderFilter() (+8 more)
### Community 19 - "DesktopProfilePage.vue"
Cohesion: 0.09
Nodes (22): unreadLabel, monthLabel, toPersianDigits(), displayPhone, displayDigit(), timerLabel, displayPhone, auth (+14 more)
Cohesion: 0.13
Nodes (13): auth, checksCount, codeLabel, creditBalance, displayEmail, emit, handleSetting(), initials (+5 more)
### Community 20 - "vue-router"
Cohesion: 0.11
Cohesion: 0.12
Nodes (14): vue-router, navigateToCatalogProduct(), catalogs, catalogStore, company, companyId, loading, openCatalog() (+6 more)
### Community 21 - "MeetingReportForm.vue"
Cohesion: 0.09
Cohesion: 0.10
Nodes (19): content, crm, customer, date, emit, error, interactionType, loading (+11 more)
### Community 22 - "package.json"
Cohesion: 0.11
Nodes (20): name, private, type, version, eslint, eslint-config-prettier, eslint-plugin-oxlint, eslint-plugin-vue (+12 more)
### Community 23 - "categoryIcons.ts"
Cohesion: 0.10
Nodes (8): CATEGORY_ICON_MAP, USAGE_ICON_BY_ID, displayCompanies, emit, orderSteps, props, quickLinks, router
Nodes (21): name, private, type, version, eslint, eslint-config-prettier, eslint-plugin-oxlint, eslint-plugin-vue (+13 more)
### Community 23 - "BasicIcon.vue"
Cohesion: 0.06
Nodes (17): ariaHidden, attrs, props, style, svgHtml, steps, CATEGORY_ICON_MAP, USAGE_ICON_BY_ID (+9 more)
### Community 24 - "format.ts"
Cohesion: 0.10
Nodes (16): props, remaining, isFull, isNearFull, percentage, props, remaining, formatMeterage() (+8 more)
Cohesion: 0.22
Nodes (10): formatDate(), formatDateTime(), isJalaliDateString(), numberFormatter, persianDateFormatter, persianDateTimeFormatter, toDateValue(), expiryMessage (+2 more)
### Community 25 - "router/index.ts"
Cohesion: 0.11
Nodes (11): router, NotificationTone, SHOP_BROWSE_PATH, {
cartStore,
items,
isEmpty,
companyName,
companySummaries,
showFullDialog,
submitting,
submitError,
addressPickerOpen,
addresses,
selectedAddressId,
newAddress,
addressBusy,
confirmAddressAndOrder,
removeItem,
proceedToCheckout,
proceedAnyway,
createNewInvoice,
}, router, router, hasUnread, items (+3 more)
### Community 25 - "ProfileNotificationsView.vue"
Cohesion: 0.22
Nodes (7): AppNotification, NotificationTone, hasUnread, items, notificationStore, router, toneIcons
### Community 26 - "auth.ts"
Cohesion: 0.23
Nodes (19): cacheUser(), fetchMe(), getCachedUser(), getCurrentUser(), isAuthenticated(), logout(), PendingOtp, sendOtp() (+11 more)
### Community 26 - "useAuthStore"
Cohesion: 0.31
Nodes (14): cacheUser(), fetchMe(), getCachedUser(), getCurrentUser(), isAuthenticated(), logout(), PendingOtp, sendOtp() (+6 more)
### Community 27 - "CustomersView.vue"
Cohesion: 0.11
Nodes (20): activeCount, closeCreate(), crm, customerListQuery(), customers, cycleStatusFilter(), error, filtered (+12 more)
Cohesion: 0.09
Nodes (27): CustomerFormInitial, close(), emit, onKeydown(), onSuccess(), props, sheetTitle, activeCount (+19 more)
### Community 28 - "devDependencies"
Cohesion: 0.10
@@ -279,11 +267,11 @@ Cohesion: 0.12
Nodes (12): root, __dirname, distDir, MIME, port, resolveSafe(), sendFile(), sendIndex() (+4 more)
### Community 30 - "RegisterView.vue"
Cohesion: 0.11
Nodes (16): JOB_CATEGORY_OPTIONS, JobCategory, PendingRegister, acceptedTerms, auth, clearField(), fieldErrors, firstName (+8 more)
Cohesion: 0.08
Nodes (23): unreadLabel, monthLabel, toPersianDigits(), displayPhone, displayDigit(), timerLabel, acceptedTerms, auth (+15 more)
### Community 31 - "AddressesView.vue"
Cohesion: 0.11
Cohesion: 0.12
Nodes (17): add(), addOpen, closeAddForm(), formError, isDesktop, label, loading, makeDefault() (+9 more)
### Community 32 - "stores/crm.ts"
@@ -291,12 +279,12 @@ Cohesion: 0.26
Nodes (19): AgentProfileDto, agentRequest(), BrowseProductDto, completeReminder(), createAgentCustomer(), CreateAgentCustomerPayload, CreateMeetingPayload, createMeetingReport() (+11 more)
### Community 33 - "AppSlotBanner.vue"
Cohesion: 0.12
Nodes (15): banner, bannerImageLink, { banners, loading }, bannerStyle, goCta(), index, onBannerSurfaceClick(), { onTouchStart, onTouchEnd } (+7 more)
Cohesion: 0.13
Nodes (14): banner, bannerImageLink, { banners, loading }, bannerStyle, goCta(), index, onBannerSurfaceClick(), { onTouchStart, onTouchEnd } (+6 more)
### Community 34 - "navigation.ts"
Cohesion: 0.13
Nodes (14): cartCount, cartStore, navigate(), route, router, DESKTOP_NAV_ITEMS, isNavItemActive(), MAIN_NAV_ITEMS (+6 more)
Cohesion: 0.07
Nodes (27): cartCount, cartStore, navigate(), route, router, activeCompanyId, cartCount, cartStore (+19 more)
### Community 35 - "orderTracking.ts"
Cohesion: 0.15
@@ -307,91 +295,91 @@ Cohesion: 0.10
Nodes (15): authStore, checks, formError, invoiceAmount, isAmountComplete, isCheckout, isOverInvoice, openMenuId (+7 more)
### Community 37 - "CashSettlementView.vue"
Cohesion: 0.12
Nodes (14): BankAccount, formatDate(), formatDateTime(), isJalaliDateString(), accountsSectionTitle, bankAccounts, catalogStore, expiryMessage (+6 more)
Cohesion: 0.17
Nodes (7): accountsSectionTitle, bankAccounts, catalogStore, { orderId, order }, orderStore, paymentRecipientName, router
### Community 38 - "AuthThemeToggle.vue"
Cohesion: 0.15
Nodes (15): pinia, @vueuse/core, { isDark }, themeIcon, themeLabel, themeStore, close(), open (+7 more)
### Community 38 - "PageHeader.vue"
Cohesion: 0.14
Nodes (14): @vueuse/core, { isDark }, themeIcon, themeLabel, themeStore, close(), open, save() (+6 more)
### Community 39 - "CategoriesView.vue"
Cohesion: 0.10
Nodes (13): useGoBack(), crm, error, { goBack }, loading, router, seasonCategories, usageCategories (+5 more)
### Community 40 - "checkRass.ts"
Cohesion: 0.36
Nodes (7): CheckData, CheckRassResult, calculateCheckRass(), daysUntilDue(), emptyRass(), parseISODate(), rass
### Community 41 - "CompanySelectView.vue"
Cohesion: 0.12
Nodes (12): CATALOG_SEASON_CATEGORIES, CATALOG_USAGE_CATEGORIES, getCatalogCategories(), ProductCategory, SeasonCategory, crm, error, { goBack } (+4 more)
Nodes (9): cartStore, catalogStore, companies, displayMeta, { goBack }, loading, router, selectCompany() (+1 more)
### Community 40 - "types/index.ts"
### Community 42 - "DesktopOrdersPage.vue"
Cohesion: 0.20
Nodes (15): Cart, CashPaymentReceipt, CheckData, CheckRassResult, CheckRegistrationMode, Order, OrderStatusHistoryEntry, SettlementType (+7 more)
### Community 41 - "vue"
Cohesion: 0.14
Nodes (10): vue, Company, cartStore, catalogStore, companies, displayMeta, { goBack }, loading (+2 more)
### Community 42 - "BasicIcon.vue"
Cohesion: 0.15
Nodes (6): ariaHidden, attrs, props, style, svgHtml, emit
Nodes (5): matchesSearch(), OrderItem, fabricName(), orderFabricLabel(), emit
### Community 43 - "BaseButton.vue"
Cohesion: 0.14
Nodes (10): props, resolvedIcon, resolvedMessage, resolvedTitle, variantIcons, variantTitles, emit, emit (+2 more)
Cohesion: 0.13
Nodes (13): props, resolvedIcon, resolvedMessage, resolvedTitle, variantIcons, variantTitles, CartItem, formatMeterage() (+5 more)
### Community 44 - "AppToast.vue"
Cohesion: 0.15
Nodes (12): footerRef, { message, title, tone, clear }, onKeydown(), toneClass, AppToastTone, defaultTitle(), message, title (+4 more)
### Community 44 - "useAppToast.ts"
Cohesion: 0.12
Nodes (14): footerRef, { message, title, tone, clear }, onKeydown(), toneClass, AppToastTone, defaultTitle(), display(), message (+6 more)
### Community 45 - "CatalogsHubView.vue"
Cohesion: 0.12
Nodes (13): useGoBack(), catalogs, catalogStore, crm, filter, filters, { goBack }, loading (+5 more)
Nodes (15): filterCatalogGallery(), normalizeCatalogSearchText(), cards, catalogs, catalogStore, crm, filter, filters (+7 more)
### Community 46 - "FavoritesView.vue"
Cohesion: 0.15
Nodes (12): readLocal(), useFavoritesStore, writeLocal(), productListThumb(), crm, error, favorites, loading (+4 more)
Nodes (12): colorSwatchStyle(), colorVariantThumb(), isCssColorToken(), productListThumb(), crm, error, favorites, loading (+4 more)
### Community 47 - "HomeSuggestionsSection.vue"
Cohesion: 0.14
Nodes (9): favorites, hasItems, props, {
Cohesion: 0.13
Nodes (8): favorites, hasItems, props, {
requesting,
addressModalOpen,
addressError,
requestCatalog,
submitAddressAndRequest,
closeAddressModal,
}, requestSwatch(), router, toProductCard(), isProductUnavailable() (+1 more)
}, requestSwatch(), router, toProductCard(), props
### Community 48 - "LoginView.vue"
Cohesion: 0.20
Nodes (13): normalizePhone(), validatePhone(), auth, fieldErrors, formError, onPhoneBlur(), onPhoneInput(), phone (+5 more)
Cohesion: 0.17
Nodes (14): router, normalizePhone(), validatePhone(), auth, fieldErrors, formError, onPhoneBlur(), onPhoneInput() (+6 more)
### Community 49 - "ProductOrderModal.vue"
Cohesion: 0.20
Nodes (11): emit, estimatedPrice, onKeydown(), props, rollsByColor, submit(), totalMeters, totalRolls (+3 more)
Cohesion: 0.24
Nodes (8): emit, estimatedPrice, onKeydown(), props, rollsByColor, submit(), totalMeters, totalRolls
### Community 50 - "DesktopHeader.vue"
Cohesion: 0.15
Nodes (8): authStore, cartStore, companyLabel, initials, logout(), notificationStore, router, showUserMenu
### Community 51 - "SupportWidget.vue"
Cohesion: 0.17
Cohesion: 0.15
Nodes (10): LINK_ICON, { load, loaded, supportLinks, hasSupportLinks }, onFabKeydown(), open, panelRef, props, rootRef, showWidget (+2 more)
### Community 52 - "catalogGallery.ts"
Cohesion: 0.19
Nodes (12): CatalogProductCard, SeasonKind, Catalog, CatalogGalleryCard, CatalogGalleryFilter, CatalogPatternCard, filterCatalogGallery(), normalizeCatalogSearchText() (+4 more)
Cohesion: 0.16
Nodes (16): CatalogProductCard, SeasonKind, buildCatalogGallery(), catalogDisplayTitle(), CatalogGalleryCard, CatalogGalleryFilter, CatalogPatternCard, groupCatalogPatterns() (+8 more)
### Community 53 - "DesktopCartPage.vue"
### Community 53 - "hasFieldErrors"
Cohesion: 0.18
Nodes (5): CartItem, emit, quickLinks, router, emit
Nodes (16): clearField(), clearFieldError(), FieldErrors, FORM_VALIDATION_SUMMARY, hasFieldErrors(), clearPhoneError(), clearField(), save() (+8 more)
### Community 54 - "useOrderStore"
Cohesion: 0.26
Nodes (11): useCartPage(), chosenAddressText(), confirmAddressAndOrder(), openAddressPicker(), proceedAnyway(), proceedToCheckout(), removeItem(), submitOrder() (+3 more)
### Community 54 - "order.ts"
Cohesion: 0.23
Nodes (11): useCartPage(), proceedAnyway(), proceedToCheckout(), removeItem(), submitOrder(), confirm(), useOrderStore, CashPaymentReceipt (+3 more)
### Community 55 - "cart.ts"
Cohesion: 0.33
Nodes (9): ApiCart, companyMeterage(), emptyCart(), uniqueCompanyNames(), useCartStore, useLocalCart(), useCatalogStore, Product (+1 more)
### Community 55 - "types/index.ts"
Cohesion: 0.20
Nodes (15): ApiCart, companyMeterage(), emptyCart(), uniqueCompanyNames(), useCartStore, useLocalCart(), useCatalogStore, BankAccount (+7 more)
### Community 56 - "supportLinks.ts"
Cohesion: 0.35
Nodes (10): mailtoHref(), PublicContact, telHref(), buildSupportLinks(), instagramHref(), isHttpUrl(), SupportLinkItem, telegramHref() (+2 more)
### Community 56 - "usePublicContact.ts"
Cohesion: 0.21
Nodes (16): emptyContact, ensureLoaded(), state, usePublicContact(), load(), getPublicContact(), mailtoHref(), PublicContact (+8 more)
### Community 57 - "scripts"
Cohesion: 0.18
@@ -401,21 +389,21 @@ Nodes (11): scripts, build, build-only, dev, format, lint, lint:eslint, lint:oxl
Cohesion: 0.20
Nodes (5): go(), index, onTouchEnd(), router, slides
### Community 61 - "CheckModeSelectView.vue"
Cohesion: 0.20
Nodes (7): formatCurrency(), invoiceLabel, invoiceLabel, { orderId, order }, orderStore, router, invoiceLabel
### Community 61 - "SettlementTypeView.vue"
Cohesion: 0.13
Nodes (13): formatCurrency(), invoiceLabel, invoiceLabel, { orderId, order }, orderStore, router, formError, invoiceLabel (+5 more)
### Community 62 - "DesktopSidebar.vue"
Cohesion: 0.20
Nodes (8): activeCompanyId, cartCount, cartStore, { load, supportPhone, supportHref }, navigate(), route, router, resolveNavPath()
### Community 62 - "OrderTrackingSummary.vue"
Cohesion: 0.18
Nodes (14): checksTotal, props, SettlementType, canEnterChecks(), CASH_PAYMENT_STATUSES, isInCashPaymentPhase(), isInCheckPhase(), SETTLEMENT_TYPE_LABELS (+6 more)
### Community 63 - "StatusBadge.vue"
Cohesion: 0.22
Nodes (8): label, props, variant, DEFAULT_MAX_METERAGE, ORDER_STATUS_LABELS, ORDER_TRACKING_STEPS, PAYMENT_RECIPIENT_COMPANY_SLUG, STATUS_BADGE_VARIANT
### Community 63 - "jalali.ts"
Cohesion: 0.19
Nodes (14): calendarDays, displayValue, buildCalendarDays(), formatJalaliDate(), formatJalaliLabel(), fromJalali(), getMonthLength(), getPersianWeekday() (+6 more)
### Community 64 - "http.ts"
Cohesion: 0.29
Nodes (8): ApiError, apiRequest(), buildUrl(), errorMessageFromBody(), getApiBaseUrl(), RequestOptions, fetchMySuggestions(), ProductSuggestionDto
Cohesion: 0.23
Nodes (10): addressesApi, SavedAddress, ApiError, apiRequest(), buildUrl(), errorMessageFromBody(), getApiBaseUrl(), RequestOptions (+2 more)
### Community 65 - "ProfileDisplayView.vue"
Cohesion: 0.18
@@ -426,8 +414,12 @@ Cohesion: 0.20
Nodes (9): Compile and Hot-Reload for Development, Customize configuration, fabric-trade, Lint with [ESLint](https://eslint.org/), Project Setup, Recommended Browser Setup, Recommended IDE Setup, Type-Check, Compile and Minify for Production (+1 more)
### Community 67 - "App.vue"
Cohesion: 0.20
Nodes (8): lodash-es, authStore, cartStore, catalogStore, notificationStore, orderStore, router, transitionName
Cohesion: 0.17
Nodes (13): lodash-es, authStore, cartStore, catalogStore, notificationStore, orderStore, router, transitionName (+5 more)
### Community 68 - "LatestOrderStatusView.vue"
Cohesion: 0.18
Nodes (12): getSimpleOrderStatusIndex(), getSimpleOrderStatusTimestamps(), SIMPLE_ORDER_STATUS_STEPS, STATUS_TO_STEP_INDEX, STEP_STATUS_ALIASES, auth, currentIndex, latestOrder (+4 more)
### Community 69 - "useConfirm.ts"
Cohesion: 0.31
@@ -441,9 +433,9 @@ Nodes (9): dependencies, jalaali-js, lodash-es, pinia, unocss, @unocss/vite, vue
Cohesion: 0.22
Nodes (8): @vue/tsconfig/tsconfig.dom.json, compilerOptions, noUncheckedIndexedAccess, paths, tsBuildInfoFile, exclude, extends, include
### Community 72 - "CustomerCreateOverlay.vue"
Cohesion: 0.36
Nodes (7): CustomerFormInitial, close(), emit, onKeydown(), onSuccess(), props, sheetTitle
### Community 72 - "auth.ts"
Cohesion: 0.22
Nodes (11): pinia, resetBroadcastPresentation(), readLocal(), useFavoritesStore, writeLocal(), User, getPendingRegister(), JOB_CATEGORY_OPTIONS (+3 more)
### Community 73 - "formatNumber"
Cohesion: 0.32
@@ -453,21 +445,21 @@ Nodes (7): widthText(), displayValue, emit, onInput(), props, formatNumber(), me
Cohesion: 0.32
Nodes (4): useProductOrdering(), addProduct(), adjustMeterage(), getMeterage()
### Community 75 - "usePublicContact.ts"
Cohesion: 0.32
Nodes (6): emptyContact, ensureLoaded(), state, usePublicContact(), load(), getPublicContact()
### Community 75 - "types/crm.ts"
Cohesion: 0.17
Nodes (11): AgentProfile, CrmCustomer, CrmMeeting, CrmOrderSummary, CrmReminder, CustomerStatus, CustomerTab, HomeBanner (+3 more)
### Community 76 - "buildCatalogGallery"
Cohesion: 0.25
Nodes (8): buildCatalogGallery(), catalogDisplayTitle(), groupCatalogPatterns(), majority(), patternKindOf(), patterns, title, gallery
### Community 76 - "catalogRequests.ts"
Cohesion: 0.24
Nodes (10): CatalogRequest, CatalogRequestItem, CatalogRequestStatus, mapServerRow(), readAll(), SERVER_TO_UI, STATUS_LABELS, useCatalogRequestsStore (+2 more)
### Community 77 - ".oxlintrc.json"
Cohesion: 0.29
Nodes (6): categories, correctness, env, browser, plugins, $schema
### Community 78 - "DefaultLayout.vue"
Cohesion: 0.29
Nodes (5): isImmersiveAuth, isWideGuest, route, showNav, showSupportWidget
### Community 78 - "router/index.ts"
Cohesion: 0.39
Nodes (3): router, router, store
### Community 79 - "useCatalogRequest"
Cohesion: 0.43
@@ -493,6 +485,23 @@ Nodes (6): applyFilter(), applySearch(), buildProductsQuery(), clearFilter(), cl
Cohesion: 0.40
Nodes (4): printWidth, $schema, semi, singleQuote
### Community 85 - "CartView.vue"
Cohesion: 0.33
Nodes (3): SHOP_BROWSE_PATH, {
cartStore,
items,
isEmpty,
companyName,
companySummaries,
showFullDialog,
submitting,
submitError,
removeItem,
proceedToCheckout,
proceedAnyway,
createNewInvoice,
}, router
### Community 86 - "useSlotBanners.ts"
Cohesion: 0.60
Nodes (4): useSlotBanners(), load(), AppBannerDto, fetchBanners()
@@ -505,25 +514,45 @@ Nodes (4): getItem(), removeItem(), setItem(), STORAGE_KEYS
Cohesion: 0.83
Nodes (3): escape_sed(), load_env_file(), entrypoint.sh script
### Community 89 - "MeterageBar.vue"
Cohesion: 0.33
Nodes (5): isFull, isNearFull, percentage, props, remaining
### Community 90 - "vue"
Cohesion: 0.50
Nodes (3): vue, focus(), inputRef
### Community 98 - "catalogCategories.ts"
Cohesion: 0.33
Nodes (5): CATALOG_SEASON_CATEGORIES, CATALOG_USAGE_CATEGORIES, getCatalogCategories(), ProductCategory, SeasonCategory
### Community 99 - "isProductUnavailable"
Cohesion: 0.40
Nodes (4): isProductUnavailable(), addAllToInquiry(), toCartProduct(), outOfStock
### Community 101 - "categoryIconOf"
Cohesion: 0.50
Nodes (4): categoryIconOf(), usageCategoryIconKey(), bannerIcon, seasonIconKey()
## Knowledge Gaps
- **759 isolated node(s):** `$schema`, `plugins`, `browser`, `correctness`, `$schema` (+754 more)
These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 926 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
- **764 isolated node(s):** `$schema`, `plugins`, `browser`, `correctness`, `$schema` (+759 more)
These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 930 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
- **12 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `vue` connect `vue` to `ProductsView.vue`, `LatestOrderStatusView.vue`, `HomeView.vue`, `OrderDetailView.vue`, `ProductDetailView.vue`, `CheckFormView.vue`, `CustomerDetailView.vue`, `CustomerCreateForm.vue`, `PersianDateInput.vue`, `CatalogDetailView.vue`, `TimeInput.vue`, `RemindersView.vue`, `types/crm.ts`, `SettlementTypeView.vue`, `MobileProfilePage.vue`, `AppSelect.vue`, `OtpView.vue`, `ProfileEditView.vue`, `useOrderList.ts`, `DesktopProfilePage.vue`, `vue-router`, `MeetingReportForm.vue`, `package.json`, `categoryIcons.ts`, `format.ts`, `router/index.ts`, `auth.ts`, `CustomersView.vue`, `RegisterView.vue`, `AddressesView.vue`, `stores/crm.ts`, `AppSlotBanner.vue`, `navigation.ts`, `orderTracking.ts`, `CheckListView.vue`, `CashSettlementView.vue`, `AuthThemeToggle.vue`, `CategoriesView.vue`, `types/index.ts`, `BasicIcon.vue`, `BaseButton.vue`, `AppToast.vue`, `CatalogsHubView.vue`, `FavoritesView.vue`, `HomeSuggestionsSection.vue`, `LoginView.vue`, `ProductOrderModal.vue`, `DesktopHeader.vue`, `SupportWidget.vue`, `cart.ts`, `main.ts`, `WelcomeView.vue`, `CheckModeSelectView.vue`, `DesktopSidebar.vue`, `StatusBadge.vue`, `ProfileDisplayView.vue`, `App.vue`, `useConfirm.ts`, `CustomerCreateOverlay.vue`, `formatNumber`, `usePublicContact.ts`, `DefaultLayout.vue`, `AddressCompletionModal.vue`, `MeetingReportOverlay.vue`, `useCatalogRequest.ts`, `useSlotBanners.ts`, `SearchField.vue`?**
_High betweenness centrality (0.334) - this node is a cross-community bridge._
- **Why does `vue-router` connect `vue-router` to `ProductsView.vue`, `LatestOrderStatusView.vue`, `HomeView.vue`, `OrderDetailView.vue`, `ProductDetailView.vue`, `CheckFormView.vue`, `CustomerDetailView.vue`, `CatalogDetailView.vue`, `RemindersView.vue`, `types/crm.ts`, `SettlementTypeView.vue`, `MobileProfilePage.vue`, `OtpView.vue`, `ProfileEditView.vue`, `useOrderList.ts`, `DesktopProfilePage.vue`, `package.json`, `categoryIcons.ts`, `format.ts`, `router/index.ts`, `CustomersView.vue`, `RegisterView.vue`, `AppSlotBanner.vue`, `navigation.ts`, `CheckListView.vue`, `CashSettlementView.vue`, `CategoriesView.vue`, `vue`, `BaseButton.vue`, `CatalogsHubView.vue`, `FavoritesView.vue`, `HomeSuggestionsSection.vue`, `LoginView.vue`, `DesktopHeader.vue`, `DesktopCartPage.vue`, `cart.ts`, `WelcomeView.vue`, `CheckModeSelectView.vue`, `DesktopSidebar.vue`, `ProfileDisplayView.vue`, `App.vue`, `IconChevronLeft.vue`, `DefaultLayout.vue`, `useCatalogRequest.ts`?**
_High betweenness centrality (0.105) - this node is a cross-community bridge._
- **Why does `vue` connect `vue` to `ProductsView.vue`, `LatestCatalogRequestStatusView.vue`, `HomeView.vue`, `OrderDetailView.vue`, `ProductDetailView.vue`, `CheckFormView.vue`, `CustomerDetailView.vue`, `CustomerCreateForm.vue`, `PersianDateInput.vue`, `CatalogDetailView.vue`, `TimeInput.vue`, `RemindersView.vue`, `ReminderDetailView.vue`, `orderInvoice.ts`, `MobileProfilePage.vue`, `AppSelect.vue`, `OtpView.vue`, `ProfileEditView.vue`, `useOrderList.ts`, `DesktopProfilePage.vue`, `vue-router`, `MeetingReportForm.vue`, `package.json`, `BasicIcon.vue`, `ProfileNotificationsView.vue`, `CustomersView.vue`, `RegisterView.vue`, `AddressesView.vue`, `stores/crm.ts`, `AppSlotBanner.vue`, `navigation.ts`, `orderTracking.ts`, `CheckListView.vue`, `CashSettlementView.vue`, `PageHeader.vue`, `CategoriesView.vue`, `CompanySelectView.vue`, `BaseButton.vue`, `useAppToast.ts`, `CatalogsHubView.vue`, `FavoritesView.vue`, `HomeSuggestionsSection.vue`, `LoginView.vue`, `ProductOrderModal.vue`, `DesktopHeader.vue`, `SupportWidget.vue`, `hasFieldErrors`, `order.ts`, `types/index.ts`, `usePublicContact.ts`, `main.ts`, `WelcomeView.vue`, `SettlementTypeView.vue`, `OrderTrackingSummary.vue`, `http.ts`, `ProfileDisplayView.vue`, `App.vue`, `LatestOrderStatusView.vue`, `useConfirm.ts`, `auth.ts`, `formatNumber`, `catalogRequests.ts`, `router/index.ts`, `AddressCompletionModal.vue`, `MeetingReportOverlay.vue`, `useSlotBanners.ts`, `MeterageBar.vue`, `CapacitySummary.vue`?**
_High betweenness centrality (0.351) - this node is a cross-community bridge._
- **Why does `vue-router` connect `vue-router` to `ProductsView.vue`, `LatestCatalogRequestStatusView.vue`, `HomeView.vue`, `OrderDetailView.vue`, `ProductDetailView.vue`, `CheckFormView.vue`, `CustomerDetailView.vue`, `CatalogDetailView.vue`, `RemindersView.vue`, `ReminderDetailView.vue`, `orderInvoice.ts`, `MobileProfilePage.vue`, `OtpView.vue`, `ProfileEditView.vue`, `useOrderList.ts`, `DesktopProfilePage.vue`, `package.json`, `BasicIcon.vue`, `ProfileNotificationsView.vue`, `CustomersView.vue`, `RegisterView.vue`, `AppSlotBanner.vue`, `navigation.ts`, `CheckListView.vue`, `CashSettlementView.vue`, `CategoriesView.vue`, `CompanySelectView.vue`, `BaseButton.vue`, `CatalogsHubView.vue`, `FavoritesView.vue`, `HomeSuggestionsSection.vue`, `LoginView.vue`, `DesktopHeader.vue`, `order.ts`, `types/index.ts`, `WelcomeView.vue`, `SettlementTypeView.vue`, `ProfileDisplayView.vue`, `App.vue`, `LatestOrderStatusView.vue`, `router/index.ts`, `CartView.vue`?**
_High betweenness centrality (0.096) - this node is a cross-community bridge._
- **Why does `devDependencies` connect `devDependencies` to `package.json`?**
_High betweenness centrality (0.031) - this node is a cross-community bridge._
- **Are the 2 inferred relationships involving `useAuthStore` (e.g. with `logout()` and `updateProfile()`) actually correct?**
_`useAuthStore` has 2 INFERRED edges - model-reasoned connections that need verification._
- **What connects `$schema`, `plugins`, `browser` to the rest of the system?**
_759 weakly-connected nodes found - possible documentation gaps or missing edges._
_764 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `ProductsView.vue` be split into smaller, more focused modules?**
_Cohesion score 0.042352941176470586 - nodes in this community are weakly interconnected._
- **Should `LatestOrderStatusView.vue` be split into smaller, more focused modules?**
_Cohesion score 0.05959183673469388 - nodes in this community are weakly interconnected._
_Cohesion score 0.044444444444444446 - nodes in this community are weakly interconnected._
- **Should `HomeView.vue` be split into smaller, more focused modules?**
_Cohesion score 0.0507399577167019 - nodes in this community are weakly interconnected._
+1
View File
@@ -0,0 +1 @@
1793260741.2983005
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+9067 -8530
View File
File diff suppressed because it is too large Load Diff
+63 -51
View File
@@ -66,9 +66,9 @@
"semantic_hash": ""
},
"src/App.vue": {
"mtime": 1790698386.5586798,
"seen": 1790871818.5585854,
"ast_hash": "761501d367b39d2f40159ea647212953",
"mtime": 1790874234.997949,
"seen": 1793260988.2220745,
"ast_hash": "96232f2817a23ad1a29bade879c47cec",
"semantic_hash": ""
},
"src/components/BasicPacks/BasicIcon.vue": {
@@ -132,9 +132,9 @@
"semantic_hash": ""
},
"src/components/home/HomeSuggestionsSection.vue": {
"mtime": 1790855780.0331223,
"seen": 1790871818.5586016,
"ast_hash": "fd5e727fdbf57043efa45400f3888aca",
"mtime": 1791092768.6783247,
"seen": 1793260988.2220962,
"ast_hash": "83f8d6aab342c1ce73d6c7f7c0d6a5ab",
"semantic_hash": ""
},
"src/components/icons/IconBell.vue": {
@@ -642,15 +642,15 @@
"semantic_hash": ""
},
"src/composables/useAppToast.ts": {
"mtime": 1790871771.1808417,
"seen": 1790871818.558731,
"ast_hash": "13166d7c49aa504bf199cd8fee986caf",
"mtime": 1790874231.1051736,
"seen": 1793260988.2222579,
"ast_hash": "e9ef7bcd5dee29498e27f410396f5a0b",
"semantic_hash": ""
},
"src/composables/useCartPage.ts": {
"mtime": 1790682531.2085528,
"seen": 1790871818.5587325,
"ast_hash": "fc2a53cfd482fb6937d1d419cd1a8a12",
"mtime": 1793260649.6840453,
"seen": 1793260988.2222598,
"ast_hash": "bba58f491a98d37a194a4debbd935883",
"semantic_hash": ""
},
"src/composables/useCatalogRequest.ts": {
@@ -672,9 +672,9 @@
"semantic_hash": ""
},
"src/composables/useOrderList.ts": {
"mtime": 1786775048.3519318,
"seen": 1790871818.558738,
"ast_hash": "505977b318d099ae32d417369c50edc4",
"mtime": 1793260906.0085173,
"seen": 1793260988.2222674,
"ast_hash": "de62ce0b8138957b4c41be485125de90",
"semantic_hash": ""
},
"src/composables/useProductOrdering.ts": {
@@ -750,9 +750,9 @@
"semantic_hash": ""
},
"src/services/authService.ts": {
"mtime": 1790682531.2494366,
"seen": 1790871818.558754,
"ast_hash": "688023b46308c7b74a31657971a87572",
"mtime": 1791094775.6047134,
"seen": 1793260988.2222908,
"ast_hash": "1329bc9ecafda50af7d601a3b3f94d4d",
"semantic_hash": ""
},
"src/services/http.ts": {
@@ -780,9 +780,9 @@
"semantic_hash": ""
},
"src/stores/auth.ts": {
"mtime": 1789822868.3508859,
"seen": 1790871818.558761,
"ast_hash": "f4a5edc071dbdc180b57ca4df2f5dc73",
"mtime": 1791094775.6057134,
"seen": 1793260988.2222998,
"ast_hash": "072e0d5d72dae0fc0d84fa0417ddb430",
"semantic_hash": ""
},
"src/stores/cart.ts": {
@@ -822,9 +822,9 @@
"semantic_hash": ""
},
"src/stores/order.ts": {
"mtime": 1790871193.251488,
"seen": 1790871818.5587697,
"ast_hash": "156eb809b7fe1ab6aeadf6d5e29f1342",
"mtime": 1793260650.8420675,
"seen": 1793260988.2223122,
"ast_hash": "3c8790cc9c3e2a9a3d0407c72e2e6dcd",
"semantic_hash": ""
},
"src/stores/theme.ts": {
@@ -930,9 +930,9 @@
"semantic_hash": ""
},
"src/utils/pendingRegister.ts": {
"mtime": 1790682531.2614048,
"seen": 1790871818.5587926,
"ast_hash": "87f48f112f4e503a2abcfc72d2739b39",
"mtime": 1791094772.0306988,
"seen": 1793260988.2223449,
"ast_hash": "f0858dd70b0682cfa1a65238def05161",
"semantic_hash": ""
},
"src/utils/productAvailability.ts": {
@@ -1008,15 +1008,15 @@
"semantic_hash": ""
},
"src/views/auth/OtpView.vue": {
"mtime": 1790682531.2634008,
"seen": 1790871818.5588088,
"ast_hash": "bfe54e23dee5963fd06e1abd5991d99f",
"mtime": 1791094786.1735728,
"seen": 1793260988.2223673,
"ast_hash": "faa34d1d580872efaa7e1a144bae2d48",
"semantic_hash": ""
},
"src/views/auth/RegisterView.vue": {
"mtime": 1790682531.2643971,
"seen": 1790871818.55881,
"ast_hash": "a4d625c373ac790fb2cbcdc8ee2c3b75",
"mtime": 1791094807.5828264,
"seen": 1793260988.2223687,
"ast_hash": "ca1bb22f577e0aa6d39349e2718da707",
"semantic_hash": ""
},
"src/views/auth/WelcomeView.vue": {
@@ -1026,9 +1026,9 @@
"semantic_hash": ""
},
"src/views/cart/CartView.vue": {
"mtime": 1790682531.2898407,
"seen": 1790871818.558815,
"ast_hash": "70425062ae4a951b20b9f0e928e2f41f",
"mtime": 1793260655.8939838,
"seen": 1793260988.222372,
"ast_hash": "631786e9726515572b28a92808f0df79",
"semantic_hash": ""
},
"src/views/cart/components/DesktopCartPage.vue": {
@@ -1044,9 +1044,9 @@
"semantic_hash": ""
},
"src/views/catalogs/CatalogDetailView.vue": {
"mtime": 1790871781.3510897,
"seen": 1790871818.5588188,
"ast_hash": "55ab134b29253d89d9f832a0a572e6f2",
"mtime": 1790871829.4996395,
"seen": 1793260988.2223775,
"ast_hash": "d5d260018d4f9f9c4527daca91e06b91",
"semantic_hash": ""
},
"src/views/catalogs/CatalogListView.vue": {
@@ -1176,15 +1176,15 @@
"semantic_hash": ""
},
"src/views/orders/components/DesktopOrdersPage.vue": {
"mtime": 1789563978.9740322,
"seen": 1790871818.558847,
"ast_hash": "3b547b1c4feaee7f5dfdcde1b911def0",
"mtime": 1793260905.1132503,
"seen": 1793260988.2224283,
"ast_hash": "09791ddbeadfd6928b891aa21a7c18b4",
"semantic_hash": ""
},
"src/views/orders/components/MobileOrdersPage.vue": {
"mtime": 1788874111.0517025,
"seen": 1790871818.5588481,
"ast_hash": "b407a07c4aca1250973c2d510af1535f",
"mtime": 1793260896.9107795,
"seen": 1793260988.2224298,
"ast_hash": "d22dddd03e898de53721187c3def0b53",
"semantic_hash": ""
},
"src/views/products/FavoritesView.vue": {
@@ -1242,9 +1242,9 @@
"semantic_hash": ""
},
"src/views/profile/ProfileEditView.vue": {
"mtime": 1790838864.4468591,
"seen": 1790871818.5588608,
"ast_hash": "19592d058290754823d4be6d1719760d",
"mtime": 1791095561.054896,
"seen": 1793260988.2224479,
"ast_hash": "cb1982dcdc2354e33bee267d217dc4db",
"semantic_hash": ""
},
"src/views/profile/ProfileNotificationsView.vue": {
@@ -1266,9 +1266,9 @@
"semantic_hash": ""
},
"src/views/profile/components/DesktopProfilePage.vue": {
"mtime": 1790791445.7824066,
"seen": 1790871818.5588663,
"ast_hash": "c7773ac0d2db1db684c1467747f017cb",
"mtime": 1791095569.6315067,
"seen": 1793260988.2224545,
"ast_hash": "9426a9af565285b4654a6aac627869e5",
"semantic_hash": ""
},
"src/views/profile/components/MobileProfilePage.vue": {
@@ -1528,5 +1528,17 @@
"seen": 1790871818.55893,
"ast_hash": "9c3245d1ffc22e10cc936a7bef715c1e",
"semantic_hash": ""
},
"src/composables/presentBroadcastNotifications.ts": {
"mtime": 1790874231.0433404,
"seen": 1793260988.222256,
"ast_hash": "e32c73df75a0fb1b15690dabc900ead8",
"semantic_hash": ""
},
"src/utils/orderFabric.ts": {
"mtime": 1793260890.9607427,
"seen": 1793260988.222338,
"ast_hash": "f2566faeeb351dbefe2ec1cb8b36da90",
"semantic_hash": ""
}
}

Some files were not shown because too many files have changed in this diff Show More