feat: redesign user authentication screens
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@@ -1 +1 @@
|
||||
import{F as e,G as t,K as n,M as r,Pt as i,_ as a,d as o,f as s,g as c,i as l,k as u,l as d,nt as f,t as p,u as m,v as h}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{s as g}from"./BasicIcon-Bzeb0Iwd.js";import{t as _}from"./http-CU_N-R2R.js";import{n as v}from"./index-WUDoJ6iF.js";import{t as y}from"./addresses-tV-zgZYG.js";import{t as b}from"./ProfileSubpageLayout-BgPHfp3E.js";var x={key:0,class:`addr-error`},S={key:1,class:`addr-muted`},C={key:2,class:`addr-list`},w={key:0,class:`addr-badge`},T={class:`addr-actions`},E=[`onClick`],D=[`onClick`],O={key:3,class:`addr-muted`},k={class:`addr-field`},A={class:`addr-field`},j=p(h({__name:`AddressesView`,setup(p){let h=f([]),j=f(``),M=f(``),N=f(``),P=f(!0),F=f(!1);async function I(){P.value=!0,N.value=``;try{h.value=await y.list()}catch(e){N.value=e instanceof _||e instanceof Error?e.message:`دریافت آدرسها ناموفق بود.`}finally{P.value=!1}}u(I);async function L(){let e=j.value.trim();if(e.length<3||F.value){N.value=`آدرس را کاملتر بنویسید.`;return}F.value=!0,N.value=``;try{await y.create({text:e,label:M.value.trim()||void 0}),j.value=``,M.value=``,h.value=await y.list()}catch(e){N.value=e instanceof _||e instanceof Error?e.message:`ذخیره آدرس ناموفق بود.`}finally{F.value=!1}}async function R(e){N.value=``;try{h.value=await y.makeDefault(e)}catch(e){N.value=e instanceof Error?e.message:`تغییر آدرس پیشفرض ناموفق بود.`}}async function z(e){N.value=``;try{h.value=await y.remove(e)}catch(e){N.value=e instanceof Error?e.message:`حذف آدرس ناموفق بود.`}}return(u,f)=>(r(),m(b,{title:`آدرسها`,subtitle:`برای ارسال کالیته از آدرس پیشفرض استفاده میشود`},{default:t(()=>[N.value?(r(),s(`p`,x,i(N.value),1)):o(``,!0),P.value?(r(),s(`p`,S,`در حال دریافت…`)):h.value.length?(r(),s(`ul`,C,[(r(!0),s(l,null,e(h.value,e=>(r(),s(`li`,{key:e.id,class:`addr-item`},[d(`div`,null,[d(`strong`,null,i(e.label||`آدرس`),1),e.isDefault?(r(),s(`span`,w,`پیشفرض`)):o(``,!0),d(`p`,null,i(e.text),1)]),d(`div`,T,[e.isDefault?o(``,!0):(r(),s(`button`,{key:0,type:`button`,onClick:t=>R(e.id)},`پیشفرض`,8,E)),d(`button`,{type:`button`,class:`addr-remove`,onClick:t=>z(e.id)},`حذف`,8,D)])]))),128))])):(r(),s(`p`,O,`هنوز آدرسی ثبت نشده است.`)),d(`label`,k,[f[2]||=d(`span`,null,`عنوان (اختیاری)`,-1),n(d(`input`,{"onUpdate:modelValue":f[0]||=e=>M.value=e,type:`text`,maxlength:`40`,placeholder:`مثلاً فروشگاه`},null,512),[[g,M.value]])]),d(`label`,A,[f[3]||=d(`span`,null,`آدرس`,-1),n(d(`textarea`,{"onUpdate:modelValue":f[1]||=e=>j.value=e,rows:`3`,maxlength:`500`,placeholder:`آدرس کامل محل فعالیت`},null,512),[[g,j.value]])]),a(v,{loading:F.value,onClick:L},{default:t(()=>[...f[4]||=[c(`افزودن آدرس`,-1)]]),_:1},8,[`loading`])]),_:1}))}}),[[`__scopeId`,`data-v-fb759dd7`]]);export{j as default};
|
||||
import{F as e,G as t,K as n,M as r,Pt as i,_ as a,d as o,f as s,g as c,i as l,k as u,l as d,nt as f,t as p,u as m,v as h}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{s as g}from"./BasicIcon-Bzeb0Iwd.js";import{t as _}from"./http-CU_N-R2R.js";import{n as v}from"./index-C40q_iVH.js";import{t as y}from"./addresses-tV-zgZYG.js";import{t as b}from"./ProfileSubpageLayout-CxIRBosu.js";var x={key:0,class:`addr-error`},S={key:1,class:`addr-muted`},C={key:2,class:`addr-list`},w={key:0,class:`addr-badge`},T={class:`addr-actions`},E=[`onClick`],D=[`onClick`],O={key:3,class:`addr-muted`},k={class:`addr-field`},A={class:`addr-field`},j=p(h({__name:`AddressesView`,setup(p){let h=f([]),j=f(``),M=f(``),N=f(``),P=f(!0),F=f(!1);async function I(){P.value=!0,N.value=``;try{h.value=await y.list()}catch(e){N.value=e instanceof _||e instanceof Error?e.message:`دریافت آدرسها ناموفق بود.`}finally{P.value=!1}}u(I);async function L(){let e=j.value.trim();if(e.length<3||F.value){N.value=`آدرس را کاملتر بنویسید.`;return}F.value=!0,N.value=``;try{await y.create({text:e,label:M.value.trim()||void 0}),j.value=``,M.value=``,h.value=await y.list()}catch(e){N.value=e instanceof _||e instanceof Error?e.message:`ذخیره آدرس ناموفق بود.`}finally{F.value=!1}}async function R(e){N.value=``;try{h.value=await y.makeDefault(e)}catch(e){N.value=e instanceof Error?e.message:`تغییر آدرس پیشفرض ناموفق بود.`}}async function z(e){N.value=``;try{h.value=await y.remove(e)}catch(e){N.value=e instanceof Error?e.message:`حذف آدرس ناموفق بود.`}}return(u,f)=>(r(),m(b,{title:`آدرسها`,subtitle:`برای ارسال کالیته از آدرس پیشفرض استفاده میشود`},{default:t(()=>[N.value?(r(),s(`p`,x,i(N.value),1)):o(``,!0),P.value?(r(),s(`p`,S,`در حال دریافت…`)):h.value.length?(r(),s(`ul`,C,[(r(!0),s(l,null,e(h.value,e=>(r(),s(`li`,{key:e.id,class:`addr-item`},[d(`div`,null,[d(`strong`,null,i(e.label||`آدرس`),1),e.isDefault?(r(),s(`span`,w,`پیشفرض`)):o(``,!0),d(`p`,null,i(e.text),1)]),d(`div`,T,[e.isDefault?o(``,!0):(r(),s(`button`,{key:0,type:`button`,onClick:t=>R(e.id)},`پیشفرض`,8,E)),d(`button`,{type:`button`,class:`addr-remove`,onClick:t=>z(e.id)},`حذف`,8,D)])]))),128))])):(r(),s(`p`,O,`هنوز آدرسی ثبت نشده است.`)),d(`label`,k,[f[2]||=d(`span`,null,`عنوان (اختیاری)`,-1),n(d(`input`,{"onUpdate:modelValue":f[0]||=e=>M.value=e,type:`text`,maxlength:`40`,placeholder:`مثلاً فروشگاه`},null,512),[[g,M.value]])]),d(`label`,A,[f[3]||=d(`span`,null,`آدرس`,-1),n(d(`textarea`,{"onUpdate:modelValue":f[1]||=e=>j.value=e,rows:`3`,maxlength:`500`,placeholder:`آدرس کامل محل فعالیت`},null,512),[[g,j.value]])]),a(v,{loading:F.value,onClick:L},{default:t(()=>[...f[4]||=[c(`افزودن آدرس`,-1)]]),_:1},8,[`loading`])]),_:1}))}}),[[`__scopeId`,`data-v-fb759dd7`]]);export{j as default};
|
||||
@@ -0,0 +1 @@
|
||||
.auth-shell[data-v-3dfa06a5]{color:#1e293b;background:#f9f6f2;height:100%;min-height:100%;position:relative;overflow:auto}.auth-shell__back[data-v-3dfa06a5]{z-index:2;cursor:pointer;background:0 0;border:0;place-items:center;width:40px;height:40px;display:grid;position:absolute;top:14px;right:12px}.auth-shell__body[data-v-3dfa06a5]{z-index:1;box-sizing:border-box;width:100%;max-width:100%;padding:48px 24px 32px;position:relative;overflow-x:hidden}.auth-shell__brand[data-v-3dfa06a5]{text-align:center;margin-bottom:14px}.auth-shell__logo[data-v-3dfa06a5]{object-fit:contain;-webkit-user-select:none;user-select:none;width:auto;height:112px;margin:0 auto;display:block}
|
||||
@@ -0,0 +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{k as l}from"./index-C40q_iVH.js";import{t as u}from"./IconChevronBack-CDeN0Cbu.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};
|
||||
@@ -1 +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,u as d,ut as f,v as p}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as m}from"./BasicIcon-Bzeb0Iwd.js";import{i as ne,n as re}from"./format-C72AoJ2H.js";import{t as ie}from"./catalog-DvXpKfLO.js";import{M as ae,d as oe,n as h}from"./index-WUDoJ6iF.js";import{t as se}from"./PageHeader-DfXduTNr.js";import{t as ce}from"./useRequirePricedOrder-B57-NeD8.js";var g=p({__name:`IconSuccessCircle`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(e){return(t,r)=>(n(),d(m,{icon:`vuesax-linear:tick-circle`,size:e.size,"stroke-width":e.strokeWidth,color:e.color},null,8,[`size`,`stroke-width`,`color`]))}}),le={class:`page cash-mobile-page mobile-only`},ue={class:`cash-page__scroll page__scroll`},_={class:`cash-page__success cash-page__success--done`},v={class:`cash-page__success-title`},y={class:`cash-page__success-subtitle`},b={class:`accounts-panel`},x={class:`accounts-panel__title`},S={class:`bank-card__head`},C={class:`bank-card__name`},w={class:`bank-card__icon`,"aria-hidden":`true`},T={class:`bank-card__field`},E={class:`bank-card__value`,dir:`ltr`},D={class:`bank-card__field`},O={class:`bank-card__value`,dir:`ltr`},k={class:`cash-page__footer`},A={class:`desktop-checkout-shell cash-desktop-page desktop-only`},j={class:`desktop-page__head`},M={class:`desktop-page__subtitle`},N={class:`cash-page__success cash-page__success--done`},P={class:`cash-page__success-title`},F={class:`accounts-panel`},I={class:`accounts-panel__title`},de={class:`desktop-grid-2`},L={class:`bank-card__head`},R={class:`bank-card__name`},z={class:`bank-card__icon`,"aria-hidden":`true`},B={class:`bank-card__field`},V={class:`bank-card__value`,dir:`ltr`},H={class:`bank-card__field`},fe={class:`bank-card__value`,dir:`ltr`},pe={class:`cash-desktop-page__actions`},U=te(p({__name:`CashSettlementView`,setup(te){let d=ae(),p=oe(),m=ie(),U=ee([]),{orderId:W,order:G}=ce(),K=o(()=>G.value?.companyName??``);i(W,async e=>{e&&!p.getOrderById(e)&&await p.fetchOrder(e)},{immediate:!0}),i(()=>G.value?.id,async e=>{if(!e||!G.value){U.value=[];return}m.companies.length||await m.loadCompanies(),U.value=await p.getBankAccountsForOrder(G.value)},{immediate:!0});let q=o(()=>G.value?.finalAmount?re(G.value.finalAmount):`—`),J=o(()=>{let e=G.value?.cashInvoiceExpiresAt;return e?`مهلت پرداخت این فاکتور تا ${ne(e)} است.`:`مبلغ فاکتور را به یکی از حسابهای زیر واریز و رسید را ثبت کنید.`}),Y=o(()=>{let e=K.value.replace(/^شرکت\s+/u,``);return e?`شماره حسابهای واریز — ${e}`:`شماره حسابهای واریز`});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(){d.replace(`/orders/${W.value}?track=1`)}function $(){d.replace(`/orders/${W.value}?track=1&receipt=1`)}return(i,o)=>(n(),s(l,null,[u(`div`,le,[a(se,{title:`تسویه نقدی`,"show-back":``,centered:``,onBack:o[0]||=e=>f(d).push(`/orders/${f(W)}`)}),u(`div`,ue,[u(`div`,_,[a(g,{size:56}),u(`p`,v,`مبلغ قابل پرداخت `+r(q.value),1),u(`p`,y,r(J.value),1)]),u(`section`,b,[u(`h2`,x,r(Y.value),1),(n(!0),s(l,null,e(U.value,e=>(n(),s(`article`,{key:e.id,class:`bank-card`},[u(`div`,S,[u(`span`,C,r(e.bankName),1),u(`span`,w,r(e.bankName.charAt(0)),1)]),u(`div`,T,[o[1]||=u(`span`,{class:`bank-card__label`},`شماره کارت`,-1),u(`strong`,E,r(X(e.cardNumber)),1)]),u(`div`,D,[o[2]||=u(`span`,{class:`bank-card__label`},`شماره شبا`,-1),u(`strong`,O,r(Z(e.iban)),1)])]))),128))])]),u(`div`,k,[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`,A,[u(`header`,j,[o[5]||=u(`h1`,{class:`desktop-page__title`},`تسویه نقدی`,-1),u(`p`,M,r(J.value),1)]),u(`div`,N,[a(g,{size:56}),u(`p`,P,`مبلغ قابل پرداخت `+r(q.value),1)]),u(`section`,F,[u(`h2`,I,r(Y.value),1),u(`div`,de,[(n(!0),s(l,null,e(U.value,e=>(n(),s(`article`,{key:e.id,class:`bank-card`},[u(`div`,L,[u(`span`,R,r(e.bankName),1),u(`span`,z,r(e.bankName.charAt(0)),1)]),u(`div`,B,[o[6]||=u(`span`,{class:`bank-card__label`},`شماره کارت`,-1),u(`strong`,V,r(X(e.cardNumber)),1)]),u(`div`,H,[o[7]||=u(`span`,{class:`bank-card__label`},`شماره شبا`,-1),u(`strong`,fe,r(Z(e.iban)),1)])]))),128))])]),u(`div`,pe,[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-c299caf6`]]);export{U as default};
|
||||
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,u as d,ut as f,v as p}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as m}from"./BasicIcon-Bzeb0Iwd.js";import{i as ne,n as re}from"./format-C72AoJ2H.js";import{t as ie}from"./catalog-DvXpKfLO.js";import{d as ae,k as oe,n as h}from"./index-C40q_iVH.js";import{t as se}from"./PageHeader-CNHiRdZv.js";import{t as ce}from"./useRequirePricedOrder-IPmVytkF.js";var g=p({__name:`IconSuccessCircle`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(e){return(t,r)=>(n(),d(m,{icon:`vuesax-linear:tick-circle`,size:e.size,"stroke-width":e.strokeWidth,color:e.color},null,8,[`size`,`stroke-width`,`color`]))}}),le={class:`page cash-mobile-page mobile-only`},ue={class:`cash-page__scroll page__scroll`},_={class:`cash-page__success cash-page__success--done`},v={class:`cash-page__success-title`},y={class:`cash-page__success-subtitle`},b={class:`accounts-panel`},x={class:`accounts-panel__title`},S={class:`bank-card__head`},C={class:`bank-card__name`},w={class:`bank-card__icon`,"aria-hidden":`true`},T={class:`bank-card__field`},E={class:`bank-card__value`,dir:`ltr`},D={class:`bank-card__field`},O={class:`bank-card__value`,dir:`ltr`},k={class:`cash-page__footer`},A={class:`desktop-checkout-shell cash-desktop-page desktop-only`},j={class:`desktop-page__head`},M={class:`desktop-page__subtitle`},N={class:`cash-page__success cash-page__success--done`},P={class:`cash-page__success-title`},F={class:`accounts-panel`},I={class:`accounts-panel__title`},de={class:`desktop-grid-2`},L={class:`bank-card__head`},R={class:`bank-card__name`},z={class:`bank-card__icon`,"aria-hidden":`true`},B={class:`bank-card__field`},V={class:`bank-card__value`,dir:`ltr`},H={class:`bank-card__field`},fe={class:`bank-card__value`,dir:`ltr`},pe={class:`cash-desktop-page__actions`},U=te(p({__name:`CashSettlementView`,setup(te){let d=oe(),p=ae(),m=ie(),U=ee([]),{orderId:W,order:G}=ce(),K=o(()=>G.value?.companyName??``);i(W,async e=>{e&&!p.getOrderById(e)&&await p.fetchOrder(e)},{immediate:!0}),i(()=>G.value?.id,async e=>{if(!e||!G.value){U.value=[];return}m.companies.length||await m.loadCompanies(),U.value=await p.getBankAccountsForOrder(G.value)},{immediate:!0});let q=o(()=>G.value?.finalAmount?re(G.value.finalAmount):`—`),J=o(()=>{let e=G.value?.cashInvoiceExpiresAt;return e?`مهلت پرداخت این فاکتور تا ${ne(e)} است.`:`مبلغ فاکتور را به یکی از حسابهای زیر واریز و رسید را ثبت کنید.`}),Y=o(()=>{let e=K.value.replace(/^شرکت\s+/u,``);return e?`شماره حسابهای واریز — ${e}`:`شماره حسابهای واریز`});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(){d.replace(`/orders/${W.value}?track=1`)}function $(){d.replace(`/orders/${W.value}?track=1&receipt=1`)}return(i,o)=>(n(),s(l,null,[u(`div`,le,[a(se,{title:`تسویه نقدی`,"show-back":``,centered:``,onBack:o[0]||=e=>f(d).push(`/orders/${f(W)}`)}),u(`div`,ue,[u(`div`,_,[a(g,{size:56}),u(`p`,v,`مبلغ قابل پرداخت `+r(q.value),1),u(`p`,y,r(J.value),1)]),u(`section`,b,[u(`h2`,x,r(Y.value),1),(n(!0),s(l,null,e(U.value,e=>(n(),s(`article`,{key:e.id,class:`bank-card`},[u(`div`,S,[u(`span`,C,r(e.bankName),1),u(`span`,w,r(e.bankName.charAt(0)),1)]),u(`div`,T,[o[1]||=u(`span`,{class:`bank-card__label`},`شماره کارت`,-1),u(`strong`,E,r(X(e.cardNumber)),1)]),u(`div`,D,[o[2]||=u(`span`,{class:`bank-card__label`},`شماره شبا`,-1),u(`strong`,O,r(Z(e.iban)),1)])]))),128))])]),u(`div`,k,[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`,A,[u(`header`,j,[o[5]||=u(`h1`,{class:`desktop-page__title`},`تسویه نقدی`,-1),u(`p`,M,r(J.value),1)]),u(`div`,N,[a(g,{size:56}),u(`p`,P,`مبلغ قابل پرداخت `+r(q.value),1)]),u(`section`,F,[u(`h2`,I,r(Y.value),1),u(`div`,de,[(n(!0),s(l,null,e(U.value,e=>(n(),s(`article`,{key:e.id,class:`bank-card`},[u(`div`,L,[u(`span`,R,r(e.bankName),1),u(`span`,z,r(e.bankName.charAt(0)),1)]),u(`div`,B,[o[6]||=u(`span`,{class:`bank-card__label`},`شماره کارت`,-1),u(`strong`,V,r(X(e.cardNumber)),1)]),u(`div`,H,[o[7]||=u(`span`,{class:`bank-card__label`},`شماره شبا`,-1),u(`strong`,fe,r(Z(e.iban)),1)])]))),128))])]),u(`div`,pe,[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-c299caf6`]]);export{U as default};
|
||||
@@ -1 +1 @@
|
||||
import{F as e,M as t,Pt as n,U as r,_ as i,c as a,f as o,i as s,k as c,l,nt as u,t as d,u as f,ut as p,v as m}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as h}from"./catalog-DvXpKfLO.js";import{M as g,T as _,j as v}from"./index-WUDoJ6iF.js";import{t as y}from"./EmptyState-D72g65G-.js";import{t as b}from"./PageHeader-DfXduTNr.js";import{t as x}from"./SearchField-dVDn9y5S.js";import{t as S}from"./PageSkeleton-DYdjm4l9.js";import{t as C}from"./catalogNavigation-BwOBRghQ.js";var w={class:`page catalog-list-page`},T={class:`catalog-list-page__desk-head desktop-only`},E={class:`page__scroll page__scroll--with-nav catalog-list-page__scroll`},D={key:1,class:`catalog-list`},O=[`onClick`],k={class:`catalog-card__icon`},A={class:`catalog-card__info`},j={class:`catalog-card__count`},M=d(m({__name:`CatalogListView`,setup(d){let m=v(),M=g(),N=h(),P=u(!0),F=a(()=>m.params.companyId),I=a(()=>N.getCompany(F.value)),L=u(``),R=a(()=>N.fetchCatalogs(F.value,L.value));async function z(){P.value=!0,N.getCompany(F.value)||await N.loadCompanies(),await N.loadCatalogs(F.value),P.value=!1}c(z),r(F,z);function B(e){C(M,e)}function V(e){let t=N.getCatalog(e);return t?.productCount==null?N.fetchProducts(e).length:t.productCount}return(r,a)=>(t(),o(`div`,w,[i(b,{class:`mobile-only`,title:I.value?.name??`کالیتهها`,subtitle:`کالیته مورد نظر را انتخاب کنید`,"show-back":``,centered:``,onBack:a[0]||=e=>p(M).push(`/catalogs`)},null,8,[`title`]),l(`header`,T,[l(`h1`,null,n(I.value?.name??`کالیتهها`),1),a[2]||=l(`p`,null,`کالیته مورد نظر را انتخاب کنید`,-1)]),i(x,{modelValue:L.value,"onUpdate:modelValue":a[1]||=e=>L.value=e,placeholder:`جستجو بر اساس کد یا نام کالیته...`,class:`catalog-list-page__search`},null,8,[`modelValue`]),l(`div`,E,[P.value?(t(),f(S,{key:0,variant:`cards`,rows:5})):R.value.length>0?(t(),o(`div`,D,[(t(!0),o(s,null,e(R.value,e=>(t(),o(`button`,{key:e.id,type:`button`,class:`catalog-card`,onClick:t=>B(e.id)},[l(`span`,k,[i(_,{size:22})]),l(`div`,A,[l(`h3`,null,`کالیته کد `+n(e.code),1),l(`p`,null,n(e.name),1)]),l(`span`,j,n(V(e.id))+` محصول`,1)],8,O))),128))])):(t(),f(y,{key:2,variant:L.value?`search`:`catalogs`,message:L.value?`با این جستجو کالیتهای پیدا نشد`:`برای این شرکت هنوز کالیتهای ثبت نشده است`},null,8,[`variant`,`message`]))])]))}}),[[`__scopeId`,`data-v-a8edb49d`]]);export{M as default};
|
||||
import{F as e,M as t,Pt as n,U as r,_ as i,c as a,f as o,i as s,k as c,l,nt as u,t as d,u as f,ut as p,v as m}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as h}from"./catalog-DvXpKfLO.js";import{O as g,S as _,k as v}from"./index-C40q_iVH.js";import{t as y}from"./EmptyState-D72g65G-.js";import{t as b}from"./PageHeader-CNHiRdZv.js";import{t as x}from"./SearchField-dVDn9y5S.js";import{t as S}from"./PageSkeleton-DYdjm4l9.js";import{t as C}from"./catalogNavigation-BwOBRghQ.js";var w={class:`page catalog-list-page`},T={class:`catalog-list-page__desk-head desktop-only`},E={class:`page__scroll page__scroll--with-nav catalog-list-page__scroll`},D={key:1,class:`catalog-list`},O=[`onClick`],k={class:`catalog-card__icon`},A={class:`catalog-card__info`},j={class:`catalog-card__count`},M=d(m({__name:`CatalogListView`,setup(d){let m=g(),M=v(),N=h(),P=u(!0),F=a(()=>m.params.companyId),I=a(()=>N.getCompany(F.value)),L=u(``),R=a(()=>N.fetchCatalogs(F.value,L.value));async function z(){P.value=!0,N.getCompany(F.value)||await N.loadCompanies(),await N.loadCatalogs(F.value),P.value=!1}c(z),r(F,z);function B(e){C(M,e)}function V(e){let t=N.getCatalog(e);return t?.productCount==null?N.fetchProducts(e).length:t.productCount}return(r,a)=>(t(),o(`div`,w,[i(b,{class:`mobile-only`,title:I.value?.name??`کالیتهها`,subtitle:`کالیته مورد نظر را انتخاب کنید`,"show-back":``,centered:``,onBack:a[0]||=e=>p(M).push(`/catalogs`)},null,8,[`title`]),l(`header`,T,[l(`h1`,null,n(I.value?.name??`کالیتهها`),1),a[2]||=l(`p`,null,`کالیته مورد نظر را انتخاب کنید`,-1)]),i(x,{modelValue:L.value,"onUpdate:modelValue":a[1]||=e=>L.value=e,placeholder:`جستجو بر اساس کد یا نام کالیته...`,class:`catalog-list-page__search`},null,8,[`modelValue`]),l(`div`,E,[P.value?(t(),f(S,{key:0,variant:`cards`,rows:5})):R.value.length>0?(t(),o(`div`,D,[(t(!0),o(s,null,e(R.value,e=>(t(),o(`button`,{key:e.id,type:`button`,class:`catalog-card`,onClick:t=>B(e.id)},[l(`span`,k,[i(_,{size:22})]),l(`div`,A,[l(`h3`,null,`کالیته کد `+n(e.code),1),l(`p`,null,n(e.name),1)]),l(`span`,j,n(V(e.id))+` محصول`,1)],8,O))),128))])):(t(),f(y,{key:2,variant:L.value?`search`:`catalogs`,message:L.value?`با این جستجو کالیتهای پیدا نشد`:`برای این شرکت هنوز کالیتهای ثبت نشده است`},null,8,[`variant`,`message`]))])]))}}),[[`__scopeId`,`data-v-a8edb49d`]]);export{M as default};
|
||||
@@ -1 +1 @@
|
||||
import{M as e,_ as t,f as n,k as r,v as i}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{M as a,j as o}from"./index-WUDoJ6iF.js";import{t as s}from"./PageSkeleton-DYdjm4l9.js";import{t as c}from"./catalogNavigation-BwOBRghQ.js";var l={class:`page`},u=i({__name:`CatalogProductRedirectView`,setup(i){let u=o(),d=a();return r(()=>{c(d,String(u.params.catalogId??``))}),(r,i)=>(e(),n(`div`,l,[t(s,{variant:`detail`})]))}});export{u as default};
|
||||
import{M as e,_ as t,f as n,k as r,v as i}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{O as a,k as o}from"./index-C40q_iVH.js";import{t as s}from"./PageSkeleton-DYdjm4l9.js";import{t as c}from"./catalogNavigation-BwOBRghQ.js";var l={class:`page`},u=i({__name:`CatalogProductRedirectView`,setup(i){let u=a(),d=o();return r(()=>{c(d,String(u.params.catalogId??``))}),(r,i)=>(e(),n(`div`,l,[t(s,{variant:`detail`})]))}});export{u 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{M as p}from"./index-WUDoJ6iF.js";import{t as m}from"./PageHeader-DfXduTNr.js";import{t as h}from"./catalogRequests-DmXxqAPC.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(`/catalogs`)}),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-9ea8c789`]]);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{k as p}from"./index-C40q_iVH.js";import{t as m}from"./PageHeader-CNHiRdZv.js";import{t as h}from"./catalogRequests-DmXxqAPC.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(`/catalogs`)}),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-9ea8c789`]]);export{C as default};
|
||||
@@ -1 +1 @@
|
||||
import{At as e,F as t,M as n,Nt as r,Pt as i,_ 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,u as m,ut as h,v as g}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{o as _}from"./format-C72AoJ2H.js";import{t as v}from"./catalog-DvXpKfLO.js";import{M as y,i as b,j as x}from"./index-WUDoJ6iF.js";import{t as S}from"./IconChevronBack-CDeN0Cbu.js";import{t as ee}from"./SearchField-dVDn9y5S.js";import{t as te}from"./PageSkeleton-DYdjm4l9.js";import{i as ne,n as C,r as w,t as T}from"./catalogNavigation-BwOBRghQ.js";import{t as E}from"./crm-Bj4T2PId.js";import{t as D}from"./IconSearch-CUp0Xr9R.js";import{t as O}from"./useGoBack-LfBY_1QL.js";var k={class:`page calite-hub`},A={class:`calite-hub__nav`},j={class:`calite-hub__nav-end`},M={class:`page__scroll page__scroll--with-nav calite-hub__scroll`},N={class:`calite-hub__chips`,role:`tablist`,"aria-label":`مرتبسازی کالیتهها`},P=[`onClick`],F={key:1,class:`calite-hub__empty`},I={key:2,class:`calite-hub__list`},L=[`onClick`],R={key:0,class:`calite-card__badge`},re={class:`calite-card__copy`,dir:`rtl`},z={class:`mr-4 text-white`},B={class:`text-lg font-bold`},V={class:`text-md`},H={class:`text-xs mt-4`},U=p(g({__name:`CatalogsHubView`,setup(p){let g=x(),U=y(),{goBack:W}=O(`/`),G=v(),K=E(),q=f([]),J=f([]),Y=f(!0),X=f(``),Z=f(null),Q=f(`all`),ie=[{id:`all`,label:`همه`},{id:`newest`,label:`جدیدترین`},{id:`popular`,label:`محبوبترین`},{id:`season`,label:`بر اساس فصل`}],ae=o(()=>{let e=C(q.value,J.value);return e.length?e:ne}),$=o(()=>w(ae.value,Q.value,X.value));u(async()=>{try{let e=await G.loadCompanies(),[t,n]=await Promise.all([Promise.all(e.map(e=>G.loadCatalogs(e.id))),K.loadBrowseProducts().catch(()=>[])]);q.value=t.flat(),J.value=n;let r=String(g.query.id??``);r&&q.value.some(e=>e.id===r)&&await T(U,r,J.value)}catch{q.value=[]}finally{Y.value=!1}});function oe(e){T(U,e,J.value)}function se(){Z.value?.focus()}function ce(e){let t=e.season===`winter`?`مناسب زمستان`:e.season===`summer`?`مناسب تابستان`:`مناسب چهار فصل`;return`${_(e.patternCount)} طرح • ${t}`}return(o,u)=>(n(),c(`div`,k,[d(`header`,A,[d(`button`,{type:`button`,class:`icon-btn mobile-only`,"aria-label":`بازگشت`,onClick:u[0]||=(...e)=>h(W)&&h(W)(...e)},[a(S,{size:20})]),u[2]||=d(`h1`,null,`کالیتهها`,-1),d(`div`,j,[a(b,{variant:`inline`,class:`mobile-only`}),d(`button`,{type:`button`,class:`icon-btn mobile-only`,"aria-label":`جستجو`,onClick:se},[a(D,{size:20})])])]),d(`div`,M,[u[4]||=d(`p`,{class:`calite-hub__lead`},`مجموعهای از بهترین پارچهها، در یک نگاه`,-1),a(ee,{ref_key:`searchFieldRef`,ref:Z,modelValue:X.value,"onUpdate:modelValue":u[1]||=e=>X.value=e,class:`calite-hub__search`,placeholder:`جستجوی نام کالیته...`},null,8,[`modelValue`]),d(`div`,N,[(n(),c(l,null,t(ie,t=>d(`button`,{key:t.id,type:`button`,class:e([`calite-chip`,{"is-on":Q.value===t.id}]),onClick:e=>Q.value=t.id},i(t.label),11,P)),64))]),Y.value?(n(),m(te,{key:0,variant:`cards`,rows:4})):$.value.length?(n(),c(`div`,I,[(n(!0),c(l,null,t($.value,e=>(n(),c(`button`,{key:e.id,type:`button`,class:`calite-card`,dir:`ltr`,onClick:t=>oe(e.id)},[d(`span`,{class:`calite-card__photo`,style:r(e.imageUrl?{backgroundImage:`url(${e.imageUrl})`}:void 0)},null,4),e.badge?(n(),c(`span`,R,i(e.badge===`new`?`جدید`:`پرفروش`),1)):s(``,!0),d(`div`,re,[u[3]||=d(`svg`,{class:`calite-card__arrow`,width:`12`,height:`16`,viewBox:`0 0 8 12`,fill:`none`,"aria-hidden":`true`},[d(`path`,{d:`M1.5 1.5 6 6l-4.5 4.5`,stroke:`#fff`,"stroke-width":`1.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`})],-1),d(`div`,z,[d(`div`,B,i(e.title),1),d(`div`,V,i(e.subtitle),1),d(`div`,H,i(ce(e)),1)])])],8,L))),128))])):(n(),c(`p`,F,`کالیتهای یافت نشد.`))])]))}}),[[`__scopeId`,`data-v-daa79410`]]);export{U as default};
|
||||
import{At as e,F as t,M as n,Nt as r,Pt as i,_ 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,u as m,ut as h,v as g}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{o as _}from"./format-C72AoJ2H.js";import{t as v}from"./catalog-DvXpKfLO.js";import{O as y,i as b,k as x}from"./index-C40q_iVH.js";import{t as S}from"./IconChevronBack-CDeN0Cbu.js";import{t as ee}from"./SearchField-dVDn9y5S.js";import{t as te}from"./PageSkeleton-DYdjm4l9.js";import{i as ne,n as C,r as w,t as T}from"./catalogNavigation-BwOBRghQ.js";import{t as E}from"./crm-Bj4T2PId.js";import{t as D}from"./IconSearch-CUp0Xr9R.js";import{t as O}from"./useGoBack-BMLMruUd.js";var k={class:`page calite-hub`},A={class:`calite-hub__nav`},j={class:`calite-hub__nav-end`},M={class:`page__scroll page__scroll--with-nav calite-hub__scroll`},N={class:`calite-hub__chips`,role:`tablist`,"aria-label":`مرتبسازی کالیتهها`},P=[`onClick`],F={key:1,class:`calite-hub__empty`},I={key:2,class:`calite-hub__list`},L=[`onClick`],R={key:0,class:`calite-card__badge`},re={class:`calite-card__copy`,dir:`rtl`},z={class:`mr-4 text-white`},B={class:`text-lg font-bold`},V={class:`text-md`},H={class:`text-xs mt-4`},U=p(g({__name:`CatalogsHubView`,setup(p){let g=y(),U=x(),{goBack:W}=O(`/`),G=v(),K=E(),q=f([]),J=f([]),Y=f(!0),X=f(``),Z=f(null),Q=f(`all`),ie=[{id:`all`,label:`همه`},{id:`newest`,label:`جدیدترین`},{id:`popular`,label:`محبوبترین`},{id:`season`,label:`بر اساس فصل`}],ae=o(()=>{let e=C(q.value,J.value);return e.length?e:ne}),$=o(()=>w(ae.value,Q.value,X.value));u(async()=>{try{let e=await G.loadCompanies(),[t,n]=await Promise.all([Promise.all(e.map(e=>G.loadCatalogs(e.id))),K.loadBrowseProducts().catch(()=>[])]);q.value=t.flat(),J.value=n;let r=String(g.query.id??``);r&&q.value.some(e=>e.id===r)&&await T(U,r,J.value)}catch{q.value=[]}finally{Y.value=!1}});function oe(e){T(U,e,J.value)}function se(){Z.value?.focus()}function ce(e){let t=e.season===`winter`?`مناسب زمستان`:e.season===`summer`?`مناسب تابستان`:`مناسب چهار فصل`;return`${_(e.patternCount)} طرح • ${t}`}return(o,u)=>(n(),c(`div`,k,[d(`header`,A,[d(`button`,{type:`button`,class:`icon-btn mobile-only`,"aria-label":`بازگشت`,onClick:u[0]||=(...e)=>h(W)&&h(W)(...e)},[a(S,{size:20})]),u[2]||=d(`h1`,null,`کالیتهها`,-1),d(`div`,j,[a(b,{variant:`inline`,class:`mobile-only`}),d(`button`,{type:`button`,class:`icon-btn mobile-only`,"aria-label":`جستجو`,onClick:se},[a(D,{size:20})])])]),d(`div`,M,[u[4]||=d(`p`,{class:`calite-hub__lead`},`مجموعهای از بهترین پارچهها، در یک نگاه`,-1),a(ee,{ref_key:`searchFieldRef`,ref:Z,modelValue:X.value,"onUpdate:modelValue":u[1]||=e=>X.value=e,class:`calite-hub__search`,placeholder:`جستجوی نام کالیته...`},null,8,[`modelValue`]),d(`div`,N,[(n(),c(l,null,t(ie,t=>d(`button`,{key:t.id,type:`button`,class:e([`calite-chip`,{"is-on":Q.value===t.id}]),onClick:e=>Q.value=t.id},i(t.label),11,P)),64))]),Y.value?(n(),m(te,{key:0,variant:`cards`,rows:4})):$.value.length?(n(),c(`div`,I,[(n(!0),c(l,null,t($.value,e=>(n(),c(`button`,{key:e.id,type:`button`,class:`calite-card`,dir:`ltr`,onClick:t=>oe(e.id)},[d(`span`,{class:`calite-card__photo`,style:r(e.imageUrl?{backgroundImage:`url(${e.imageUrl})`}:void 0)},null,4),e.badge?(n(),c(`span`,R,i(e.badge===`new`?`جدید`:`پرفروش`),1)):s(``,!0),d(`div`,re,[u[3]||=d(`svg`,{class:`calite-card__arrow`,width:`12`,height:`16`,viewBox:`0 0 8 12`,fill:`none`,"aria-hidden":`true`},[d(`path`,{d:`M1.5 1.5 6 6l-4.5 4.5`,stroke:`#fff`,"stroke-width":`1.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`})],-1),d(`div`,z,[d(`div`,B,i(e.title),1),d(`div`,V,i(e.subtitle),1),d(`div`,H,i(ce(e)),1)])])],8,L))),128))])):(n(),c(`p`,F,`کالیتهای یافت نشد.`))])]))}}),[[`__scopeId`,`data-v-daa79410`]]);export{U as default};
|
||||
@@ -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{C as d,M as f,d as p}from"./index-WUDoJ6iF.js";import{t as m}from"./IconEditPen-DkMxper9.js";import{t as h}from"./PageHeader-DfXduTNr.js";import{t as g}from"./useRequirePricedOrder-B57-NeD8.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}=g(),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(h,{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(m,{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{b as d,d as f,k as p}from"./index-C40q_iVH.js";import{t as m}from"./PageHeader-CNHiRdZv.js";import{t as h}from"./useRequirePricedOrder-IPmVytkF.js";import{t as g}from"./IconEditPen-DkMxper9.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};
|
||||
@@ -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-Bzeb0Iwd.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,n as S}from"./index-WUDoJ6iF.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-Bj4T2PId.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-4f911c6f`]]),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{n as g,u as _}from"./BasicIcon-Bzeb0Iwd.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,n as S}from"./index-C40q_iVH.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-Bj4T2PId.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-4f911c6f`]]),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};
|
||||
@@ -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-Bzeb0Iwd.js";import{o as _}from"./format-C72AoJ2H.js";import{M as v,l as y,o as b}from"./index-WUDoJ6iF.js";import{t as x}from"./PageHeader-DfXduTNr.js";import{t as S}from"./PageSkeleton-DYdjm4l9.js";import{t as C}from"./crm-Bj4T2PId.js";import{t as w}from"./IconBookmark-CQq-TOS-.js";import{n as T,t as E}from"./colorSwatch-BgOH1LE5.js";var D={class:`page favorites-page`},O={class:`page__scroll page__scroll--with-nav body`},k={key:1},A={key:2,class:`empty`},j=[`onClick`],M={class:`product-item__body`},N={class:`product-item__head`},P={class:`product-item__title`},F={key:0,class:`new-tag`},I=[`onClick`],L={class:`product-item__specs`},R={key:0,class:`swatches`},z=[`onClick`],B=f(h({__name:`FavoritesView`,setup(f){let h={summer:`تابستانه`,winter:`زمستانه`,all_season:`چهارفصل`},B=v(),V=y(),H=C(),U=d([]),W=d(!0),G=d(null);l(async()=>{W.value=!0;try{await V.hydrate();let e=await H.loadBrowseProducts(),t=new Set(V.ids);U.value=e.filter(e=>t.has(e.id))}catch(e){G.value=e instanceof Error?e.message:`بارگذاری علاقهمندیها ناموفق بود.`}finally{W.value=!1}});function K(e){return h[e]??`—`}function q(e){return E(e.colors,e.colorImages,e.imageUrls,0,e.imageUrl)}function J(e){B.push({path:`/product`,query:{id:e}})}async function Y(e){await V.toggle(e),U.value=U.value.filter(t=>t.id!==e)}return(l,d)=>(t(),o(`div`,D,[i(x,{class:`mobile-only`,title:`علاقهمندیها`,"show-back":``,centered:``,onBack:d[0]||=e=>m(B).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`,O,[W.value?(t(),p(S,{key:0,variant:`grid`})):G.value?(t(),o(`p`,k,r(G.value),1)):U.value.length?a(``,!0):(t(),o(`p`,A,`هنوز محصولی ذخیره نکردهاید.`)),(t(!0),o(c,null,e(U.value,l=>(t(),o(`article`,{key:l.id,class:`product-item`,onClick:e=>J(l.id)},[u(`div`,{class:`product-item__image`,style:n(q(l)?{backgroundImage:`url(${q(l)})`}:m(T)(l.colors[0]??``))},null,4),u(`div`,M,[u(`div`,N,[u(`div`,P,[u(`strong`,null,r(l.name),1),l.isNew?(t(),o(`span`,F,`جدید`)):a(``,!0)]),u(`button`,{type:`button`,class:`bookmark`,"aria-label":`حذف از علاقهمندیها`,onClick:g(e=>Y(l.id),[`stop`])},[i(w,{size:18,filled:``,color:`var(--color-primary)`})],8,I)]),u(`ul`,L,[u(`li`,null,`عرض: `+r(m(_)(l.widthCm))+` سانتیمتر`,1),u(`li`,null,`ترکیب: `+r(l.composition||`—`),1),u(`li`,null,`مناسب: `+r(K(l.season)),1)]),l.colors.length?(t(),o(`div`,R,[(t(!0),o(c,null,e(l.colors.slice(0,6),(e,r)=>(t(),o(`span`,{key:r,class:`swatch`,style:n(m(T)(e,l.colorImages?.[r]||l.imageUrls?.[r]))},null,4))),128))])):a(``,!0),u(`button`,{type:`button`,class:`details-link`,onClick:g(e=>J(l.id),[`stop`])},[d[1]||=s(` مشاهده جزئیات `,-1),i(b,{size:14})],8,z)])],8,j))),128))])]))}}),[[`__scopeId`,`data-v-cc481a5f`]]);export{B 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{u as g}from"./BasicIcon-Bzeb0Iwd.js";import{o as _}from"./format-C72AoJ2H.js";import{k as v,l as y,o as b}from"./index-C40q_iVH.js";import{t as x}from"./PageHeader-CNHiRdZv.js";import{t as S}from"./PageSkeleton-DYdjm4l9.js";import{t as C}from"./crm-Bj4T2PId.js";import{t as w}from"./IconBookmark-CQq-TOS-.js";import{n as T,t as E}from"./colorSwatch-BgOH1LE5.js";var D={class:`page favorites-page`},O={class:`page__scroll page__scroll--with-nav body`},k={key:1},A={key:2,class:`empty`},j=[`onClick`],M={class:`product-item__body`},N={class:`product-item__head`},P={class:`product-item__title`},F={key:0,class:`new-tag`},I=[`onClick`],L={class:`product-item__specs`},R={key:0,class:`swatches`},z=[`onClick`],B=f(h({__name:`FavoritesView`,setup(f){let h={summer:`تابستانه`,winter:`زمستانه`,all_season:`چهارفصل`},B=v(),V=y(),H=C(),U=d([]),W=d(!0),G=d(null);l(async()=>{W.value=!0;try{await V.hydrate();let e=await H.loadBrowseProducts(),t=new Set(V.ids);U.value=e.filter(e=>t.has(e.id))}catch(e){G.value=e instanceof Error?e.message:`بارگذاری علاقهمندیها ناموفق بود.`}finally{W.value=!1}});function K(e){return h[e]??`—`}function q(e){return E(e.colors,e.colorImages,e.imageUrls,0,e.imageUrl)}function J(e){B.push({path:`/product`,query:{id:e}})}async function Y(e){await V.toggle(e),U.value=U.value.filter(t=>t.id!==e)}return(l,d)=>(t(),o(`div`,D,[i(x,{class:`mobile-only`,title:`علاقهمندیها`,"show-back":``,centered:``,onBack:d[0]||=e=>m(B).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`,O,[W.value?(t(),p(S,{key:0,variant:`grid`})):G.value?(t(),o(`p`,k,r(G.value),1)):U.value.length?a(``,!0):(t(),o(`p`,A,`هنوز محصولی ذخیره نکردهاید.`)),(t(!0),o(c,null,e(U.value,l=>(t(),o(`article`,{key:l.id,class:`product-item`,onClick:e=>J(l.id)},[u(`div`,{class:`product-item__image`,style:n(q(l)?{backgroundImage:`url(${q(l)})`}:m(T)(l.colors[0]??``))},null,4),u(`div`,M,[u(`div`,N,[u(`div`,P,[u(`strong`,null,r(l.name),1),l.isNew?(t(),o(`span`,F,`جدید`)):a(``,!0)]),u(`button`,{type:`button`,class:`bookmark`,"aria-label":`حذف از علاقهمندیها`,onClick:g(e=>Y(l.id),[`stop`])},[i(w,{size:18,filled:``,color:`var(--color-primary)`})],8,I)]),u(`ul`,L,[u(`li`,null,`عرض: `+r(m(_)(l.widthCm))+` سانتیمتر`,1),u(`li`,null,`ترکیب: `+r(l.composition||`—`),1),u(`li`,null,`مناسب: `+r(K(l.season)),1)]),l.colors.length?(t(),o(`div`,R,[(t(!0),o(c,null,e(l.colors.slice(0,6),(e,r)=>(t(),o(`span`,{key:r,class:`swatch`,style:n(m(T)(e,l.colorImages?.[r]||l.imageUrls?.[r]))},null,4))),128))])):a(``,!0),u(`button`,{type:`button`,class:`details-link`,onClick:g(e=>J(l.id),[`stop`])},[d[1]||=s(` مشاهده جزئیات `,-1),i(b,{size:14})],8,z)])],8,j))),128))])]))}}),[[`__scopeId`,`data-v-cc481a5f`]]);export{B as default};
|
||||
@@ -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-Bzeb0Iwd.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`]))}});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-Bzeb0Iwd.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 +0,0 @@
|
||||
import{M as e,u as t,v as n}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as r}from"./BasicIcon-Bzeb0Iwd.js";var i=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 t};
|
||||
@@ -1 +1 @@
|
||||
import{M as e,Pt as t,_ as n,c as r,f as i,i as a,k as o,l as s,nt as c,t as l,u,ut as d,v as f}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{i as p,o as m}from"./format-C72AoJ2H.js";import{M as h}from"./index-WUDoJ6iF.js";import{t as g}from"./PageHeader-DfXduTNr.js";import{t as _}from"./PageSkeleton-DYdjm4l9.js";import{t as v}from"./catalogRequests-DmXxqAPC.js";import{t as y}from"./SimpleStatusTimeline-BYp_nmbJ.js";var b=[{id:`registered`,label:`درخواست کالیته ثبت شد`},{id:`ready_to_ship`,label:`آماده ارسال`},{id:`shipped`,label:`ارسال شد`},{id:`returned`,label:`تحویل گرفته شد`}],x={new:0,approved:0,ready_to_ship:1,delivered:2,returned:3,cancelled:0};function S(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 C(e){return x[S(e)]??0}function w(e){let t=S(e),n=p(e.createdAt),r=e.updatedAt?p(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}}var T={class:`page latest-status-page`},E={class:`page__scroll page__scroll--with-nav body`},D={class:`summary-card`},O={class:`summary-card__value`},k={class:`summary-card__meta`},A=l(f({__name:`LatestCatalogRequestStatusView`,setup(l){let f=h(),p=v(),x=c(!0),S=r(()=>p.sorted.length?p.sorted[0]:null),A=r(()=>S.value?C(S.value):0),j=r(()=>S.value?w(S.value):{});o(async()=>{x.value=!0,await p.hydrate(),x.value=!1});function M(){f.push(`/categories`)}return(r,o)=>(e(),i(`div`,T,[n(g,{class:`mobile-only`,title:`آخرین درخواست کالیته`,"show-back":``,centered:``,onBack:o[0]||=e=>d(f).push(`/`)}),o[3]||=s(`header`,{class:`desktop-page__head desktop-only`},[s(`div`,null,[s(`h1`,{class:`desktop-page__title`},`آخرین درخواست کالیته`),s(`p`,{class:`desktop-page__subtitle`},`پیگیری مراحل آخرین درخواست کالیته`)])],-1),s(`div`,E,[x.value?(e(),u(_,{key:0})):S.value?(e(),i(a,{key:1},[s(`article`,D,[o[2]||=s(`p`,{class:`summary-card__label`},`درخواست`,-1),s(`strong`,O,t(S.value.id.slice(-8)),1),s(`p`,k,t(d(m)(S.value.items.length))+` قلم کالیته `,1)]),n(y,{steps:d(b),"current-index":A.value,timestamps:j.value},null,8,[`steps`,`current-index`,`timestamps`]),s(`button`,{type:`button`,class:`detail-link`,onClick:o[1]||=e=>d(f).push(`/catalog-requests`)},` مشاهده همه درخواستها `)],64)):(e(),i(`button`,{key:2,type:`button`,class:`empty-cta`,onClick:M},` شما هیچ کالیته ای درخواست نکرده اید، جهت درخواست کالیته و مشاهده فیزیکی پارچه ها کلیک کنید `))])]))}}),[[`__scopeId`,`data-v-e09a36c6`]]);export{A as default};
|
||||
import{M as e,Pt as t,_ as n,c as r,f as i,i as a,k as o,l as s,nt as c,t as l,u,ut as d,v as f}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{i as p,o as m}from"./format-C72AoJ2H.js";import{k as h}from"./index-C40q_iVH.js";import{t as g}from"./PageHeader-CNHiRdZv.js";import{t as _}from"./PageSkeleton-DYdjm4l9.js";import{t as v}from"./catalogRequests-DmXxqAPC.js";import{t as y}from"./SimpleStatusTimeline-BYp_nmbJ.js";var b=[{id:`registered`,label:`درخواست کالیته ثبت شد`},{id:`ready_to_ship`,label:`آماده ارسال`},{id:`shipped`,label:`ارسال شد`},{id:`returned`,label:`تحویل گرفته شد`}],x={new:0,approved:0,ready_to_ship:1,delivered:2,returned:3,cancelled:0};function S(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 C(e){return x[S(e)]??0}function w(e){let t=S(e),n=p(e.createdAt),r=e.updatedAt?p(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}}var T={class:`page latest-status-page`},E={class:`page__scroll page__scroll--with-nav body`},D={class:`summary-card`},O={class:`summary-card__value`},k={class:`summary-card__meta`},A=l(f({__name:`LatestCatalogRequestStatusView`,setup(l){let f=h(),p=v(),x=c(!0),S=r(()=>p.sorted.length?p.sorted[0]:null),A=r(()=>S.value?C(S.value):0),j=r(()=>S.value?w(S.value):{});o(async()=>{x.value=!0,await p.hydrate(),x.value=!1});function M(){f.push(`/categories`)}return(r,o)=>(e(),i(`div`,T,[n(g,{class:`mobile-only`,title:`آخرین درخواست کالیته`,"show-back":``,centered:``,onBack:o[0]||=e=>d(f).push(`/`)}),o[3]||=s(`header`,{class:`desktop-page__head desktop-only`},[s(`div`,null,[s(`h1`,{class:`desktop-page__title`},`آخرین درخواست کالیته`),s(`p`,{class:`desktop-page__subtitle`},`پیگیری مراحل آخرین درخواست کالیته`)])],-1),s(`div`,E,[x.value?(e(),u(_,{key:0})):S.value?(e(),i(a,{key:1},[s(`article`,D,[o[2]||=s(`p`,{class:`summary-card__label`},`درخواست`,-1),s(`strong`,O,t(S.value.id.slice(-8)),1),s(`p`,k,t(d(m)(S.value.items.length))+` قلم کالیته `,1)]),n(y,{steps:d(b),"current-index":A.value,timestamps:j.value},null,8,[`steps`,`current-index`,`timestamps`]),s(`button`,{type:`button`,class:`detail-link`,onClick:o[1]||=e=>d(f).push(`/catalog-requests`)},` مشاهده همه درخواستها `)],64)):(e(),i(`button`,{key:2,type:`button`,class:`empty-cta`,onClick:M},` شما هیچ کالیته ای درخواست نکرده اید، جهت درخواست کالیته و مشاهده فیزیکی پارچه ها کلیک کنید `))])]))}}),[[`__scopeId`,`data-v-e09a36c6`]]);export{A 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,c as _,d as v}from"./index-WUDoJ6iF.js";import{t as y}from"./PageHeader-DfXduTNr.js";import{t as b}from"./PageSkeleton-DYdjm4l9.js";import{t as x}from"./SimpleStatusTimeline-BYp_nmbJ.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};
|
||||
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,d as _,k as v}from"./index-C40q_iVH.js";import{t as y}from"./PageHeader-CNHiRdZv.js";import{t as b}from"./PageSkeleton-DYdjm4l9.js";import{t as x}from"./SimpleStatusTimeline-BYp_nmbJ.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=_(),C=g(),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};
|
||||
@@ -0,0 +1 @@
|
||||
.auth-title[data-v-5764ebe1]{text-align:center;color:#1e293b;margin:0 0 8px;font-size:22px;font-weight:800}.auth-lead[data-v-5764ebe1]{text-align:center;color:#667085;margin:0 0 22px;font-size:13px;line-height:1.7}.auth-form[data-v-5764ebe1]{flex-direction:column;gap:12px;display:flex}.auth-field[data-v-5764ebe1]{background:#fff;border:1px solid #eaecf0;border-radius:14px;align-items:center;gap:8px;height:52px;padding:0 14px;display:flex}.auth-field.is-invalid[data-v-5764ebe1]{border-color:#b42318}.auth-field input[data-v-5764ebe1]{font:inherit;text-align:right;background:0 0;border:0;outline:none;flex:1;font-size:14px}.auth-field input[data-v-5764ebe1]::placeholder{color:#98a2b3}.auth-error[data-v-5764ebe1]{color:#b42318;margin:0;font-size:12px}.auth-submit[data-v-5764ebe1],.auth-outline[data-v-5764ebe1]{height:52px;font:inherit;cursor:pointer;border-radius:14px;place-items:center;font-size:16px;font-weight:700;text-decoration:none;display:grid}.auth-submit[data-v-5764ebe1]{color:#fff;background:#1e293b;border:0}.auth-submit[data-v-5764ebe1]:disabled{opacity:.7}.auth-outline[data-v-5764ebe1]{color:#1e293b;background:0 0;border:1.5px solid #1e293b}.auth-or[data-v-5764ebe1]{color:#98a2b3;align-items:center;gap:12px;margin:4px 0;font-size:13px;display:flex}.auth-or[data-v-5764ebe1]:before,.auth-or[data-v-5764ebe1]:after{content:"";background:#eaecf0;flex:1;height:1px}
|
||||
@@ -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{u as g}from"./BasicIcon-Bzeb0Iwd.js";import{d as _,l as v}from"./format-C72AoJ2H.js";import{a as y}from"./validation-Duyyve7l.js";import{c as b,k as x}from"./index-C40q_iVH.js";import{t as S}from"./AuthShell-D_JIc5Qr.js";import{t as C}from"./FormErrorBanner-Ud1D04xf.js";import{t as w}from"./IconPhone-DymoL1t0.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=x(),j=b(),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};
|
||||
@@ -1 +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{M as p,d as m,j as h,n as g}from"./index-WUDoJ6iF.js";import{t as _}from"./PageHeader-DfXduTNr.js";import{t as v}from"./useGoBack-LfBY_1QL.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=h(),T=p(),{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(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};
|
||||
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{O as p,d as m,k as h,n as g}from"./index-C40q_iVH.js";import{t as _}from"./PageHeader-CNHiRdZv.js";import{t as v}from"./useGoBack-BMLMruUd.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=h(),{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(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};
|
||||
@@ -0,0 +1 @@
|
||||
.auth-title[data-v-27df1667]{text-align:center;color:#1e293b;margin:0 0 8px;font-size:24px;font-weight:800}.auth-lead[data-v-27df1667]{text-align:center;color:#667085;margin:0 0 22px;font-size:13px;line-height:1.8}.auth-form[data-v-27df1667]{flex-direction:column;align-items:stretch;gap:14px;display:flex}.otp-row[data-v-27df1667]{direction:ltr;justify-content:center;gap:10px;display:flex}.otp-box[data-v-27df1667]{text-align:center;width:56px;height:56px;font:inherit;color:#1e293b;background:#fff;border:1px solid #eaecf0;border-radius:14px;font-size:22px;font-weight:700}.otp-box.is-invalid[data-v-27df1667]{border-color:#b42318}.auth-error[data-v-27df1667]{text-align:center;color:#b42318;margin:0;font-size:12px}.otp-resend[data-v-27df1667],.otp-edit[data-v-27df1667]{color:#667085;font:inherit;cursor:pointer;background:0 0;border:0;font-size:13px}.otp-resend[data-v-27df1667]:disabled{cursor:default}.auth-submit[data-v-27df1667]{color:#fff;height:52px;font:inherit;cursor:pointer;background:#1e293b;border:0;border-radius:14px;font-size:16px;font-weight:700}.auth-submit[data-v-27df1667]:disabled{opacity:.7}
|
||||
@@ -1 +0,0 @@
|
||||
.otp-page[data-v-95ef2b05]{isolation:isolate;color:#f4ede4;background:#1a1612;height:100%;min-height:100%;position:relative;overflow:hidden}.otp-page__bg[data-v-95ef2b05]{z-index:0;object-fit:cover;object-position:center center;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.otp-page__scroll[data-v-95ef2b05]{z-index:1;overscroll-behavior:contain;height:100%;position:relative;overflow:hidden auto}.otp-page__stage[data-v-95ef2b05]{width:100%;max-width:390px;min-height:100%;padding:calc(10px + env(safe-area-inset-top,0px)) 16px calc(14px + env(safe-area-inset-bottom,0px));box-sizing:border-box;flex-direction:column;margin-inline:auto;display:flex}.otp-top[data-v-95ef2b05]{justify-content:flex-end;align-items:center;min-height:36px;display:flex}.otp-top__back[data-v-95ef2b05]{color:#f3e6d6;cursor:pointer;background:#f4ede424;border:none;border-radius:999px;place-items:center;width:36px;height:36px;display:grid}.otp-brand[data-v-95ef2b05]{text-align:center;color:#f3e6d6;flex-direction:column;align-items:center;margin-top:18px;margin-bottom:18px;display:flex}.otp-brand__fa[data-v-95ef2b05]{margin:12px 0 0;font-size:1.625rem;font-weight:700;line-height:1.25}.otp-brand__en[data-v-95ef2b05]{letter-spacing:.28em;color:#ead7c0;margin:6px 0 0;font-size:.6875rem;font-weight:500}.otp-card[data-v-95ef2b05]{color:#2a2622;background:#f4f1ed;border:none;border-radius:28px;width:100%;margin:0;padding:22px 18px 18px;box-shadow:0 18px 40px #0c0a0838}.otp-card__title[data-v-95ef2b05]{text-align:center;color:#1c1b19;margin:0;font-size:1.0625rem;font-weight:700;line-height:1.5}.otp-card__lead[data-v-95ef2b05]{text-align:center;color:#8a847c;margin:6px 0 0;font-size:.75rem;line-height:1.7}.otp-card[data-v-95ef2b05] .form-error-banner{margin-top:14px;margin-bottom:0}.otp-row[data-v-95ef2b05]{justify-content:center;gap:10px;margin-top:18px;display:flex}.otp-box[data-v-95ef2b05]{color:#1c1b19;text-align:center;width:52px;height:56px;caret-color:var(--color-primary);border:1px solid #e4e0db;border-radius:16px;padding:0;font-family:inherit;font-size:1.25rem;font-weight:700;transition:border-color .15s}.otp-box[data-v-95ef2b05]:focus{border-color:var(--color-primary);outline:none}.otp-box--error[data-v-95ef2b05]{border-color:color-mix(in srgb, var(--color-danger) 55%, #e4e0db)}.otp-card__error[data-v-95ef2b05]{color:var(--color-danger);text-align:center;margin:8px 4px 0;font-size:.75rem}.otp-submit[data-v-95ef2b05]{background:var(--color-primary);width:100%;height:48px;color:var(--color-surface);cursor:pointer;border:none;border-radius:999px;justify-content:center;align-items:center;margin-top:16px;padding:0 44px;font-family:inherit;font-size:.9375rem;font-weight:600;transition:background .15s;display:flex;position:relative}.otp-submit[data-v-95ef2b05]:not(:disabled):hover,.otp-submit[data-v-95ef2b05]:not(:disabled):focus-visible{background:var(--color-primary-hover)}.otp-submit[data-v-95ef2b05]:disabled{opacity:.7;cursor:not-allowed}.otp-submit__chevron[data-v-95ef2b05]{place-items:center;display:grid;position:absolute;inset-inline-end:16px}.otp-submit__spinner[data-v-95ef2b05]{border:2px solid #ffffff47;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.6s linear infinite otp-spin-95ef2b05;position:absolute;inset-inline-start:16px}.otp-resend[data-v-95ef2b05]{color:#6f6b66;cursor:pointer;background:0 0;border:1px solid #d8d3cd;border-radius:999px;width:100%;height:48px;margin-top:10px;font-family:inherit;font-size:.875rem;font-weight:500}.otp-resend[data-v-95ef2b05]:disabled{opacity:.7;cursor:not-allowed}.otp-edit[data-v-95ef2b05]{color:#8a847c;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;gap:6px;width:100%;margin-top:14px;font-family:inherit;font-size:.8125rem;display:flex}.otp-spacer[data-v-95ef2b05]{flex:auto;min-height:16px}.otp-watermark[data-v-95ef2b05]{color:#f4ede494;letter-spacing:.2em;text-align:left;direction:ltr;margin:0;padding-bottom:8px;font-size:.625rem;font-weight:600;line-height:1.35}@keyframes otp-spin-95ef2b05{to{transform:rotate(360deg)}}@media (width>=768px){.otp-page[data-v-95ef2b05]{max-width:none;height:100%;min-height:0;margin:0;padding:0;overflow:hidden}}
|
||||
@@ -0,0 +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-Bzeb0Iwd.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{O as w,c as T,h as E,k as ee}from"./index-C40q_iVH.js";import{t as te}from"./AuthShell-D_JIc5Qr.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});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-27df1667`]]);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{i as d}from"./index-WUDoJ6iF.js";import{t as f}from"./IconChevronBack-CDeN0Cbu.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-c4a68159`]]);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{i as d}from"./index-C40q_iVH.js";import{t as f}from"./IconChevronBack-CDeN0Cbu.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-c4a68159`]]);export{x as t};
|
||||
@@ -1 +1 @@
|
||||
import{t as e}from"./CheckListView-BweT5VrG.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-CY_LoCUs.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-Bzeb0Iwd.js";import{u as v}from"./dist-U-AqZ6hP.js";import{M as y,a as b,c as x,d as S,n as C}from"./index-WUDoJ6iF.js";import{t as w}from"./ProfileSubpageLayout-BgPHfp3E.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=y(),B=x(),V=S(),H=b(),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};
|
||||
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-Bzeb0Iwd.js";import{u as v}from"./dist-U-AqZ6hP.js";import{a as y,c as b,d as x,k as S,n as C}from"./index-C40q_iVH.js";import{t as w}from"./ProfileSubpageLayout-CxIRBosu.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=S(),B=b(),V=x(),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};
|
||||
@@ -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-Bzeb0Iwd.js";import{i as v}from"./format-C72AoJ2H.js";import{M as y,n as b,u as x}from"./index-WUDoJ6iF.js";import{t as S}from"./EmptyState-D72g65G-.js";import{t as C}from"./ProfileSubpageLayout-BgPHfp3E.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=x(),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-Bzeb0Iwd.js";import{i as v}from"./format-C72AoJ2H.js";import{k as y,n as b,u as x}from"./index-C40q_iVH.js";import{t as S}from"./EmptyState-D72g65G-.js";import{t as C}from"./ProfileSubpageLayout-CxIRBosu.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=x(),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};
|
||||
@@ -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{n as d}from"./index-WUDoJ6iF.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-BgPHfp3E.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{n as d}from"./index-C40q_iVH.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-CxIRBosu.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{M as u}from"./index-WUDoJ6iF.js";import{t as d}from"./IconChevronBack-CDeN0Cbu.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{k as u}from"./index-C40q_iVH.js";import{t as d}from"./IconChevronBack-CDeN0Cbu.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};
|
||||
@@ -0,0 +1 @@
|
||||
.auth-title[data-v-6e3d20c2]{text-align:center;color:#1e293b;margin:0 0 8px;font-size:24px;font-weight:800}.auth-lead[data-v-6e3d20c2]{text-align:center;color:#667085;margin:0 0 22px;font-size:13px;line-height:1.7}.auth-form[data-v-6e3d20c2]{box-sizing:border-box;flex-direction:column;gap:12px;width:100%;min-width:0;display:flex}.auth-row[data-v-6e3d20c2]{grid-template-columns:1fr 1fr;gap:10px;width:100%;min-width:0;display:grid}.auth-field[data-v-6e3d20c2]{box-sizing:border-box;background:#fff;border:1px solid #eaecf0;border-radius:14px;align-items:center;gap:8px;width:100%;min-width:0;height:52px;padding:0 14px;display:flex;overflow:hidden}.auth-field.is-invalid[data-v-6e3d20c2]{border-color:#b42318}.auth-field input[data-v-6e3d20c2]{width:100%;min-width:0;font:inherit;text-align:right;color:#1e293b;background:0 0;border:0;outline:none;flex:1 1 0;font-size:14px}.auth-field input[data-v-6e3d20c2]::placeholder{color:#98a2b3}.auth-error[data-v-6e3d20c2]{color:#b42318;margin:-4px 0 0;font-size:12px}.job-label[data-v-6e3d20c2]{color:#1e293b;margin:4px 0 0;font-size:14px;font-weight:700}.job-grid[data-v-6e3d20c2]{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.job-card[data-v-6e3d20c2]{color:#667085;min-height:108px;font:inherit;text-align:center;cursor:pointer;background:#fff;border:1.5px solid #eaecf0;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:10px 6px;font-size:11px;line-height:1.45;display:flex}.job-card__icon[data-v-6e3d20c2]{object-fit:contain;-webkit-user-select:none;user-select:none;width:40px;height:40px;display:block}.job-card.is-on[data-v-6e3d20c2]{color:#1e293b;border-color:#1e293b;font-weight:700}.auth-submit[data-v-6e3d20c2]{color:#fff;height:52px;font:inherit;cursor:pointer;background:#1e293b;border:0;border-radius:14px;margin-top:4px;font-size:16px;font-weight:700}.auth-submit[data-v-6e3d20c2]:disabled{opacity:.7}.terms[data-v-6e3d20c2]{color:#475569;align-items:center;gap:8px;font-size:12px;display:flex}.terms input[data-v-6e3d20c2]{accent-color:#1e293b;flex-shrink:0;width:16px;height:16px}
|
||||
@@ -0,0 +1 @@
|
||||
.welcome[data-v-34e03d54]{color:#fff;background:#0f172a;height:100%;min-height:100%;position:relative;overflow:hidden}.welcome__photo[data-v-34e03d54]{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .5s;position:absolute;inset:0}.welcome__photo.is-on[data-v-34e03d54]{opacity:1}.welcome__shade[data-v-34e03d54]{background:linear-gradient(#0f172a26 20%,#0f172ad1 100%);position:absolute;inset:0}.welcome__brand[data-v-34e03d54],.welcome__copy[data-v-34e03d54],.welcome__cta[data-v-34e03d54]{z-index:1;position:relative}.welcome__brand[data-v-34e03d54]{text-align:center;padding-top:14vh}.welcome__logo[data-v-34e03d54]{object-fit:contain;filter:brightness(0)invert();-webkit-user-select:none;user-select:none;width:auto;height:110px;margin:0 auto;display:block}.welcome__copy[data-v-34e03d54]{position:absolute;bottom:108px;left:24px;right:24px}.welcome__copy h1[data-v-34e03d54]{margin:0 0 10px;font-size:32px;font-weight:700;line-height:1.35}.welcome__copy p[data-v-34e03d54]{opacity:.92;margin:0;font-size:14px;line-height:1.8}.welcome__dots[data-v-34e03d54]{gap:6px;margin-top:18px;display:flex}.welcome__dots button[data-v-34e03d54]{background:#ffffff73;border:0;border-radius:999px;width:7px;height:7px;padding:0}.welcome__dots button.is-on[data-v-34e03d54]{background:#fff;width:18px}.welcome__cta[data-v-34e03d54]{color:#fff;height:52px;font:inherit;cursor:pointer;background:#1e293b;border:0;border-radius:14px;font-size:16px;font-weight:700;position:absolute;bottom:28px;left:24px;right:24px}
|
||||
@@ -1 +0,0 @@
|
||||
.welcome-page[data-v-443d4085]{isolation:isolate;color:#f4ede4;background:#1a1612;height:100%;min-height:100%;position:relative;overflow:hidden}.welcome-page__bg[data-v-443d4085]{z-index:0;object-fit:cover;object-position:center;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.welcome-page__veil[data-v-443d4085]{z-index:1;pointer-events:none;background:linear-gradient(#0c0a086b 0%,#0c0a0847 42%,#0c0a08b8 100%);position:absolute;inset:0}.welcome-page__scroll[data-v-443d4085]{z-index:2;overscroll-behavior:contain;height:100%;position:relative;overflow:hidden auto}.welcome-page__stage[data-v-443d4085]{width:100%;max-width:390px;min-height:100%;padding:calc(12px + env(safe-area-inset-top,0px)) 20px calc(20px + env(safe-area-inset-bottom,0px));box-sizing:border-box;flex-direction:column;margin-inline:auto;display:flex}.welcome-top[data-v-443d4085]{justify-content:flex-end;min-height:40px;display:flex}.welcome-skip[data-v-443d4085]{color:#f4ede4;height:34px;font:inherit;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0c0a0873;border:none;border-radius:999px;padding:0 16px;font-size:.8125rem;font-weight:500}.welcome-brand[data-v-443d4085]{text-align:center;flex-direction:column;align-items:center;margin-top:28px;display:flex}.welcome-brand__fa[data-v-443d4085]{color:#ead7c0;margin:14px 0 0;font-size:1.875rem;font-weight:700;line-height:1.3}.welcome-brand__tag[data-v-443d4085]{color:#f4ede4eb;max-width:16rem;margin:10px 0 0;font-size:.8125rem;font-weight:400;line-height:1.7}.welcome-brand__rule[data-v-443d4085]{background:var(--color-primary);border-radius:1px;width:36px;height:1.5px;margin-top:16px;display:block}.welcome-features[data-v-443d4085]{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:36px 0 0;padding:0;list-style:none;display:grid}.welcome-feature[data-v-443d4085]{text-align:center;flex-direction:column;align-items:center;gap:8px;display:flex}.welcome-feature__icon[data-v-443d4085]{color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#f4ede438;border-radius:999px;place-items:center;width:48px;height:48px;display:grid}.welcome-feature__star[data-v-443d4085]{width:22px;height:22px}.welcome-feature strong[data-v-443d4085]{color:#f4ede4;font-size:.6875rem;font-weight:700;line-height:1.45}.welcome-feature span[data-v-443d4085]{color:#f4ede4b8;font-size:.5625rem;font-weight:400;line-height:1.5}.welcome-spacer[data-v-443d4085]{flex:auto;min-height:28px}.welcome-dots[data-v-443d4085]{justify-content:center;gap:6px;margin-bottom:16px;display:flex}.welcome-dots i[data-v-443d4085]{background:#f4ede447;border-radius:999px;width:6px;height:6px}.welcome-dots i.is-on[data-v-443d4085]{background:#f4ede4}.welcome-cta[data-v-443d4085]{background:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 65%, transparent) 0%, color-mix(in srgb, var(--color-primary) 42%, transparent) 48%, color-mix(in srgb, var(--color-accent-navy) 48%, transparent) 100%);color:#fff;width:100%;height:52px;font:inherit;cursor:pointer;-webkit-backdrop-filter:blur(10px);border:1px solid #f4ede447;border-radius:999px;justify-content:center;align-items:center;padding:0 44px;font-size:.9375rem;font-weight:600;display:flex;position:relative;box-shadow:inset 0 1px #ffffff1f}.welcome-cta__chevron[data-v-443d4085]{place-items:center;display:grid;position:absolute;inset-inline-end:16px}@media (width>=768px){.welcome-page[data-v-443d4085]{max-width:none;height:100%;min-height:0;margin:0;padding:0;overflow:hidden}.welcome-page__stage[data-v-443d4085]{max-width:390px;padding-block:16px 24px}}@media (width<=359px){.welcome-page__stage[data-v-443d4085]{padding-inline:14px}.welcome-brand__fa[data-v-443d4085]{font-size:1.625rem}.welcome-feature__icon[data-v-443d4085]{width:42px;height:42px}}
|
||||
@@ -1 +0,0 @@
|
||||
import{F as e,M as t,Pt as n,_ as r,f as i,i as a,l as o,t as s,u as c,ut as l,v as u}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as d}from"./BasicIcon-Bzeb0Iwd.js";import{M as f,_ as p,o as m}from"./index-WUDoJ6iF.js";import{t as h}from"./login-fabric-CzrIXTnD.js";var g={class:`page welcome-page`},_=[`src`],v={class:`welcome-page__scroll`},y={class:`welcome-page__stage`},b={class:`welcome-brand`},x={class:`welcome-features`},S={class:`welcome-feature__icon`,"aria-hidden":`true`},C={key:0,class:`welcome-feature__star`,viewBox:`0 0 24 24`,fill:`none`},w={class:`welcome-cta__chevron`,"aria-hidden":`true`},T=s(u({__name:`WelcomeView`,setup(s){let u=f(),T=[{icon:`star`,title:`همراه همیشگی کسبوکارتان`,subtitle:`با خدمات ویژه مشتریان`},{icon:`vuesax-linear:truck-time`,title:`سفارش عمده`,subtitle:`مستقیم از تولیدکننده`},{icon:`vuesax-linear:element-3`,title:`تنوع بینظیر محصولات`,subtitle:`از کلاسیک تا مدرن`}];function E(){let e=typeof u.currentRoute.value.query.redirect==`string`?u.currentRoute.value.query.redirect:void 0;u.push({name:`login`,query:e?{redirect:e}:void 0})}return(s,u)=>(t(),i(`div`,g,[o(`img`,{class:`welcome-page__bg`,src:l(h),alt:``},null,8,_),u[7]||=o(`div`,{class:`welcome-page__veil`,"aria-hidden":`true`},null,-1),o(`div`,v,[o(`div`,y,[o(`header`,{class:`welcome-top`},[o(`button`,{type:`button`,class:`welcome-skip`,onClick:E},`رد شدن`)]),o(`div`,b,[r(p,{size:88}),u[0]||=o(`h1`,{class:`welcome-brand__fa`},`نادمی تکس`,-1),u[1]||=o(`p`,{class:`welcome-brand__tag`},`انتخاب حرفهای، شروع یک همکاری ماندگار`,-1),u[2]||=o(`span`,{class:`welcome-brand__rule`,"aria-hidden":`true`},null,-1)]),o(`ul`,x,[(t(),i(a,null,e(T,e=>o(`li`,{key:e.title,class:`welcome-feature`},[o(`span`,S,[e.icon===`star`?(t(),i(`svg`,C,[...u[3]||=[o(`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`,stroke:`#fff`,"stroke-width":`1.5`,"stroke-linejoin":`round`},null,-1)]])):(t(),c(d,{key:1,icon:e.icon,size:22,color:`#ffffff`},null,8,[`icon`]))]),o(`strong`,null,n(e.title),1),o(`span`,null,n(e.subtitle),1)])),64))]),u[5]||=o(`div`,{class:`welcome-spacer`,"aria-hidden":`true`},null,-1),u[6]||=o(`div`,{class:`welcome-dots`,"aria-hidden":`true`},[o(`i`,{class:`is-on`}),o(`i`),o(`i`),o(`i`)],-1),o(`button`,{type:`button`,class:`welcome-cta`,onClick:E},[u[4]||=o(`span`,null,`ورود / ثبتنام`,-1),o(`span`,w,[r(m,{size:18,color:`#ffffff`})])])])])]))}}),[[`__scopeId`,`data-v-443d4085`]]);export{T as default};
|
||||
@@ -0,0 +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{k as p}from"./index-C40q_iVH.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};
|
||||
@@ -0,0 +1 @@
|
||||
import{M as e,f as t,l as n,u as r,v as i}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as a}from"./BasicIcon-Bzeb0Iwd.js";import{E as o,S as s,_ as c}from"./index-C40q_iVH.js";import{n as l,t as u}from"./IconDiamond-Dn-fHb3u.js";import{t as d}from"./IconShoppingBag-BHoZiOex.js";var f=i({__name:`IconBolt`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(t){return(n,i)=>(e(),r(a,{icon:`vuesax-linear:flash`,size:t.size,"stroke-width":t.strokeWidth,color:t.color},null,8,[`size`,`stroke-width`,`color`]))}}),p=i({__name:`IconFeather`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(t){return(n,i)=>(e(),r(a,{icon:`vuesax-linear:pen-add`,size:t.size,"stroke-width":t.strokeWidth,color:t.color},null,8,[`size`,`stroke-width`,`color`]))}}),m=i({__name:`IconIdCard`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(t){return(n,i)=>(e(),r(a,{icon:`vuesax-linear:personalcard`,size:t.size,"stroke-width":t.strokeWidth,color:t.color},null,8,[`size`,`stroke-width`,`color`]))}}),h=[`width`,`height`],g=[`stroke`,`stroke-width`],_=[`stroke`,`stroke-width`],v=i({__name:`IconShirt`,props:{size:{default:24},color:{default:`currentColor`},strokeWidth:{default:1.5}},setup(r){return(i,a)=>(e(),t(`svg`,{width:r.size,height:r.size,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[n(`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:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,g),n(`path`,{d:`M12 7.75V18.5`,stroke:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`},null,8,_)],8,h))}}),y=[`width`,`height`],b=[`stroke`,`stroke-width`],x=[`stroke`,`stroke-width`],S=[`stroke`,`stroke-width`],C=[`stroke`,`stroke-width`],w=i({__name:`IconSuit`,props:{size:{default:24},color:{default:`currentColor`},strokeWidth:{default:1.5}},setup(r){return(i,a)=>(e(),t(`svg`,{width:r.size,height:r.size,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[n(`path`,{d:`M7.5 5.5h9l2 3v10.5a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1V8.5l2-3Z`,stroke:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,b),n(`path`,{d:`M12 5.5v13`,stroke:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`},null,8,x),n(`path`,{d:`M7.5 9 12 11.75 16.5 9`,stroke:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,S),n(`path`,{d:`M10.25 5.5V4a1.75 1.75 0 0 1 3.5 0v1.5`,stroke:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`},null,8,C)],8,y))}}),T=[`width`,`height`],E=[`stroke`,`stroke-width`],D=[`stroke`,`stroke-width`],O=[`stroke`,`stroke-width`],k={bolt:f,feather:p,diamond:u,grid:l,bag:d,"id-card":m,catalog:s,headset:c,home:o,shirt:v,suit:w,trousers:i({__name:`IconTrousers`,props:{size:{default:24},color:{default:`currentColor`},strokeWidth:{default:1.5}},setup(r){return(i,a)=>(e(),t(`svg`,{width:r.size,height:r.size,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[n(`path`,{d:`M8 4.5h8v4.25l-1.75 11H13l-1-9.5-1 9.5H7.75L6 8.75V4.5Z`,stroke:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,E),n(`path`,{d:`M12 8.75v11`,stroke:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`},null,8,D),n(`path`,{d:`M8 7.25h8`,stroke:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`},null,8,O)],8,T))}})},A={shirt:`shirt`,suit:`suit`,trousers:`trousers`};function j(e){return A[e.id]?A[e.id]:e.icon&&k[e.icon]?e.icon:e.icon??`grid`}function M(e,t=u){return e&&k[e]||t}export{j as n,M as t};
|
||||
@@ -1 +0,0 @@
|
||||
import{M as e,f as t,l as n,u as r,v as i}from"./_plugin-vue_export-helper-1xMDlcEE.js";import{t as a}from"./BasicIcon-Bzeb0Iwd.js";import{T as o,k as s,v as c}from"./index-WUDoJ6iF.js";import{t as l}from"./IconDiamond-bOGfMf7j.js";import{t as u}from"./IconLayoutGrid-CTmPrZXE.js";import{t as d}from"./IconShoppingBag-BHoZiOex.js";var f=i({__name:`IconBolt`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(t){return(n,i)=>(e(),r(a,{icon:`vuesax-linear:flash`,size:t.size,"stroke-width":t.strokeWidth,color:t.color},null,8,[`size`,`stroke-width`,`color`]))}}),p=i({__name:`IconFeather`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(t){return(n,i)=>(e(),r(a,{icon:`vuesax-linear:pen-add`,size:t.size,"stroke-width":t.strokeWidth,color:t.color},null,8,[`size`,`stroke-width`,`color`]))}}),m=i({__name:`IconIdCard`,props:{size:{default:24},strokeWidth:{default:1.5},color:{default:null}},setup(t){return(n,i)=>(e(),r(a,{icon:`vuesax-linear:personalcard`,size:t.size,"stroke-width":t.strokeWidth,color:t.color},null,8,[`size`,`stroke-width`,`color`]))}}),h=[`width`,`height`],g=[`stroke`,`stroke-width`],_=[`stroke`,`stroke-width`],v=i({__name:`IconShirt`,props:{size:{default:24},color:{default:`currentColor`},strokeWidth:{default:1.5}},setup(r){return(i,a)=>(e(),t(`svg`,{width:r.size,height:r.size,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[n(`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:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,g),n(`path`,{d:`M12 7.75V18.5`,stroke:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`},null,8,_)],8,h))}}),y=[`width`,`height`],b=[`stroke`,`stroke-width`],x=[`stroke`,`stroke-width`],S=[`stroke`,`stroke-width`],C=[`stroke`,`stroke-width`],w=i({__name:`IconSuit`,props:{size:{default:24},color:{default:`currentColor`},strokeWidth:{default:1.5}},setup(r){return(i,a)=>(e(),t(`svg`,{width:r.size,height:r.size,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[n(`path`,{d:`M7.5 5.5h9l2 3v10.5a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1V8.5l2-3Z`,stroke:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,b),n(`path`,{d:`M12 5.5v13`,stroke:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`},null,8,x),n(`path`,{d:`M7.5 9 12 11.75 16.5 9`,stroke:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,S),n(`path`,{d:`M10.25 5.5V4a1.75 1.75 0 0 1 3.5 0v1.5`,stroke:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`},null,8,C)],8,y))}}),T=[`width`,`height`],E=[`stroke`,`stroke-width`],D=[`stroke`,`stroke-width`],O=[`stroke`,`stroke-width`],k={bolt:f,feather:p,diamond:l,grid:u,bag:d,"id-card":m,catalog:o,headset:c,home:s,shirt:v,suit:w,trousers:i({__name:`IconTrousers`,props:{size:{default:24},color:{default:`currentColor`},strokeWidth:{default:1.5}},setup(r){return(i,a)=>(e(),t(`svg`,{width:r.size,height:r.size,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[n(`path`,{d:`M8 4.5h8v4.25l-1.75 11H13l-1-9.5-1 9.5H7.75L6 8.75V4.5Z`,stroke:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,8,E),n(`path`,{d:`M12 8.75v11`,stroke:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`},null,8,D),n(`path`,{d:`M8 7.25h8`,stroke:r.color,"stroke-width":r.strokeWidth,"stroke-linecap":`round`},null,8,O)],8,T))}})},A={shirt:`shirt`,suit:`suit`,trousers:`trousers`};function j(e){return A[e.id]?A[e.id]:e.icon&&k[e.icon]?e.icon:e.icon??`grid`}function M(e,t=l){return e&&k[e]||t}export{j as n,M as t};
|
||||
|
After Width: | Height: | Size: 463 KiB |
|
After Width: | Height: | Size: 382 KiB |
|
After Width: | Height: | Size: 454 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
@@ -1 +0,0 @@
|
||||
var e=`/assets/login-fabric-CSZOoxR9.jpg`;export{e as t};
|
||||
|
Before Width: | Height: | Size: 152 KiB |
@@ -0,0 +1 @@
|
||||
var e=`/assets/nademitex-auth-logo-OHeojn8M.png`;export{e as t};
|
||||
|
After Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 2.2 MiB |
@@ -1 +1 @@
|
||||
import{M as e}from"./index-WUDoJ6iF.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{k as e}from"./index-C40q_iVH.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{M as n,d as r,j as i}from"./index-WUDoJ6iF.js";import{n as a}from"./orderInvoice-B0L1Aeuk.js";function o(){let o=i(),s=n(),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{O as n,d as r,k as i}from"./index-C40q_iVH.js";import{n as a}from"./orderInvoice-B0L1Aeuk.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};
|
||||
@@ -11,7 +11,7 @@
|
||||
<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-WUDoJ6iF.js"></script>
|
||||
<script type="module" crossorigin src="/assets/index-C40q_iVH.js"></script>
|
||||
<link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-1xMDlcEE.js">
|
||||
<link rel="modulepreload" crossorigin href="/assets/BasicIcon-Bzeb0Iwd.js">
|
||||
<link rel="modulepreload" crossorigin href="/assets/pinia-BK9B9Wwf.js">
|
||||
|
||||
|
After Width: | Height: | Size: 258 KiB |
|
After Width: | Height: | Size: 463 KiB |
|
After Width: | Height: | Size: 382 KiB |
|
After Width: | Height: | Size: 454 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
@@ -0,0 +1,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none">
|
||||
<rect x="12" y="12" width="40" height="40" rx="2" stroke="#445066" stroke-width="2.4"/>
|
||||
<path d="M18 22c4 3 8-3 12 0s8-3 12 0" stroke="#445066" stroke-width="2.4" stroke-linecap="round"/>
|
||||
<path d="M18 30c4 3 8-3 12 0s8-3 12 0" stroke="#445066" stroke-width="2.4" stroke-linecap="round"/>
|
||||
<path d="M18 38c4 3 8-3 12 0s8-3 12 0" stroke="#445066" stroke-width="2.4" stroke-linecap="round"/>
|
||||
<path d="M18 46c4 3 8-3 12 0s8-3 12 0" stroke="#445066" stroke-width="2.4" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 577 B |
|
After Width: | Height: | Size: 2.6 KiB |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none">
|
||||
<path d="M6 54V30L16 36V28L26 34V22H34L42 12V22H54V54H6Z" stroke="#445066" stroke-width="2.4" stroke-linejoin="round"/>
|
||||
<path d="M48 22V10H54V22" stroke="#445066" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M54 12H60" stroke="#445066" stroke-width="2.4" stroke-linecap="round"/>
|
||||
<path d="M16 54V44M26 54V44M38 54V44" stroke="#445066" stroke-width="2.4" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 498 B |
|
After Width: | Height: | Size: 3.6 KiB |
@@ -0,0 +1,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none">
|
||||
<circle cx="32" cy="10" r="4.5" stroke="#445066" stroke-width="2.4"/>
|
||||
<path d="M32 14.5V20" stroke="#445066" stroke-width="2.4" stroke-linecap="round"/>
|
||||
<path d="M18 50L24 28h16l6 22" stroke="#445066" stroke-width="2.4" stroke-linejoin="round"/>
|
||||
<path d="M24 28c0-4 3.5-7 8-7s8 3 8 7" stroke="#445066" stroke-width="2.4"/>
|
||||
<path d="M32 50v6M22 58h20" stroke="#445066" stroke-width="2.4" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 501 B |
|
After Width: | Height: | Size: 75 KiB |
@@ -0,0 +1,81 @@
|
||||
<script setup lang="ts">
|
||||
import { useRouter } from 'vue-router'
|
||||
import IconChevronBack from '@/components/icons/IconChevronBack.vue'
|
||||
import logoUrl from '@/assets/images/nademitex-auth-logo.png'
|
||||
|
||||
defineProps<{
|
||||
backTo?: string
|
||||
}>()
|
||||
|
||||
const router = useRouter()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="auth-shell">
|
||||
<button
|
||||
v-if="backTo"
|
||||
type="button"
|
||||
class="auth-shell__back"
|
||||
aria-label="بازگشت"
|
||||
@click="router.push(backTo)"
|
||||
>
|
||||
<IconChevronBack :size="22" color="#1e293b" />
|
||||
</button>
|
||||
|
||||
<div class="auth-shell__body">
|
||||
<div class="auth-shell__brand">
|
||||
<img class="auth-shell__logo" :src="logoUrl" alt="Nademi Tex" draggable="false" />
|
||||
</div>
|
||||
<slot />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.auth-shell {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
min-height: 100%;
|
||||
overflow: auto;
|
||||
background: #f9f6f2;
|
||||
color: #1e293b;
|
||||
}
|
||||
|
||||
.auth-shell__back {
|
||||
position: absolute;
|
||||
z-index: 2;
|
||||
top: 14px;
|
||||
right: 12px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border: 0;
|
||||
background: transparent;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.auth-shell__body {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
padding: 48px 24px 32px;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.auth-shell__brand {
|
||||
margin-bottom: 14px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.auth-shell__logo {
|
||||
display: block;
|
||||
width: auto;
|
||||
height: 112px;
|
||||
margin: 0 auto;
|
||||
object-fit: contain;
|
||||
user-select: none;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,20 @@
|
||||
<script setup lang="ts">
|
||||
import waveUrl from '@/assets/images/auth-wave.png'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<img class="auth-wave" :src="waveUrl" alt="" draggable="false" />
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.auth-wave {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: min(70vw, 270px);
|
||||
height: auto;
|
||||
pointer-events: none;
|
||||
user-select: none;
|
||||
z-index: 0;
|
||||
}
|
||||
</style>
|
||||
@@ -11,7 +11,7 @@ export type PendingRegister = {
|
||||
export const JOB_CATEGORY_OPTIONS: Array<{ id: JobCategory; label: string }> = [
|
||||
{ id: 'garment_producer', label: 'تولیدکننده پوشاک عمده' },
|
||||
{ id: 'atelier', label: 'مزون' },
|
||||
{ id: 'fabric_wholesaler', label: 'عمدهفروش پارچه' },
|
||||
{ id: 'fabric_wholesaler', label: 'فروشنده عمده پارچه' },
|
||||
]
|
||||
|
||||
export function getPendingRegister(): PendingRegister | null {
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
<script setup lang="ts">
|
||||
import { computed, onMounted, ref } from 'vue'
|
||||
import { computed, ref } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useAuthStore } from '@/stores/auth'
|
||||
import AuthShell from '@/components/auth/AuthShell.vue'
|
||||
import FormErrorBanner from '@/components/ui/FormErrorBanner.vue'
|
||||
import IconChevronLeft from '@/components/icons/IconChevronLeft.vue'
|
||||
import IconHeadset from '@/components/icons/IconHeadset.vue'
|
||||
import IconPhone from '@/components/icons/IconPhone.vue'
|
||||
import IconQemashMark from '@/components/icons/IconQemashMark.vue'
|
||||
import { getPublicContact, telHref } from '@/services/settings'
|
||||
import { normalizePhone, toPersianDigits } from '@/utils/format'
|
||||
import { validatePhone } from '@/utils/validation'
|
||||
import {
|
||||
@@ -16,15 +13,10 @@ import {
|
||||
hasFieldErrors,
|
||||
type FieldErrors,
|
||||
} from '@/utils/formErrors'
|
||||
import fabricUrl from '@/assets/images/login-fabric.jpg'
|
||||
import fabricUrl2 from '@/assets/images/login-fabric2.png'
|
||||
|
||||
const router = useRouter()
|
||||
const auth = useAuthStore()
|
||||
|
||||
const supportPhone = ref<string | null>(null)
|
||||
const supportHref = computed(() => telHref(supportPhone.value))
|
||||
|
||||
const phone = ref('')
|
||||
const fieldErrors = ref<FieldErrors>({})
|
||||
const formError = ref('')
|
||||
@@ -76,66 +68,23 @@ async function submit() {
|
||||
formError.value = result.message ?? 'خطا در ارسال کد تأیید.'
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(async () => {
|
||||
try {
|
||||
const contact = await getPublicContact()
|
||||
supportPhone.value = contact.supportPhone
|
||||
} catch {
|
||||
supportPhone.value = null
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="page login-page">
|
||||
<img class="login-page__bg" :src="fabricUrl" alt="" />
|
||||
<!-- <img class="login-page__fabric" :src="fabricUrl2" alt="" />-->
|
||||
|
||||
<div class="login-page__scroll">
|
||||
<div class="login-page__stage">
|
||||
<header class="login-top">
|
||||
<p class="login-top__welcome">به دنیای پارچه خوش آمدید</p>
|
||||
</header>
|
||||
|
||||
<div class="login-brand">
|
||||
<IconQemashMark :size="78" />
|
||||
<h1 class="login-brand__fa">نادمی تکس</h1>
|
||||
<p class="login-brand__en">NADEMITEX</p>
|
||||
<p class="login-brand__tag">انتخاب حرفهایها</p>
|
||||
</div>
|
||||
|
||||
<form class="login-card" @submit.prevent="submit">
|
||||
<h2 class="login-card__title">ورود به حساب کاربری</h2>
|
||||
<p class="login-card__lead">برای ادامه، شماره موبایل خود را وارد کنید.</p>
|
||||
<AuthShell back-to="/welcome">
|
||||
<h1 class="auth-title">به نادمی تکس خوش آمدید</h1>
|
||||
<p class="auth-lead">برای ادامه، وارد حساب کاربری خود شوید</p>
|
||||
|
||||
<form class="auth-form" @submit.prevent="submit">
|
||||
<FormErrorBanner :message="formError" />
|
||||
|
||||
<div class="phone-field" dir="ltr" :class="{ 'is-invalid': Boolean(fieldErrors.phone) }">
|
||||
<span class="phone-field__locale" aria-hidden="true">
|
||||
<svg class="iran-flag" viewBox="0 0 21 15" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="21" height="5" fill="#239F40" />
|
||||
<rect y="5" width="21" height="5" fill="#fff" />
|
||||
<rect y="10" width="21" height="5" fill="#DA0001" />
|
||||
<circle cx="10.5" cy="7.5" r="1.35" fill="#DA0001" />
|
||||
</svg>
|
||||
<svg class="phone-field__caret" viewBox="0 0 10 6" fill="none">
|
||||
<path
|
||||
d="M1 1.2 5 5l4-3.8"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.3"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
<label class="auth-field" :class="{ 'is-invalid': Boolean(fieldErrors.phone) }">
|
||||
<IconPhone :size="18" color="#64748b" />
|
||||
<input
|
||||
class="phone-field__input"
|
||||
:value="displayPhone"
|
||||
type="tel"
|
||||
inputmode="numeric"
|
||||
autocomplete="tel"
|
||||
dir="rtl"
|
||||
maxlength="11"
|
||||
placeholder="شماره موبایل"
|
||||
:aria-invalid="Boolean(fieldErrors.phone)"
|
||||
@@ -143,433 +92,94 @@ onMounted(async () => {
|
||||
@input="onPhoneInput(($event.target as HTMLInputElement).value)"
|
||||
@blur="onPhoneBlur"
|
||||
/>
|
||||
</div>
|
||||
<p v-if="fieldErrors.phone" class="phone-field__error">{{ fieldErrors.phone }}</p>
|
||||
</label>
|
||||
<p v-if="fieldErrors.phone" class="auth-error">{{ fieldErrors.phone }}</p>
|
||||
|
||||
<button class="login-submit" type="submit" :disabled="auth.loading">
|
||||
<span v-if="auth.loading" class="login-submit__spinner" aria-hidden="true" />
|
||||
<span class="login-submit__chevron" aria-hidden="true">
|
||||
<IconChevronLeft :size="18" color="#F4EDE4" />
|
||||
</span>
|
||||
<span>دریافت کد تأیید</span>
|
||||
<button class="auth-submit" type="submit" :disabled="auth.loading">
|
||||
{{ auth.loading ? 'در حال ارسال…' : 'ورود' }}
|
||||
</button>
|
||||
|
||||
<p class="login-register">
|
||||
حساب کاربری ندارید؟
|
||||
<RouterLink to="/register">ثبتنام کنید</RouterLink>
|
||||
</p>
|
||||
<p class="auth-or"><span>یا</span></p>
|
||||
|
||||
<div class="login-or" role="separator">
|
||||
<span>یا</span>
|
||||
</div>
|
||||
|
||||
<div class="login-help">
|
||||
<a
|
||||
class="login-help__item"
|
||||
:href="supportHref"
|
||||
:class="{ 'is-disabled': !supportHref }"
|
||||
:aria-disabled="!supportHref"
|
||||
>
|
||||
<span class="login-help__icon">
|
||||
<IconHeadset :size="22" color="#3A3936" />
|
||||
</span>
|
||||
پشتیبانی
|
||||
</a>
|
||||
<a
|
||||
class="login-help__item"
|
||||
:href="supportHref"
|
||||
:class="{ 'is-disabled': !supportHref }"
|
||||
:aria-disabled="!supportHref"
|
||||
>
|
||||
<span class="login-help__icon">
|
||||
<IconPhone :size="22" color="#3A3936" />
|
||||
</span>
|
||||
تماس با ما
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<p class="login-card__foot">پارچه، آغاز یک اعتماد ماندگار…</p>
|
||||
<RouterLink class="auth-outline" to="/register">ثبتنام در نادمی تکس</RouterLink>
|
||||
</form>
|
||||
|
||||
<div class="login-spacer" aria-hidden="true" />
|
||||
<p class="login-watermark">MORE<br />THAN<br />FABRIC</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</AuthShell>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.login-page {
|
||||
position: relative;
|
||||
isolation: isolate;
|
||||
height: 100%;
|
||||
min-height: 100%;
|
||||
color: #f4ede4;
|
||||
background: #1a1612;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.login-page__bg {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
z-index: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
object-position: center center;
|
||||
pointer-events: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
/* پارچه پایین صفحه — پشت باکس لاگین، نه روی آن */
|
||||
.login-page__fabric {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 3;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
object-position: center bottom;
|
||||
pointer-events: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.login-page__scroll {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
height: 100%;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
overscroll-behavior: contain;
|
||||
}
|
||||
|
||||
.login-page__stage {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100%;
|
||||
width: 100%;
|
||||
max-width: 360px;
|
||||
margin-inline: auto;
|
||||
padding: calc(10px + env(safe-area-inset-top, 0px)) 16px
|
||||
calc(14px + env(safe-area-inset-bottom, 0px));
|
||||
}
|
||||
|
||||
.login-top {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
min-height: 36px;
|
||||
}
|
||||
|
||||
.login-top__welcome {
|
||||
color: #f3e6d6;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.login-brand {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
.auth-title {
|
||||
margin: 0 0 8px;
|
||||
text-align: center;
|
||||
margin-top: 28px;
|
||||
margin-bottom: 20px;
|
||||
color: #f3e6d6;
|
||||
font-size: 22px;
|
||||
font-weight: 800;
|
||||
color: #1e293b;
|
||||
}
|
||||
|
||||
.login-brand__fa {
|
||||
margin: 14px 0 0;
|
||||
font-size: 1.75rem;
|
||||
font-weight: 700;
|
||||
line-height: 1.25;
|
||||
letter-spacing: -0.02em;
|
||||
}
|
||||
|
||||
.login-brand__en {
|
||||
margin: 6px 0 0;
|
||||
font-size: 0.6875rem;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.28em;
|
||||
color: #ead7c0;
|
||||
}
|
||||
|
||||
.login-brand__tag {
|
||||
margin: 10px 0 0;
|
||||
font-size: 0.875rem;
|
||||
font-weight: 400;
|
||||
color: #efe2d2;
|
||||
}
|
||||
|
||||
.login-card {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 22px 18px 16px;
|
||||
border: none;
|
||||
border-radius: 28px;
|
||||
background: #ebe4dc;
|
||||
box-shadow: 0 18px 40px rgba(12, 10, 8, 0.22);
|
||||
color: #2a2622;
|
||||
}
|
||||
|
||||
.login-card__title {
|
||||
margin: 0;
|
||||
.auth-lead {
|
||||
margin: 0 0 22px;
|
||||
text-align: center;
|
||||
font-size: 1.0625rem;
|
||||
font-weight: 700;
|
||||
line-height: 1.5;
|
||||
color: #1c1b19;
|
||||
}
|
||||
|
||||
.login-card__lead {
|
||||
margin: 6px 0 0;
|
||||
text-align: center;
|
||||
font-size: 0.75rem;
|
||||
color: #667085;
|
||||
font-size: 13px;
|
||||
line-height: 1.7;
|
||||
color: #8a847c;
|
||||
}
|
||||
|
||||
.login-card :deep(.form-error-banner) {
|
||||
margin-top: 14px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.phone-field {
|
||||
.auth-form { display: flex; flex-direction: column; gap: 12px; }
|
||||
.auth-field {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
height: 48px;
|
||||
margin-top: 18px;
|
||||
padding: 0 8px 0 14px;
|
||||
border: 1px solid #e4e0db;
|
||||
height: 52px;
|
||||
padding: 0 14px;
|
||||
border: 1px solid #eaecf0;
|
||||
border-radius: 14px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.phone-field.is-invalid {
|
||||
border-color: color-mix(in srgb, var(--color-danger) 55%, #e4e0db);
|
||||
}
|
||||
|
||||
.phone-field__locale {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
color: #9a9590;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.iran-flag {
|
||||
width: 22px;
|
||||
height: 16px;
|
||||
border-radius: 2px;
|
||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.06);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.phone-field__caret {
|
||||
width: 10px;
|
||||
height: 6px;
|
||||
}
|
||||
|
||||
.phone-field__input {
|
||||
.auth-field.is-invalid { border-color: #b42318; }
|
||||
.auth-field input {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
height: 100%;
|
||||
border: none;
|
||||
border: 0;
|
||||
background: transparent;
|
||||
color: #2a2622;
|
||||
font-family: inherit;
|
||||
font-size: 0.9375rem;
|
||||
letter-spacing: 0.04em;
|
||||
text-align: start;
|
||||
font: inherit;
|
||||
font-size: 14px;
|
||||
text-align: right;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.phone-field__input::placeholder {
|
||||
color: #b0aaa3;
|
||||
}
|
||||
|
||||
.phone-field__error {
|
||||
margin: 8px 4px 0;
|
||||
color: var(--color-danger);
|
||||
font-size: 0.75rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.login-submit {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
height: 48px;
|
||||
margin-top: 12px;
|
||||
padding: 0 44px;
|
||||
border: none;
|
||||
border-radius: 999px;
|
||||
background: var(--color-primary);
|
||||
color: var(--color-surface);
|
||||
font-family: inherit;
|
||||
font-size: 0.9375rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: background 0.15s ease;
|
||||
}
|
||||
|
||||
.login-submit:not(:disabled):hover,
|
||||
.login-submit:not(:disabled):focus-visible {
|
||||
background: var(--color-primary-hover);
|
||||
}
|
||||
|
||||
.login-submit:focus-visible {
|
||||
outline: 2px solid var(--color-primary);
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
.login-submit:disabled {
|
||||
opacity: 0.7;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.login-submit__chevron {
|
||||
position: absolute;
|
||||
inset-inline-end: 16px;
|
||||
.auth-field input::placeholder { color: #98a2b3; }
|
||||
.auth-error { margin: 0; color: #b42318; font-size: 12px; }
|
||||
.auth-submit,
|
||||
.auth-outline {
|
||||
display: grid;
|
||||
place-items: center;
|
||||
}
|
||||
|
||||
.login-submit__spinner {
|
||||
position: absolute;
|
||||
inset-inline-start: 16px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border: 2px solid rgba(255, 255, 255, 0.28);
|
||||
border-top-color: #fff;
|
||||
border-radius: 50%;
|
||||
animation: login-spin 0.6s linear infinite;
|
||||
}
|
||||
|
||||
.login-register {
|
||||
margin: 12px 0 0;
|
||||
text-align: center;
|
||||
font-size: 0.8125rem;
|
||||
line-height: 1.6;
|
||||
color: #8a847c;
|
||||
}
|
||||
|
||||
.login-register a {
|
||||
height: 52px;
|
||||
border-radius: 14px;
|
||||
font: inherit;
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
color: var(--color-primary);
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.login-or {
|
||||
.auth-submit {
|
||||
border: 0;
|
||||
background: #1e293b;
|
||||
color: #fff;
|
||||
}
|
||||
.auth-submit:disabled { opacity: 0.7; }
|
||||
.auth-outline {
|
||||
border: 1.5px solid #1e293b;
|
||||
color: #1e293b;
|
||||
background: transparent;
|
||||
}
|
||||
.auth-or {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
margin: 16px 4px 14px;
|
||||
color: #9a9590;
|
||||
font-size: 0.75rem;
|
||||
margin: 4px 0;
|
||||
color: #98a2b3;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.login-or::before,
|
||||
.login-or::after {
|
||||
content: '';
|
||||
.auth-or::before,
|
||||
.auth-or::after {
|
||||
content: "";
|
||||
flex: 1;
|
||||
height: 1px;
|
||||
background: #e6e1db;
|
||||
}
|
||||
|
||||
.login-help {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 48px;
|
||||
}
|
||||
|
||||
.login-help__item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
color: #6f6b66;
|
||||
font-size: 0.75rem;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.login-help__item.is-disabled {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.login-help__icon {
|
||||
width: 52px;
|
||||
height: 52px;
|
||||
border: 1px solid #d8d3cd;
|
||||
border-radius: 50%;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.login-card__foot {
|
||||
margin: 18px 0 2px;
|
||||
text-align: center;
|
||||
font-size: 0.75rem;
|
||||
line-height: 1.7;
|
||||
color: #8a847c;
|
||||
}
|
||||
|
||||
.login-spacer {
|
||||
flex: 1 1 auto;
|
||||
min-height: 16px;
|
||||
}
|
||||
|
||||
.login-watermark {
|
||||
margin: 0;
|
||||
padding-bottom: 8px;
|
||||
color: rgba(244, 237, 228, 0.58);
|
||||
font-size: 0.625rem;
|
||||
font-weight: 600;
|
||||
letter-spacing: 0.2em;
|
||||
line-height: 1.35;
|
||||
text-align: left;
|
||||
direction: ltr;
|
||||
}
|
||||
|
||||
@keyframes login-spin {
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 359px) {
|
||||
.login-page__stage {
|
||||
padding-inline: 12px;
|
||||
}
|
||||
|
||||
.login-brand {
|
||||
margin-top: 16px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.login-brand__fa {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.login-help {
|
||||
gap: 36px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.login-page {
|
||||
padding: 0;
|
||||
max-width: none;
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
min-height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
background: #eaecf0;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -3,11 +3,8 @@ import { ref, computed, onMounted, nextTick } from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { useIntervalFn } from '@vueuse/core'
|
||||
import { useAuthStore } from '@/stores/auth'
|
||||
import AuthShell from '@/components/auth/AuthShell.vue'
|
||||
import FormErrorBanner from '@/components/ui/FormErrorBanner.vue'
|
||||
import IconEditPen from '@/components/icons/IconEditPen.vue'
|
||||
import IconChevronBack from '@/components/icons/IconChevronBack.vue'
|
||||
import IconChevronLeft from '@/components/icons/IconChevronLeft.vue'
|
||||
import IconQemashMark from '@/components/icons/IconQemashMark.vue'
|
||||
import { toPersianDigits, extractNumericString, normalizePhone } from '@/utils/format'
|
||||
import {
|
||||
FORM_VALIDATION_SUMMARY,
|
||||
@@ -16,7 +13,6 @@ import {
|
||||
type FieldErrors,
|
||||
} from '@/utils/formErrors'
|
||||
import { getPendingRegister } from '@/utils/pendingRegister'
|
||||
import fabricUrl from '@/assets/images/login-fabric.jpg'
|
||||
|
||||
const OTP_LENGTH = 4
|
||||
const RESEND_SECONDS = 60
|
||||
@@ -39,12 +35,7 @@ const secondsLeft = ref(RESEND_SECONDS)
|
||||
|
||||
const code = computed(() => digits.value.join(''))
|
||||
const canResend = computed(() => secondsLeft.value <= 0 && !auth.loading)
|
||||
const timerLabel = computed(() => {
|
||||
const minutes = Math.floor(secondsLeft.value / 60)
|
||||
const seconds = secondsLeft.value % 60
|
||||
const formatted = `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`
|
||||
return toPersianDigits(formatted)
|
||||
})
|
||||
const timerLabel = computed(() => toPersianDigits(String(secondsLeft.value)))
|
||||
|
||||
const { pause, resume } = useIntervalFn(
|
||||
() => {
|
||||
@@ -232,51 +223,25 @@ onMounted(() => {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="page otp-page">
|
||||
<img class="otp-page__bg" :src="fabricUrl" alt="" />
|
||||
|
||||
<div class="otp-page__scroll">
|
||||
<div class="otp-page__stage">
|
||||
<header class="otp-top">
|
||||
<button
|
||||
type="button"
|
||||
class="otp-top__back"
|
||||
aria-label="بازگشت"
|
||||
@click="router.push(isRegister ? '/register' : '/login')"
|
||||
>
|
||||
<IconChevronBack :size="20" />
|
||||
</button>
|
||||
</header>
|
||||
|
||||
<div class="otp-brand">
|
||||
<IconQemashMark :size="72" />
|
||||
<h1 class="otp-brand__fa">نادمی تکس</h1>
|
||||
<p class="otp-brand__en">NADEMITEX</p>
|
||||
</div>
|
||||
|
||||
<form class="otp-card" @submit.prevent="submit">
|
||||
<h2 class="otp-card__title">تأیید موبایل</h2>
|
||||
<p class="otp-card__lead">
|
||||
<AuthShell :back-to="isRegister ? '/register' : '/login'">
|
||||
<h1 class="auth-title">کد تأیید</h1>
|
||||
<p class="auth-lead">
|
||||
کد ارسالشده به
|
||||
<span dir="ltr">{{ toPersianDigits(phone) }}</span>
|
||||
را وارد کنید.
|
||||
را وارد کنید
|
||||
</p>
|
||||
|
||||
<form class="auth-form" @submit.prevent="submit">
|
||||
<FormErrorBanner :message="formError" />
|
||||
|
||||
<div
|
||||
class="otp-row"
|
||||
dir="ltr"
|
||||
role="group"
|
||||
aria-label="کد تأیید"
|
||||
>
|
||||
<div class="otp-row" dir="ltr" role="group" aria-label="کد تأیید">
|
||||
<input
|
||||
v-for="(digit, index) in digits"
|
||||
:id="`otp-${index}`"
|
||||
:key="index"
|
||||
:ref="(el) => setInputRef(el, index)"
|
||||
class="otp-box"
|
||||
:class="{ 'otp-box--error': fieldErrors.code }"
|
||||
:class="{ 'is-invalid': fieldErrors.code }"
|
||||
type="text"
|
||||
inputmode="numeric"
|
||||
autocomplete="one-time-code"
|
||||
@@ -288,312 +253,40 @@ onMounted(() => {
|
||||
@paste="onDigitPaste(index, $event)"
|
||||
/>
|
||||
</div>
|
||||
<p v-if="fieldErrors.code" class="otp-card__error">{{ fieldErrors.code }}</p>
|
||||
<p v-if="fieldErrors.code" class="auth-error">{{ fieldErrors.code }}</p>
|
||||
|
||||
<button class="otp-submit" type="submit" :disabled="auth.loading">
|
||||
<span v-if="auth.loading" class="otp-submit__spinner" aria-hidden="true" />
|
||||
<span class="otp-submit__chevron" aria-hidden="true">
|
||||
<IconChevronLeft :size="18" color="#F4EDE4" />
|
||||
</span>
|
||||
<span>تأیید و ورود</span>
|
||||
</button>
|
||||
|
||||
<button
|
||||
class="otp-resend"
|
||||
type="button"
|
||||
:disabled="!canResend"
|
||||
@click="resend"
|
||||
>
|
||||
<button class="otp-resend" type="button" :disabled="!canResend" @click="resend">
|
||||
<template v-if="canResend">ارسال مجدد کد</template>
|
||||
<template v-else>ارسال مجدد کد ({{ timerLabel }})</template>
|
||||
<template v-else>ارسال مجدد کد ({{ timerLabel }} ثانیه)</template>
|
||||
</button>
|
||||
|
||||
<button type="button" class="otp-edit" @click="changePhone">
|
||||
<span dir="ltr">{{ toPersianDigits(phone) }}</span>
|
||||
<span>ویرایش شماره</span>
|
||||
<IconEditPen :size="16" :stroke-width="1.5" />
|
||||
<button class="auth-submit" type="submit" :disabled="auth.loading">
|
||||
{{ auth.loading ? 'در حال بررسی…' : 'تأیید' }}
|
||||
</button>
|
||||
|
||||
<button type="button" class="otp-edit" @click="changePhone">ویرایش شماره</button>
|
||||
</form>
|
||||
|
||||
<div class="otp-spacer" aria-hidden="true" />
|
||||
<p class="otp-watermark">MORE<br />THAN<br />FABRIC</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</AuthShell>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.otp-page {
|
||||
position: relative;
|
||||
isolation: isolate;
|
||||
height: 100%;
|
||||
min-height: 100%;
|
||||
color: #f4ede4;
|
||||
background: #1a1612;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.otp-page__bg {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
z-index: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
object-position: center center;
|
||||
pointer-events: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.otp-page__scroll {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
height: 100%;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
overscroll-behavior: contain;
|
||||
}
|
||||
|
||||
.otp-page__stage {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100%;
|
||||
width: 100%;
|
||||
max-width: 390px;
|
||||
margin-inline: auto;
|
||||
padding: calc(10px + env(safe-area-inset-top, 0px)) 16px
|
||||
calc(14px + env(safe-area-inset-bottom, 0px));
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.otp-top {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
min-height: 36px;
|
||||
}
|
||||
|
||||
.otp-top__back {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border: none;
|
||||
border-radius: 999px;
|
||||
background: rgba(244, 237, 228, 0.14);
|
||||
color: #f3e6d6;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.otp-brand {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
margin-top: 18px;
|
||||
margin-bottom: 18px;
|
||||
color: #f3e6d6;
|
||||
}
|
||||
|
||||
.otp-brand__fa {
|
||||
margin: 12px 0 0;
|
||||
font-size: 1.625rem;
|
||||
font-weight: 700;
|
||||
line-height: 1.25;
|
||||
}
|
||||
|
||||
.otp-brand__en {
|
||||
margin: 6px 0 0;
|
||||
font-size: 0.6875rem;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.28em;
|
||||
color: #ead7c0;
|
||||
}
|
||||
|
||||
.otp-card {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 22px 18px 18px;
|
||||
border: none;
|
||||
border-radius: 28px;
|
||||
background: #f4f1ed;
|
||||
box-shadow: 0 18px 40px rgba(12, 10, 8, 0.22);
|
||||
color: #2a2622;
|
||||
}
|
||||
|
||||
.otp-card__title {
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
font-size: 1.0625rem;
|
||||
font-weight: 700;
|
||||
line-height: 1.5;
|
||||
color: #1c1b19;
|
||||
}
|
||||
|
||||
.otp-card__lead {
|
||||
margin: 6px 0 0;
|
||||
text-align: center;
|
||||
font-size: 0.75rem;
|
||||
line-height: 1.7;
|
||||
color: #8a847c;
|
||||
}
|
||||
|
||||
.otp-card :deep(.form-error-banner) {
|
||||
margin-top: 14px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.otp-row {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 10px;
|
||||
margin-top: 18px;
|
||||
}
|
||||
|
||||
.auth-title { margin: 0 0 8px; text-align: center; font-size: 24px; font-weight: 800; color: #1e293b; }
|
||||
.auth-lead { margin: 0 0 22px; text-align: center; color: #667085; font-size: 13px; line-height: 1.8; }
|
||||
.auth-form { display: flex; flex-direction: column; gap: 14px; align-items: stretch; }
|
||||
.otp-row { display: flex; justify-content: center; gap: 10px; direction: ltr; }
|
||||
.otp-box {
|
||||
width: 52px;
|
||||
height: 56px;
|
||||
padding: 0;
|
||||
border: 1px solid #e4e0db;
|
||||
border-radius: 16px;
|
||||
color: #1c1b19;
|
||||
font-family: inherit;
|
||||
font-size: 1.25rem;
|
||||
font-weight: 700;
|
||||
text-align: center;
|
||||
caret-color: var(--color-primary);
|
||||
transition: border-color 0.15s;
|
||||
width: 56px; height: 56px; border: 1px solid #eaecf0; border-radius: 14px;
|
||||
background: #fff; text-align: center; font: inherit; font-size: 22px; font-weight: 700; color: #1e293b;
|
||||
}
|
||||
|
||||
.otp-box:focus {
|
||||
outline: none;
|
||||
border-color: var(--color-primary);
|
||||
.otp-box.is-invalid { border-color: #b42318; }
|
||||
.auth-error { margin: 0; text-align: center; color: #b42318; font-size: 12px; }
|
||||
.otp-resend, .otp-edit {
|
||||
border: 0; background: transparent; color: #667085; font: inherit; font-size: 13px; cursor: pointer;
|
||||
}
|
||||
|
||||
.otp-box--error {
|
||||
border-color: color-mix(in srgb, var(--color-danger) 55%, #e4e0db);
|
||||
}
|
||||
|
||||
.otp-card__error {
|
||||
margin: 8px 4px 0;
|
||||
color: var(--color-danger);
|
||||
font-size: 0.75rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.otp-submit {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
height: 48px;
|
||||
margin-top: 16px;
|
||||
padding: 0 44px;
|
||||
border: none;
|
||||
border-radius: 999px;
|
||||
background: var(--color-primary);
|
||||
color: var(--color-surface);
|
||||
font-family: inherit;
|
||||
font-size: 0.9375rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: background 0.15s ease;
|
||||
}
|
||||
|
||||
.otp-submit:not(:disabled):hover,
|
||||
.otp-submit:not(:disabled):focus-visible {
|
||||
background: var(--color-primary-hover);
|
||||
}
|
||||
|
||||
.otp-submit:disabled {
|
||||
opacity: 0.7;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.otp-submit__chevron {
|
||||
position: absolute;
|
||||
inset-inline-end: 16px;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
}
|
||||
|
||||
.otp-submit__spinner {
|
||||
position: absolute;
|
||||
inset-inline-start: 16px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border: 2px solid rgba(255, 255, 255, 0.28);
|
||||
border-top-color: #fff;
|
||||
border-radius: 50%;
|
||||
animation: otp-spin 0.6s linear infinite;
|
||||
}
|
||||
|
||||
.otp-resend {
|
||||
width: 100%;
|
||||
height: 48px;
|
||||
margin-top: 10px;
|
||||
border: 1px solid #d8d3cd;
|
||||
border-radius: 999px;
|
||||
background: transparent;
|
||||
color: #6f6b66;
|
||||
font-family: inherit;
|
||||
font-size: 0.875rem;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.otp-resend:disabled {
|
||||
opacity: 0.7;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.otp-edit {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 6px;
|
||||
width: 100%;
|
||||
margin-top: 14px;
|
||||
border: none;
|
||||
background: transparent;
|
||||
color: #8a847c;
|
||||
font-family: inherit;
|
||||
font-size: 0.8125rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.otp-spacer {
|
||||
flex: 1 1 auto;
|
||||
min-height: 16px;
|
||||
}
|
||||
|
||||
.otp-watermark {
|
||||
margin: 0;
|
||||
padding-bottom: 8px;
|
||||
color: rgba(244, 237, 228, 0.58);
|
||||
font-size: 0.625rem;
|
||||
font-weight: 600;
|
||||
letter-spacing: 0.2em;
|
||||
line-height: 1.35;
|
||||
text-align: left;
|
||||
direction: ltr;
|
||||
}
|
||||
|
||||
@keyframes otp-spin {
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.otp-page {
|
||||
padding: 0;
|
||||
max-width: none;
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
min-height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
.otp-resend:disabled { cursor: default; }
|
||||
.auth-submit {
|
||||
height: 52px; border: 0; border-radius: 14px; background: #1e293b; color: #fff;
|
||||
font: inherit; font-size: 16px; font-weight: 700; cursor: pointer;
|
||||
}
|
||||
.auth-submit:disabled { opacity: 0.7; }
|
||||
</style>
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
<script setup lang="ts">
|
||||
import { computed, ref } from 'vue'
|
||||
import { onClickOutside } from '@vueuse/core'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useAuthStore } from '@/stores/auth'
|
||||
import BasicIcon from '@/components/BasicPacks/BasicIcon.vue'
|
||||
import AuthShell from '@/components/auth/AuthShell.vue'
|
||||
import FormErrorBanner from '@/components/ui/FormErrorBanner.vue'
|
||||
import IconChevronLeft from '@/components/icons/IconChevronLeft.vue'
|
||||
import IconDiamond from '@/components/icons/IconDiamond.vue'
|
||||
import IconPhone from '@/components/icons/IconPhone.vue'
|
||||
import IconProfile from '@/components/icons/IconProfile.vue'
|
||||
import IconVerified from '@/components/icons/IconVerified.vue'
|
||||
import { normalizePhone, toPersianDigits } from '@/utils/format'
|
||||
import { validatePhone } from '@/utils/validation'
|
||||
import {
|
||||
@@ -23,7 +19,15 @@ import {
|
||||
setPendingRegister,
|
||||
type JobCategory,
|
||||
} from '@/utils/pendingRegister'
|
||||
import cardUrl from '@/assets/images/register-card.jpg'
|
||||
import jobIconFactory from '@/assets/images/job-icon-factory.png'
|
||||
import jobIconMannequin from '@/assets/images/job-icon-mannequin.png'
|
||||
import jobIconFabric from '@/assets/images/job-icon-fabric.png'
|
||||
|
||||
const JOB_ICONS: Record<JobCategory, string> = {
|
||||
garment_producer: jobIconFactory,
|
||||
atelier: jobIconMannequin,
|
||||
fabric_wholesaler: jobIconFabric,
|
||||
}
|
||||
|
||||
const router = useRouter()
|
||||
const auth = useAuthStore()
|
||||
@@ -31,25 +35,15 @@ const auth = useAuthStore()
|
||||
const firstName = ref('')
|
||||
const lastName = ref('')
|
||||
const phone = ref('')
|
||||
const jobCategory = ref<JobCategory | ''>('')
|
||||
const jobCategory = ref<JobCategory | ''>('garment_producer')
|
||||
const acceptedTerms = ref(true)
|
||||
const jobOpen = ref(false)
|
||||
const jobRoot = ref<HTMLElement | null>(null)
|
||||
const fieldErrors = ref<FieldErrors>({})
|
||||
const formError = ref('')
|
||||
|
||||
const displayPhone = computed(() => (phone.value ? toPersianDigits(phone.value) : ''))
|
||||
const selectedJobLabel = computed(
|
||||
() => JOB_CATEGORY_OPTIONS.find((opt) => opt.id === jobCategory.value)?.label ?? 'دستهبندی شغلی',
|
||||
)
|
||||
|
||||
onClickOutside(jobRoot, () => {
|
||||
jobOpen.value = false
|
||||
})
|
||||
|
||||
function selectJob(id: JobCategory) {
|
||||
jobCategory.value = id
|
||||
jobOpen.value = false
|
||||
clearField('jobCategory')
|
||||
}
|
||||
|
||||
@@ -70,21 +64,11 @@ async function submit() {
|
||||
const normalized = normalizePhone(phone.value)
|
||||
const errors: FieldErrors = {}
|
||||
|
||||
if (!firstName.value.trim()) {
|
||||
errors.firstName = 'نام الزامی است.'
|
||||
}
|
||||
if (!lastName.value.trim()) {
|
||||
errors.lastName = 'نام خانوادگی الزامی است.'
|
||||
}
|
||||
if (!validatePhone(normalized)) {
|
||||
errors.phone = 'شماره موبایل معتبر نیست.'
|
||||
}
|
||||
if (!jobCategory.value) {
|
||||
errors.jobCategory = 'دستهبندی شغلی الزامی است.'
|
||||
}
|
||||
if (!acceptedTerms.value) {
|
||||
errors.terms = 'پذیرش قوانین برای ثبتنام لازم است.'
|
||||
}
|
||||
if (!firstName.value.trim()) errors.firstName = 'نام الزامی است.'
|
||||
if (!lastName.value.trim()) errors.lastName = 'نام خانوادگی الزامی است.'
|
||||
if (!validatePhone(normalized)) errors.phone = 'شماره موبایل معتبر نیست.'
|
||||
if (!jobCategory.value) errors.jobCategory = 'دسته شغلی را انتخاب کنید.'
|
||||
if (!acceptedTerms.value) errors.terms = 'پذیرش قوانین برای ثبتنام لازم است.'
|
||||
|
||||
if (hasFieldErrors(errors)) {
|
||||
fieldErrors.value = errors
|
||||
@@ -113,607 +97,232 @@ async function submit() {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="page register-page">
|
||||
<div class="register-page__scroll">
|
||||
<div class="register-page__stage">
|
||||
<header class="register-top">
|
||||
<p class="register-top__welcome">همراه ما باشید</p>
|
||||
<button
|
||||
type="button"
|
||||
class="register-top__back"
|
||||
aria-label="بازگشت"
|
||||
@click="router.push('/login')"
|
||||
>
|
||||
<IconChevronLeft :size="20" color="#2A2622" />
|
||||
</button>
|
||||
</header>
|
||||
<AuthShell back-to="/login">
|
||||
<h1 class="auth-title">ثبتنام</h1>
|
||||
<p class="auth-lead">برای ساخت حساب کاربری، اطلاعات زیر را وارد کنید</p>
|
||||
|
||||
<h1 class="register-title">ثبتنام در نادمی تکس</h1>
|
||||
<p class="register-lead">با چند مرحله ساده، عضوی از خانواده ما شوید.</p>
|
||||
|
||||
<form class="register-form" @submit.prevent="submit">
|
||||
<form class="auth-form" @submit.prevent="submit">
|
||||
<FormErrorBanner :message="formError" />
|
||||
|
||||
<label class="reg-field" :class="{ 'is-invalid': Boolean(fieldErrors.firstName) }">
|
||||
<!-- <span class="reg-field__meta">-->
|
||||
<IconProfile :size="18" color="#8A847C" />
|
||||
<!-- <span>نام</span>-->
|
||||
<!-- </span>-->
|
||||
<div class="auth-row">
|
||||
<label class="auth-field" :class="{ 'is-invalid': fieldErrors.firstName }">
|
||||
<IconProfile :size="18" color="#98a2b3" />
|
||||
<input
|
||||
v-model="firstName"
|
||||
class="reg-field__input"
|
||||
type="text"
|
||||
autocomplete="given-name"
|
||||
@input="clearField('firstName')"
|
||||
placeholder="نام"
|
||||
@input="clearField('firstName')"
|
||||
/>
|
||||
</label>
|
||||
<p v-if="fieldErrors.firstName" class="reg-field__error">{{ fieldErrors.firstName }}</p>
|
||||
|
||||
<label class="reg-field" :class="{ 'is-invalid': Boolean(fieldErrors.lastName) }">
|
||||
<!-- <span class="reg-field__meta">-->
|
||||
<IconProfile :size="18" color="#8A847C" />
|
||||
<!-- <span>نام خانوادگی</span>-->
|
||||
<!-- </span>-->
|
||||
<label class="auth-field" :class="{ 'is-invalid': fieldErrors.lastName }">
|
||||
<input
|
||||
v-model="lastName"
|
||||
class="reg-field__input"
|
||||
type="text"
|
||||
dir="rtl"
|
||||
autocomplete="family-name"
|
||||
@input="clearField('lastName')"
|
||||
placeholder="نام خانوادگی"
|
||||
@input="clearField('lastName')"
|
||||
/>
|
||||
</label>
|
||||
<p v-if="fieldErrors.lastName" class="reg-field__error">{{ fieldErrors.lastName }}</p>
|
||||
</div>
|
||||
<p v-if="fieldErrors.firstName || fieldErrors.lastName" class="auth-error">
|
||||
{{ fieldErrors.firstName || fieldErrors.lastName }}
|
||||
</p>
|
||||
|
||||
<label class="reg-field" :class="{ 'is-invalid': Boolean(fieldErrors.phone) }">
|
||||
<!-- <span class="reg-field__meta">-->
|
||||
<IconPhone :size="18" color="#8A847C" />
|
||||
<!-- <span>شماره موبایل</span>-->
|
||||
<!-- </span>-->
|
||||
<span class="reg-field__phone" dir="ltr">
|
||||
<span class="reg-field__locale" aria-hidden="true">
|
||||
<svg class="iran-flag" viewBox="0 0 21 15" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="21" height="5" fill="#239F40" />
|
||||
<rect y="5" width="21" height="5" fill="#fff" />
|
||||
<rect y="10" width="21" height="5" fill="#DA0001" />
|
||||
<circle cx="10.5" cy="7.5" r="1.35" fill="#DA0001" />
|
||||
</svg>
|
||||
<svg class="reg-field__caret" viewBox="0 0 10 6" fill="none">
|
||||
<path
|
||||
d="M1 1.2 5 5l4-3.8"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.3"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
<label class="auth-field" :class="{ 'is-invalid': fieldErrors.phone }">
|
||||
<IconPhone :size="18" color="#98a2b3" />
|
||||
<input
|
||||
class="reg-field__input reg-field__input--phone"
|
||||
:value="displayPhone"
|
||||
type="tel"
|
||||
inputmode="numeric"
|
||||
autocomplete="tel"
|
||||
dir="rtl"
|
||||
maxlength="11"
|
||||
placeholder="شماره موبایل"
|
||||
@input="onPhoneInput(($event.target as HTMLInputElement).value)"
|
||||
/>
|
||||
</span>
|
||||
</label>
|
||||
<p v-if="fieldErrors.phone" class="reg-field__error">{{ fieldErrors.phone }}</p>
|
||||
<p v-if="fieldErrors.phone" class="auth-error">{{ fieldErrors.phone }}</p>
|
||||
|
||||
<div ref="jobRoot" class="job-wrap">
|
||||
<p class="job-label">دسته شغلی شما</p>
|
||||
<div class="job-grid" :class="{ 'is-invalid': fieldErrors.jobCategory }">
|
||||
<button
|
||||
v-for="opt in JOB_CATEGORY_OPTIONS"
|
||||
:key="opt.id"
|
||||
type="button"
|
||||
class="reg-field job-trigger"
|
||||
:class="{ 'is-open': jobOpen, 'is-invalid': Boolean(fieldErrors.jobCategory) }"
|
||||
aria-haspopup="listbox"
|
||||
:aria-expanded="jobOpen"
|
||||
@click="jobOpen = !jobOpen"
|
||||
>
|
||||
<span class="reg-field__meta">
|
||||
<BasicIcon icon="vuesax-linear:category" :size="18" color="#8A847C" />
|
||||
<span :class="{ 'is-placeholder': !jobCategory }">{{ selectedJobLabel }}</span>
|
||||
</span>
|
||||
<svg class="job-chevron" viewBox="0 0 12 12" aria-hidden="true">
|
||||
<path
|
||||
d="M2.5 4.5 6 8l3.5-3.5"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.4"
|
||||
stroke-linecap="round"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
<ul v-if="jobOpen" class="job-menu" role="listbox">
|
||||
<li v-for="opt in JOB_CATEGORY_OPTIONS" :key="opt.id">
|
||||
<button
|
||||
type="button"
|
||||
role="option"
|
||||
class="job-option"
|
||||
:class="{ 'is-active': jobCategory === opt.id }"
|
||||
:aria-selected="jobCategory === opt.id"
|
||||
class="job-card"
|
||||
:class="{ 'is-on': jobCategory === opt.id }"
|
||||
@click="selectJob(opt.id)"
|
||||
>
|
||||
{{ opt.label }}
|
||||
<img class="job-card__icon" :src="JOB_ICONS[opt.id]" :alt="opt.label" draggable="false" />
|
||||
<span>{{ opt.label }}</span>
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
<p v-if="fieldErrors.jobCategory" class="reg-field__error">{{ fieldErrors.jobCategory }}</p>
|
||||
</div>
|
||||
<p v-if="fieldErrors.jobCategory" class="auth-error">{{ fieldErrors.jobCategory }}</p>
|
||||
|
||||
<button class="register-submit" type="submit" :disabled="auth.loading">
|
||||
<span v-if="auth.loading" class="register-submit__spinner" aria-hidden="true" />
|
||||
<span class="register-submit__chevron" aria-hidden="true">
|
||||
<IconChevronLeft :size="18" color="#F4EDE4" />
|
||||
</span>
|
||||
<span>دریافت کد تأیید</span>
|
||||
<button class="auth-submit" type="submit" :disabled="auth.loading">
|
||||
{{ auth.loading ? 'در حال ارسال…' : 'ثبتنام' }}
|
||||
</button>
|
||||
|
||||
<label class="register-terms">
|
||||
<input v-model="acceptedTerms" class="register-terms__native" type="checkbox" />
|
||||
<span class="register-terms__box" :class="{ 'is-on': acceptedTerms }" aria-hidden="true">
|
||||
<svg v-if="acceptedTerms" viewBox="0 0 12 12" fill="none">
|
||||
<path
|
||||
d="M2.2 6.2 4.7 8.7 9.8 3.4"
|
||||
stroke="#fff"
|
||||
stroke-width="1.6"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
<span>
|
||||
با ثبتنام،
|
||||
<strong>قوانین و شرایط</strong>
|
||||
استفاده از سرویس را میپذیرم.
|
||||
</span>
|
||||
<label class="terms">
|
||||
<input v-model="acceptedTerms" type="checkbox" />
|
||||
<span>با ثبتنام، قوانین و شرایط استفاده را میپذیرم.</span>
|
||||
</label>
|
||||
<p v-if="fieldErrors.terms" class="reg-field__error">{{ fieldErrors.terms }}</p>
|
||||
<p v-if="fieldErrors.terms" class="auth-error">{{ fieldErrors.terms }}</p>
|
||||
</form>
|
||||
|
||||
<section class="register-perks" aria-label="مزایا">
|
||||
<article class="register-perk">
|
||||
<IconVerified :size="22" color="#6F6B66" />
|
||||
<strong>اطمینان از اصالت محصولات</strong>
|
||||
</article>
|
||||
<article class="register-perk">
|
||||
<BasicIcon icon="vuesax-linear:truck-time" :size="22" color="#6F6B66" />
|
||||
<strong>دسترسی سریع به کالیتههای جدید</strong>
|
||||
</article>
|
||||
<article class="register-perk">
|
||||
<IconDiamond :size="22" color="#6F6B66" />
|
||||
<strong>تجربه خرید ویژه مشتریان</strong>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<div class="register-foot">
|
||||
<img class="register-foot__bg" :src="cardUrl" alt="" />
|
||||
<p class="register-foot__copy">همراه حرفهای<br />کسبوکار شما</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</AuthShell>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.register-page {
|
||||
background: #f3eee8;
|
||||
color: #2a2622;
|
||||
overflow: hidden;
|
||||
.auth-title {
|
||||
margin: 0 0 8px;
|
||||
text-align: center;
|
||||
font-size: 24px;
|
||||
font-weight: 800;
|
||||
color: #1e293b;
|
||||
}
|
||||
|
||||
.register-page__scroll {
|
||||
height: 100%;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
overscroll-behavior: contain;
|
||||
.auth-lead {
|
||||
margin: 0 0 22px;
|
||||
text-align: center;
|
||||
color: #667085;
|
||||
font-size: 13px;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.register-page__stage {
|
||||
.auth-form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100%;
|
||||
gap: 12px;
|
||||
width: 100%;
|
||||
max-width: 390px;
|
||||
margin-inline: auto;
|
||||
padding: calc(10px + env(safe-area-inset-top, 0px)) 20px 0;
|
||||
min-width: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.register-top {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
min-height: 36px;
|
||||
}
|
||||
|
||||
.register-top__welcome {
|
||||
margin: 0;
|
||||
color: #6f6b66;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
|
||||
.register-top__back {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
margin-inline-start: auto;
|
||||
padding: 0;
|
||||
border: none;
|
||||
background: transparent;
|
||||
.auth-row {
|
||||
display: grid;
|
||||
place-items: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.register-title {
|
||||
margin: 18px 0 0;
|
||||
text-align: center;
|
||||
font-size: 1.375rem;
|
||||
font-weight: 700;
|
||||
line-height: 1.45;
|
||||
color: #1c1b19;
|
||||
}
|
||||
|
||||
.register-lead {
|
||||
margin: 6px 0 0;
|
||||
text-align: center;
|
||||
font-size: 0.75rem;
|
||||
line-height: 1.7;
|
||||
color: #8a847c;
|
||||
}
|
||||
|
||||
.register-form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-top: 22px;
|
||||
}
|
||||
|
||||
.register-form :deep(.form-error-banner) {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.reg-field {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 10px;
|
||||
height: 52px;
|
||||
margin-top: 10px;
|
||||
padding: 0 14px;
|
||||
border: 1px solid #e0d9d0;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
.reg-field.is-invalid,
|
||||
.job-trigger.is-invalid {
|
||||
border-color: color-mix(in srgb, var(--color-danger) 55%, #e6e1db);
|
||||
}
|
||||
|
||||
.reg-field__meta {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
color: #5f5b56;
|
||||
font-size: 0.8125rem;
|
||||
font-weight: 500;
|
||||
white-space: nowrap;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.reg-field__meta .is-placeholder {
|
||||
color: #8a847c;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.reg-field__input {
|
||||
flex: 1;
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
height: 100%;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.auth-field {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
min-width: 0;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
height: 52px;
|
||||
padding: 0 14px;
|
||||
border: 1px solid #eaecf0;
|
||||
border-radius: 14px;
|
||||
background: #fff;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.auth-field.is-invalid {
|
||||
border-color: #b42318;
|
||||
}
|
||||
|
||||
.auth-field input {
|
||||
flex: 1 1 0;
|
||||
min-width: 0;
|
||||
width: 100%;
|
||||
border: 0;
|
||||
background: transparent;
|
||||
color: #2a2622;
|
||||
font: inherit;
|
||||
font-size: 0.875rem;
|
||||
font-size: 14px;
|
||||
text-align: right;
|
||||
color: #1e293b;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.reg-field__input::placeholder {
|
||||
color: #b0aaa3;
|
||||
.auth-field input::placeholder {
|
||||
color: #98a2b3;
|
||||
}
|
||||
|
||||
.reg-field__phone {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
align-items: center;
|
||||
min-width: 0;
|
||||
gap: 6px;
|
||||
.auth-error {
|
||||
margin: -4px 0 0;
|
||||
color: #b42318;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.reg-field__locale {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
color: #9a9590;
|
||||
.job-label {
|
||||
margin: 4px 0 0;
|
||||
font-size: 14px;
|
||||
font-weight: 700;
|
||||
color: #1e293b;
|
||||
}
|
||||
|
||||
.iran-flag {
|
||||
width: 22px;
|
||||
height: 16px;
|
||||
border-radius: 2px;
|
||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.06);
|
||||
.job-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.reg-field__caret {
|
||||
width: 10px;
|
||||
height: 6px;
|
||||
}
|
||||
|
||||
.reg-field__input--phone {
|
||||
text-align: start;
|
||||
letter-spacing: 0.04em;
|
||||
}
|
||||
|
||||
.reg-field__error {
|
||||
margin: 6px 8px 0;
|
||||
color: var(--color-danger);
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
|
||||
.job-wrap {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.job-trigger {
|
||||
width: 100%;
|
||||
justify-content: space-between;
|
||||
font: inherit;
|
||||
cursor: pointer;
|
||||
text-align: start;
|
||||
}
|
||||
|
||||
.job-trigger.is-open {
|
||||
border-color: var(--color-primary);
|
||||
}
|
||||
|
||||
.job-chevron {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
color: #9aa3af;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.job-trigger.is-open .job-chevron {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
.job-menu {
|
||||
position: absolute;
|
||||
inset-inline: 0;
|
||||
top: calc(100% + 6px);
|
||||
z-index: 20;
|
||||
margin: 0;
|
||||
padding: 6px;
|
||||
list-style: none;
|
||||
background: #fbfaf7;
|
||||
border: 1px solid #e6e1db;
|
||||
border-radius: 16px;
|
||||
box-shadow: 0 8px 24px rgba(16, 24, 40, 0.08);
|
||||
}
|
||||
|
||||
.job-option {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 10px 12px;
|
||||
border: none;
|
||||
border-radius: 10px;
|
||||
background: transparent;
|
||||
color: #2a2622;
|
||||
font: inherit;
|
||||
font-size: 0.875rem;
|
||||
text-align: start;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.job-option.is-active {
|
||||
background: #e8f0ee;
|
||||
color: var(--color-primary);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.register-submit {
|
||||
position: relative;
|
||||
.job-card {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
height: 52px;
|
||||
margin-top: 14px;
|
||||
padding: 0 44px;
|
||||
border: none;
|
||||
border-radius: 999px;
|
||||
background: var(--color-primary);
|
||||
color: var(--color-surface);
|
||||
font: inherit;
|
||||
font-size: 0.9375rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: background 0.15s ease;
|
||||
}
|
||||
|
||||
.register-submit:not(:disabled):hover,
|
||||
.register-submit:not(:disabled):focus-visible {
|
||||
background: var(--color-primary-hover);
|
||||
}
|
||||
|
||||
.register-submit:disabled {
|
||||
opacity: 0.7;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.register-submit__chevron {
|
||||
position: absolute;
|
||||
inset-inline-end: 16px;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
}
|
||||
|
||||
.register-submit__spinner {
|
||||
position: absolute;
|
||||
inset-inline-start: 16px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border: 2px solid rgba(255, 255, 255, 0.28);
|
||||
border-top-color: #fff;
|
||||
border-radius: 50%;
|
||||
animation: register-spin 0.6s linear infinite;
|
||||
}
|
||||
|
||||
.register-terms {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 10px;
|
||||
margin-top: 14px;
|
||||
color: #6f6b66;
|
||||
font-size: 0.75rem;
|
||||
line-height: 1.7;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.register-terms strong {
|
||||
font-weight: 700;
|
||||
color: #2a2622;
|
||||
}
|
||||
|
||||
.register-terms__native {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.register-terms__box {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
flex-shrink: 0;
|
||||
margin-top: 1px;
|
||||
border: 1.5px solid #cfc9c2;
|
||||
border-radius: 50%;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.register-terms__box.is-on {
|
||||
border-color: var(--color-primary);
|
||||
background: var(--color-primary);
|
||||
}
|
||||
|
||||
.register-terms__box svg {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
}
|
||||
|
||||
.register-perks {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 8px;
|
||||
margin: 35px 0 -20px;
|
||||
padding: 16px 10px 14px;
|
||||
border-radius: 22px;
|
||||
background: #ebe4dc;
|
||||
box-shadow: 0 10px 28px rgba(40, 32, 24, 0.12), 0 2px 8px rgba(40, 32, 24, 0.06);
|
||||
min-height: 108px;
|
||||
padding: 10px 6px;
|
||||
border: 1.5px solid #eaecf0;
|
||||
border-radius: 14px;
|
||||
background: #fff;
|
||||
color: #667085;
|
||||
font: inherit;
|
||||
font-size: 11px;
|
||||
line-height: 1.45;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.register-perk {
|
||||
.job-card__icon {
|
||||
display: block;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
object-fit: contain;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.job-card.is-on {
|
||||
border-color: #1e293b;
|
||||
color: #1e293b;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.auth-submit {
|
||||
margin-top: 4px;
|
||||
height: 52px;
|
||||
border: 0;
|
||||
border-radius: 14px;
|
||||
background: #1e293b;
|
||||
color: #fff;
|
||||
font: inherit;
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.auth-submit:disabled {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.terms {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
text-align: center;
|
||||
color: #6f6b66;
|
||||
font-size: 12px;
|
||||
color: #475569;
|
||||
}
|
||||
|
||||
.register-perk strong {
|
||||
font-size: 0.6875rem;
|
||||
font-weight: 500;
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.register-foot {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-top: auto;
|
||||
margin-inline: -20px;
|
||||
min-height: 260px;
|
||||
overflow: hidden;
|
||||
padding: 48px 0 calc(16px + env(safe-area-inset-bottom, 0px));
|
||||
}
|
||||
|
||||
.register-foot__bg {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
z-index: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
object-position: 88% 32%;
|
||||
pointer-events: none;
|
||||
user-select: none;
|
||||
mask-image: linear-gradient(to bottom, transparent 0%, #000 42%);
|
||||
-webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 42%);
|
||||
}
|
||||
|
||||
.register-foot::before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.register-foot__copy {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
left: 24px;
|
||||
top: 38%;
|
||||
margin: 0;
|
||||
max-width: 10rem;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 600;
|
||||
line-height: 1.55;
|
||||
text-align: right;
|
||||
color:#1c1b19;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.register-foot__copy::after {
|
||||
content: "";
|
||||
display: block;
|
||||
width: 1.375rem;
|
||||
height: 1.5px;
|
||||
margin-top: 8px;
|
||||
margin-left: auto;
|
||||
background: #c9a56a;
|
||||
border-radius: 1px;
|
||||
}
|
||||
|
||||
@keyframes register-spin {
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.register-page {
|
||||
padding: 0;
|
||||
max-width: none;
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
min-height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
.terms input {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
accent-color: #1e293b;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,342 +1,203 @@
|
||||
<script setup lang="ts">
|
||||
import { onBeforeUnmount, onMounted, ref } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import BasicIcon from '@/components/BasicPacks/BasicIcon.vue'
|
||||
import IconChevronLeft from '@/components/icons/IconChevronLeft.vue'
|
||||
import IconQemashMark from '@/components/icons/IconQemashMark.vue'
|
||||
import fabricUrl from '@/assets/images/login-fabric.jpg'
|
||||
import logoUrl from '@/assets/images/nademitex-auth-logo.png'
|
||||
import slide1 from '@/assets/images/login-fabric.jpg'
|
||||
import slide2 from '@/assets/images/fabric-slide-2.jpg'
|
||||
import slide3 from '@/assets/images/fabric-slide-3.jpg'
|
||||
import slide4 from '@/assets/images/fabric-slide-4.jpg'
|
||||
|
||||
const router = useRouter()
|
||||
|
||||
/* ترتیب DOM از راست به چپ در RTL: ستاره → کامیون → لایهها */
|
||||
const features = [
|
||||
const slides = [
|
||||
{
|
||||
icon: 'star',
|
||||
title: 'همراه همیشگی کسبوکارتان',
|
||||
subtitle: 'با خدمات ویژه مشتریان',
|
||||
image: slide1,
|
||||
title: 'پارچه، برای ایدههای بزرگ',
|
||||
lead: 'انتخاب بهتر، تأمین سریعتر، همراه حرفهای شما در مسیر تولید پوشاک',
|
||||
},
|
||||
{
|
||||
icon: 'vuesax-linear:truck-time',
|
||||
title: 'سفارش عمده',
|
||||
subtitle: 'مستقیم از تولیدکننده',
|
||||
image: slide2,
|
||||
title: 'پارچه، برای ایدههای بزرگ',
|
||||
lead: 'از کت و شلوار تا مانتو؛ بافتی که طرح شما را کامل میکند',
|
||||
},
|
||||
{
|
||||
icon: 'vuesax-linear:element-3',
|
||||
title: 'تنوع بینظیر محصولات',
|
||||
subtitle: 'از کلاسیک تا مدرن',
|
||||
image: slide3,
|
||||
title: 'پارچه، برای ایدههای بزرگ',
|
||||
lead: 'کتان، پنبه و فاستونی؛ موجودی عمده برای مزون و تولیدکننده',
|
||||
},
|
||||
] as const
|
||||
{
|
||||
image: slide4,
|
||||
title: 'پارچه، برای ایدههای بزرگ',
|
||||
lead: 'کالیته را ببینید، رنگ را لمس کنید، بعد سفارش دهید',
|
||||
},
|
||||
]
|
||||
|
||||
function goLogin() {
|
||||
const redirect = typeof router.currentRoute.value.query.redirect === 'string'
|
||||
? router.currentRoute.value.query.redirect
|
||||
: undefined
|
||||
router.push({
|
||||
name: 'login',
|
||||
query: redirect ? { redirect } : undefined,
|
||||
})
|
||||
const index = ref(0)
|
||||
let timer = 0
|
||||
let startX = 0
|
||||
|
||||
function go(next: number) {
|
||||
index.value = (next + slides.length) % slides.length
|
||||
}
|
||||
|
||||
function onTouchStart(event: TouchEvent) {
|
||||
startX = event.changedTouches[0]?.clientX ?? 0
|
||||
}
|
||||
|
||||
function onTouchEnd(event: TouchEvent) {
|
||||
const dx = (event.changedTouches[0]?.clientX ?? 0) - startX
|
||||
if (Math.abs(dx) < 40) return
|
||||
go(index.value + (dx < 0 ? 1 : -1))
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
timer = window.setInterval(() => go(index.value + 1), 4500)
|
||||
})
|
||||
|
||||
onBeforeUnmount(() => window.clearInterval(timer))
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="page welcome-page">
|
||||
<img class="welcome-page__bg" :src="fabricUrl" alt="" />
|
||||
<div class="welcome-page__veil" aria-hidden="true" />
|
||||
<div class="welcome" @touchstart.passive="onTouchStart" @touchend.passive="onTouchEnd">
|
||||
<img
|
||||
v-for="(slide, i) in slides"
|
||||
:key="slide.lead"
|
||||
class="welcome__photo"
|
||||
:class="{ 'is-on': i === index }"
|
||||
:src="slide.image"
|
||||
alt=""
|
||||
/>
|
||||
<div class="welcome__shade" />
|
||||
|
||||
<div class="welcome-page__scroll">
|
||||
<div class="welcome-page__stage">
|
||||
<header class="welcome-top">
|
||||
<button type="button" class="welcome-skip" @click="goLogin">رد شدن</button>
|
||||
<header class="welcome__brand">
|
||||
<img class="welcome__logo" :src="logoUrl" alt="Nademi Tex" draggable="false" />
|
||||
</header>
|
||||
|
||||
<div class="welcome-brand">
|
||||
<IconQemashMark :size="88" />
|
||||
<h1 class="welcome-brand__fa">نادمی تکس</h1>
|
||||
<p class="welcome-brand__tag">انتخاب حرفهای، شروع یک همکاری ماندگار</p>
|
||||
<span class="welcome-brand__rule" aria-hidden="true" />
|
||||
</div>
|
||||
|
||||
<ul class="welcome-features">
|
||||
<li v-for="item in features" :key="item.title" class="welcome-feature">
|
||||
<span class="welcome-feature__icon" aria-hidden="true">
|
||||
<svg
|
||||
v-if="item.icon === 'star'"
|
||||
class="welcome-feature__star"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
>
|
||||
<path
|
||||
d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"
|
||||
stroke="#fff"
|
||||
stroke-width="1.5"
|
||||
stroke-linejoin="round"
|
||||
<div class="welcome__copy">
|
||||
<h1>{{ slides[index]?.title }}</h1>
|
||||
<p>{{ slides[index]?.lead }}</p>
|
||||
<div class="welcome__dots" role="tablist" aria-label="اسلایدها">
|
||||
<button
|
||||
v-for="(slide, i) in slides"
|
||||
:key="slide.lead"
|
||||
type="button"
|
||||
:class="{ 'is-on': i === index }"
|
||||
:aria-label="`اسلاید ${i + 1}`"
|
||||
@click="go(i)"
|
||||
/>
|
||||
</svg>
|
||||
<BasicIcon v-else :icon="item.icon" :size="22" color="#ffffff" />
|
||||
</span>
|
||||
<strong>{{ item.title }}</strong>
|
||||
<span>{{ item.subtitle }}</span>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="welcome-spacer" aria-hidden="true" />
|
||||
|
||||
<div class="welcome-dots" aria-hidden="true">
|
||||
<i class="is-on" />
|
||||
<i />
|
||||
<i />
|
||||
<i />
|
||||
</div>
|
||||
|
||||
<button type="button" class="welcome-cta" @click="goLogin">
|
||||
<span>ورود / ثبتنام</span>
|
||||
<span class="welcome-cta__chevron" aria-hidden="true">
|
||||
<IconChevronLeft :size="18" color="#ffffff" />
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="button" class="welcome__cta" @click="router.push('/login')">ورود / ثبتنام</button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.welcome-page {
|
||||
.welcome {
|
||||
position: relative;
|
||||
isolation: isolate;
|
||||
height: 100%;
|
||||
min-height: 100%;
|
||||
color: #f4ede4;
|
||||
background: #1a1612;
|
||||
overflow: hidden;
|
||||
color: #fff;
|
||||
background: #0f172a;
|
||||
}
|
||||
|
||||
.welcome-page__bg {
|
||||
.welcome__photo {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
z-index: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
object-position: center;
|
||||
pointer-events: none;
|
||||
opacity: 0;
|
||||
transition: opacity 0.5s ease;
|
||||
}
|
||||
|
||||
.welcome__photo.is-on {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.welcome__shade {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: linear-gradient(180deg, rgba(15, 23, 42, 0.15) 20%, rgba(15, 23, 42, 0.82) 100%);
|
||||
}
|
||||
|
||||
.welcome__brand,
|
||||
.welcome__copy,
|
||||
.welcome__cta {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.welcome__brand {
|
||||
padding-top: 14vh;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.welcome__logo {
|
||||
display: block;
|
||||
width: auto;
|
||||
height: 110px;
|
||||
margin: 0 auto;
|
||||
object-fit: contain;
|
||||
filter: brightness(0) invert(1);
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.welcome-page__veil {
|
||||
.welcome__copy {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
z-index: 1;
|
||||
background:
|
||||
linear-gradient(180deg, rgba(12, 10, 8, 0.42) 0%, rgba(12, 10, 8, 0.28) 42%, rgba(12, 10, 8, 0.72) 100%);
|
||||
pointer-events: none;
|
||||
right: 24px;
|
||||
left: 24px;
|
||||
bottom: 108px;
|
||||
}
|
||||
|
||||
.welcome-page__scroll {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
height: 100%;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
overscroll-behavior: contain;
|
||||
}
|
||||
|
||||
.welcome-page__stage {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100%;
|
||||
width: 100%;
|
||||
max-width: 390px;
|
||||
margin-inline: auto;
|
||||
padding: calc(12px + env(safe-area-inset-top, 0px)) 20px
|
||||
calc(20px + env(safe-area-inset-bottom, 0px));
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.welcome-top {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
min-height: 40px;
|
||||
}
|
||||
|
||||
.welcome-skip {
|
||||
height: 34px;
|
||||
padding: 0 16px;
|
||||
border: none;
|
||||
border-radius: 999px;
|
||||
background: rgba(12, 10, 8, 0.45);
|
||||
color: #f4ede4;
|
||||
font: inherit;
|
||||
font-size: 0.8125rem;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
backdrop-filter: blur(6px);
|
||||
}
|
||||
|
||||
.welcome-brand {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
margin-top: 28px;
|
||||
}
|
||||
|
||||
.welcome-brand__fa {
|
||||
margin: 14px 0 0;
|
||||
font-size: 1.875rem;
|
||||
.welcome__copy h1 {
|
||||
margin: 0 0 10px;
|
||||
font-size: 32px;
|
||||
font-weight: 700;
|
||||
line-height: 1.3;
|
||||
color: #ead7c0;
|
||||
line-height: 1.35;
|
||||
}
|
||||
|
||||
.welcome-brand__tag {
|
||||
margin: 10px 0 0;
|
||||
max-width: 16rem;
|
||||
font-size: 0.8125rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.7;
|
||||
color: rgba(244, 237, 228, 0.92);
|
||||
}
|
||||
|
||||
.welcome-brand__rule {
|
||||
display: block;
|
||||
width: 36px;
|
||||
height: 1.5px;
|
||||
margin-top: 16px;
|
||||
border-radius: 1px;
|
||||
background: var(--color-primary);
|
||||
}
|
||||
|
||||
.welcome-features {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 10px;
|
||||
margin: 36px 0 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.welcome-feature {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.welcome-feature__icon {
|
||||
display: grid;
|
||||
place-items: center;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border-radius: 999px;
|
||||
background: rgba(244, 237, 228, 0.22);
|
||||
color: #fff;
|
||||
backdrop-filter: blur(4px);
|
||||
}
|
||||
|
||||
.welcome-feature__star {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
}
|
||||
|
||||
.welcome-feature strong {
|
||||
font-size: 0.6875rem;
|
||||
font-weight: 700;
|
||||
line-height: 1.45;
|
||||
color: #f4ede4;
|
||||
}
|
||||
|
||||
.welcome-feature span {
|
||||
font-size: 0.5625rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
color: rgba(244, 237, 228, 0.72);
|
||||
}
|
||||
|
||||
.welcome-spacer {
|
||||
flex: 1 1 auto;
|
||||
min-height: 28px;
|
||||
}
|
||||
|
||||
.welcome-dots {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 6px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.welcome-dots i {
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
border-radius: 999px;
|
||||
background: rgba(244, 237, 228, 0.28);
|
||||
}
|
||||
|
||||
.welcome-dots i.is-on {
|
||||
background: #f4ede4;
|
||||
}
|
||||
|
||||
.welcome-cta {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
height: 52px;
|
||||
padding: 0 44px;
|
||||
border: 1px solid rgba(244, 237, 228, 0.28);
|
||||
border-radius: 999px;
|
||||
background:
|
||||
linear-gradient(
|
||||
135deg,
|
||||
color-mix(in srgb, var(--color-primary) 65%, transparent) 0%,
|
||||
color-mix(in srgb, var(--color-primary) 42%, transparent) 48%,
|
||||
color-mix(in srgb, var(--color-accent-navy) 48%, transparent) 100%
|
||||
);
|
||||
color: #fff;
|
||||
font: inherit;
|
||||
font-size: 0.9375rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
backdrop-filter: blur(10px);
|
||||
-webkit-backdrop-filter: blur(10px);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12);
|
||||
}
|
||||
|
||||
.welcome-cta__chevron {
|
||||
position: absolute;
|
||||
inset-inline-end: 16px;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.welcome-page {
|
||||
padding: 0;
|
||||
max-width: none;
|
||||
.welcome__copy p {
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
min-height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.welcome-page__stage {
|
||||
max-width: 390px;
|
||||
padding-block: 16px 24px;
|
||||
}
|
||||
font-size: 14px;
|
||||
line-height: 1.8;
|
||||
opacity: 0.92;
|
||||
}
|
||||
|
||||
@media (max-width: 359px) {
|
||||
.welcome-page__stage {
|
||||
padding-inline: 14px;
|
||||
}
|
||||
.welcome__dots {
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
margin-top: 18px;
|
||||
}
|
||||
|
||||
.welcome-brand__fa {
|
||||
font-size: 1.625rem;
|
||||
}
|
||||
.welcome__dots button {
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
border-radius: 999px;
|
||||
background: rgba(255, 255, 255, 0.45);
|
||||
}
|
||||
|
||||
.welcome-feature__icon {
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
}
|
||||
.welcome__dots button.is-on {
|
||||
width: 18px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.welcome__cta {
|
||||
position: absolute;
|
||||
right: 24px;
|
||||
left: 24px;
|
||||
bottom: 28px;
|
||||
height: 52px;
|
||||
border: 0;
|
||||
border-radius: 14px;
|
||||
background: #1e293b;
|
||||
color: #fff;
|
||||
font: inherit;
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
|
||||