SearchView: Removed the dynamic collection-tile grid (e.g. "پرفروش‌های این هفته") and the "نتایج / N محصول" section header from the UI. Underlying data/filtering logic untouched.

DashboardView ("میز کار"): Rebuilt from scratch with a new structure, distinct from the old card+grid layout but visually aligned with HomeView (same blurred bar, @ink/@wine palette, staged reveal animation on mount):

Single hero card (ink→wine gradient) showing balance, gold/fiat debt, and identity — no quick-action icons inside it anymore.

Live gold rate folded into a slim inline row at the bottom instead of a titled section.
Iterated shadow/spacing on the hero card per feedback (softer, less clipped).
DialogVant / DialogVantOneButton (shared modal components, used in 7+ call sites: Dashboard, Cart, SingleProduct, Register, App): Replaced Vant's default dialog chrome with the app's own rounded-card language — circular icon badge for the illustration, pill-shaped primary/secondary buttons. No call-site markup changed.

LoginView: Rebuilt from scratch — full-bleed dark hero (brand + step copy) overlapped by a floating white form sheet, animated crossfade transition between the mobile-number and OTP steps, same staged entrance animation as Home/Dashboard. All auth logic (API check, OTP stub, session login) unchanged.
This commit is contained in:
s.esmaeili
2026-09-18 12:54:45 +03:30
parent 05fe780c89
commit 53a304b5d5
355 changed files with 22865 additions and 14 deletions
@@ -0,0 +1,120 @@
@font-face {
font-family: iransans;
font-style: normal;
font-weight: 200;
src: url('./fonts/iransans/IRANSansWeb_FaNum_UltraLight.woff2') format('woff2'),
url('./fonts/iransans/IRANSansWeb_FaNum_UltraLight.woff') format('woff');
}
@font-face {
font-family: iransans;
font-style: normal;
font-weight: 300;
src: url('./fonts/iransans/IRANSansWeb_FaNum_Light.woff2') format('woff2'),
url('./fonts/iransans/IRANSansWeb_FaNum_Light.woff') format('woff');
}
@font-face {
font-family: iransans;
font-style: normal;
font-weight: normal;
src: url('./fonts/iransans/IRANSansWeb_FaNum.woff2') format('woff2'),
url('./fonts/iransans/IRANSansWeb_FaNum.woff') format('woff');
}
@font-face {
font-family: iransans;
font-style: normal;
font-weight: 500;
src: url('./fonts/iransans/IRANSansWeb_FaNum_Medium.woff2') format('woff2'),
url('./fonts/iransans/IRANSansWeb_FaNum_Medium.woff') format('woff');
}
@font-face {
font-family: iransans;
font-style: normal;
font-weight: bold;
src: url('./fonts/iransans/IRANSansWeb_FaNum_Bold.woff2') format('woff2'),
url('./fonts/iransans/IRANSansWeb_FaNum_Bold.woff') format('woff');
}
@font-face {
font-family: iransans;
font-style: normal;
font-weight: 900;
src: url('./fonts/iransans/IRANSansWeb_FaNum_Black.woff2') format('woff2'),
url('./fonts/iransans/IRANSansWeb_FaNum_Black.woff') format('woff');
}
@font-face {
font-family: yekan_bakh;
font-style: normal;
font-weight: bold;
src: url('./fonts/yekan_bakh_fanum_bold.eot');
src: url('./fonts/yekan_bakh_fanum_bold.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('./fonts/yekan_bakh_fanum_bold.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('./fonts/yekan_bakh_fanum_bold.ttf') format('truetype');
}
@font-face {
font-family: yekan_bakh;
font-style: normal;
font-weight: 100;
src: url('./fonts/yekan_bakh_fanum_thin.eot');
src: url('./fonts/yekan_bakh_fanum_thin.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('./fonts/yekan_bakh_fanum_thin.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('./fonts/yekan_bakh_fanum_thin.ttf') format('truetype');
}
@font-face {
font-family: yekan_bakh;
font-style: normal;
font-weight: 300;
src: url('./fonts/yekan_bakh_fanum_light.eot');
src: url('./fonts/yekan_bakh_fanum_light.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('./fonts/yekan_bakh_fanum_light.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('./fonts/yekan_bakh_fanum_light.ttf') format('truetype');
}
@font-face {
font-family: yekan_bakh;
font-style: normal;
font-weight: normal;
src: url('./fonts/yekan_bakh_fanum_regular.eot');
src: url('./fonts/yekan_bakh_fanum_regular.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('./fonts/yekan_bakh_fanum_regular.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('./fonts/yekan_bakh_fanum_regular.ttf') format('truetype');
}
@font-face {
font-family: yekan_bakh;
font-style: normal;
font-weight: 500;
src: url('./fonts/yekan_bakh_fanum_medium.eot');
src: url('./fonts/yekan_bakh_fanum_medium.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('./fonts/yekan_bakh_fanum_medium.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('./fonts/yekan_bakh_fanum_medium.ttf') format('truetype');
}
@font-face {
font-family: yekan_bakh;
font-style: normal;
font-weight: 800;
src: url('./fonts/yekan_bakh_fanum_fat.eot');
src: url('./fonts/yekan_bakh_fanum_fat.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('./fonts/yekan_bakh_fanum_heavy.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('./fonts/yekan_bakh_fanum_fat.ttf') format('truetype');
}
@font-face {
font-family: yekan_bakh;
font-style: normal;
font-weight: 900;
src: url('./fonts/yekan_bakh_fanum_heavy.eot');
src: url('./fonts/yekan_bakh_fanum_heavy.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('./fonts/yekan_bakh_fanum_heavy.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('./fonts/yekan_bakh_fanum_heavy.ttf') format('truetype');
}
@@ -0,0 +1,609 @@
@import './fonts.less';
/*@font-face {
font-family: iranyekan;
font-style: normal;
font-weight: bold;
src: url('iranyekan_fonts/eot/iranyekanwebboldfanum.eot');
src: url('iranyekan_fonts/eot/iranyekanwebboldfanum.eot?#iefix') format('embedded-opentype'), !* IE6-8 *!
url('iranyekan_fonts/woff/iranyekanwebboldfanum.woff') format('woff'), !* FF3.6+, IE9, Chrome6+, Saf5.1+*!
url('iranyekan_fonts/ttf/iranyekanwebboldfanum.ttf') format('truetype');
}
@font-face {
font-family: iranyekan;
font-style: normal;
font-weight: 100;
src: url('iranyekan_fonts/eot/iranyekanwebthinfanum.eot');
src: url('iranyekan_fonts/eot/iranyekanwebthinfanum.eot?#iefix') format('embedded-opentype'), !* IE6-8 *!
url('iranyekan_fonts/woff/iranyekanwebthinfanum.woff') format('woff'), !* FF3.6+, IE9, Chrome6+, Saf5.1+*!
url('iranyekan_fonts/ttf/iranyekanwebthinfanum.ttf') format('truetype');
}
@font-face {
font-family: iranyekan;
font-style: normal;
font-weight: 300;
src: url('iranyekan_fonts/eot/iranyekanweblightfanum.eot');
src: url('iranyekan_fonts/eot/iranyekanweblightfanum.eot?#iefix') format('embedded-opentype'), !* IE6-8 *!
url('iranyekan_fonts/woff/iranyekanweblightfanum.woff') format('woff'), !* FF3.6+, IE9, Chrome6+, Saf5.1+*!
url('iranyekan_fonts/ttf/iranyekanweblightfanum.ttf') format('truetype');
}
@font-face {
font-family: iranyekan;
font-style: normal;
font-weight: normal;
src: url('iranyekan_fonts/eot/iranyekanwebregularfanum.eot');
src: url('iranyekan_fonts/eot/iranyekanwebregularfanum.eot?#iefix') format('embedded-opentype'), !* IE6-8 *!
url('iranyekan_fonts/woff/iranyekanwebregularfanum.woff') format('woff'), !* FF3.6+, IE9, Chrome6+, Saf5.1+*!
url('iranyekan_fonts/ttf/iranyekanwebregularfanum.ttf') format('truetype');
}
@font-face {
font-family: iranyekan;
font-style: normal;
font-weight: 500;
src: url('iranyekan_fonts/eot/iranyekanwebmediumfanum.eot');
src: url('iranyekan_fonts/eot/iranyekanwebmediumfanum.eot?#iefix') format('embedded-opentype'), !* IE6-8 *!
url('iranyekan_fonts/woff/iranyekanwebmediumfanum.woff') format('woff'), !* FF3.6+, IE9, Chrome6+, Saf5.1+*!
url('iranyekan_fonts/ttf/iranyekanwebmediumfanum.ttf') format('truetype');
}
@font-face {
font-family: iranyekan;
font-style: normal;
font-weight: 800;
src: url('iranyekan_fonts/eot/iranyekanwebextraboldfanum.eot');
src: url('iranyekan_fonts/eot/iranyekanwebextraboldfanum.eot?#iefix') format('embedded-opentype'), !* IE6-8 *!
url('iranyekan_fonts/woff/iranyekanwebextraboldfanum.woff') format('woff'), !* FF3.6+, IE9, Chrome6+, Saf5.1+*!
url('iranyekan_fonts/ttf/iranyekanwebextraboldfanum.ttf') format('truetype');
}
@font-face {
font-family: iranyekan;
font-style: normal;
font-weight: 850;
src: url('iranyekan_fonts/eot/iranyekanwebblackfanum.eot');
src: url('iranyekan_fonts/eot/iranyekanwebblackfanum.eot?#iefix') format('embedded-opentype'), !* IE6-8 *!
url('iranyekan_fonts/woff/iranyekanwebblackfanum.woff') format('woff'), !* FF3.6+, IE9, Chrome6+, Saf5.1+*!
url('iranyekan_fonts/ttf/iranyekanwebblackfanum.ttf') format('truetype');
}
@font-face {
font-family: iranyekan;
font-style: normal;
font-weight: 900;
src: url('iranyekan_fonts/eot/iranyekanwebextrablackfanum.eot');
src: url('iranyekan_fonts/eot/iranyekanwebextrablackfanum.eot?#iefix') format('embedded-opentype'), !* IE6-8 *!
url('iranyekan_fonts/woff/iranyekanwebextrablackfanum.woff') format('woff'), !* FF3.6+, IE9, Chrome6+, Saf5.1+*!
url('iranyekan_fonts/ttf/iranyekanwebextrablackfanum.ttf') format('truetype');
}*/
/*.iranyekan{
font-family: iranyekan , arial, helvetica, sans-serif !important;
}*/
/////////////////////////////////
/*@font-face {
font-family: yekan_bakh;
font-style: normal;
font-weight: 100;
src: url('fonts/woff/yekan_bakh_fanum_thin.woff') format('woff'),
url('fonts/woff2/yekan_bakh_fanum_thin.woff2') format('woff2');
}
@font-face {
font-family: yekan_bakh;
font-style: normal;
font-weight: 300;
src: url('fonts/woff/yekan_bakh_fanum_light.woff') format('woff'),
url('fonts/woff2/yekan_bakh_fanum_light.woff2') format('woff2');
}
@font-face {
font-family: yekan_bakh;
font-style: normal;
font-weight: normal;
src: url('fonts/woff/yekan_bakh_fanum_regular.woff') format('woff'),
url('fonts/woff2/yekan_bakh_fanum_regular.woff2') format('woff2');
}
@font-face {
font-family: yekan_bakh;
font-style: normal;
font-weight: 600;
src: url('fonts/woff/yekan_bakh_fanum_semi_bold.woff') format('woff'),
url('fonts/woff2/yekan_bakh_fanum_semi_bold.woff2') format('woff2');
}
@font-face {
font-family: yekan_bakh;
font-style: normal;
font-weight: bold;
src: url('fonts/woff/yekan_bakh_fanum_bold.woff') format('woff'),
url('fonts/woff2/yekan_bakh_fanum_bold.woff2') format('woff2');
}
@font-face {
font-family: yekan_bakh;
font-style: normal;
font-weight: 800;
src: url('fonts/woff/yekan_bakh_fanum_extra_bold.woff') format('woff'),
url('fonts/woff2/yekan_bakh_fanum_extra_bold.woff2') format('woff2');
}
@font-face {
font-family: yekan_bakh;
font-style: normal;
font-weight: 900;
src: url('fonts/woff/yekan_bakh_fanum_black.woff') format('woff'),
url('fonts/woff2/yekan_bakh_fanum_black.woff2') format('woff2');
}
@font-face {
font-family: yekan_bakh;
font-style: normal;
font-weight: 950;
src: url('fonts/woff/yekan_bakh_fanum_extra_black.woff') format('woff'),
url('fonts/woff2/yekan_bakh_fanum_extra_black.woff2') format('woff2');
}
.yekan_bakh{
font-family: yekan_bakh , arial, helvetica, sans-serif
}*/
//////////////////////////////////
/*@font-face {
font-family: 'sedmedgh';
src: url("./font/ligth.ttf");
font-weight: 300;
}
@font-face {
font-family: 'sedmedgh';
src: url("./font/regular.ttf");
font-weight: 400;
}
@font-face {
font-family: 'sedmedgh';
src: url("./font/medium.ttf");
font-weight: 500;
}
@font-face {
font-family: 'sedmedgh';
src: url("./font/bold.ttf");
font-weight: 600;
}
@font-face {
font-family: 'sedmedgh';
src: url("./font/heavy.ttf");
font-weight: 700;
}
@font-face {
font-family: 'sedmedgh';
src: url("./font/fat.ttf");
font-weight: 800;
}*/
///////////////////////////////////////////
//@font-face {
// font-family: 'sedmedgh';
// src: url("./font/iranekan/thin.ttf");
// font-weight: 300;
//}
//
//@font-face {
// font-family: 'sedmedgh';
// src: url("./font/iranekan/light.ttf");
// font-weight: 400;
//}
//
//@font-face {
// font-family: 'sedmedgh';
// src: url("./font/iranekan/regular.ttf");
// font-weight: 500;
//}
//
//@font-face {
// font-family: 'sedmedgh';
// src: url("./font/iranekan/medium.ttf");
// font-weight: 600;
//}
//
//@font-face {
// font-family: 'sedmedgh';
// src: url("./font/iranekan/bold.ttf");
// font-weight: 700;
//}
//
//@font-face {
// font-family: 'sedmedgh';
// src: url("./font/iranekan/heavy.ttf");
// font-weight: 800;
//}
//
//@font-face {
// font-family: 'sedmedgh';
// src: url("./font/iranekan/fat.ttf");
// font-weight: 900;
//}
//
///////////////////////////////////////
//
//
//
//@font-face {
// font-family: 'sedmedgh';
// src: url("./font/iranekan/light.ttf");
// font-weight: 300;
//}
//
//@font-face {
// font-family: 'sedmedgh';
// src: url("./font/iranekan/regular.ttf");
// font-weight: 400;
//}
//
//@font-face {
// font-family: 'sedmedgh';
// src: url("./font/iranekan/medium.ttf");
// font-weight: 500;
//}
//
//@font-face {
// font-family: 'sedmedgh';
// src: url("./font/iranekan/bold.ttf");
// font-weight: 600;
//}
//
//@font-face {
// font-family: 'sedmedgh';
// src: url("./font/iranekan/heavy.ttf");
// font-weight: 700;
//}
//
//@font-face {
// font-family: 'sedmedgh';
// src: url("./font/iranekan/fat.ttf");
// font-weight: 800;
//}
body, * {
font-family: iransans, yekan_bakh, sans-serif, tahoma;
//letter-spacing: 0px !important;
font-size: @font-size;
line-height: inherit;
font-weight: inherit;
}
.rtl {
direction: rtl !important;
}
.ltr {
direction: ltr !important;
}
.no-scrollbar {
&::-webkit-scrollbar {
display: none;
}
}
*{
.no-scrollbar;
}
// headings
h1, h2, h3, h4, h5, h6, h7, h8 {
margin-bottom: 1.2em;
color: @primary;
}
h1, .h1 {
font-size: @h1-font-size;
}
h2, .h2 {
font-size: @h2-font-size;
}
h3, .h3 {
font-size: @h3-font-size;
}
h4, .h4 {
font-size: @h4-font-size;
}
h5, .h5 {
font-size: @h5-font-size;
}
h6, .h6 {
font-size: @h6-font-size;
}
p {
margin-bottom: 10px;
}
html, body {
overscroll-behavior-y: contain;
}
.overflow-x-auto {
overscroll-behavior-x: contain;
}
.overflow-y-auto {
overscroll-behavior-y: contain;
}
input:focus-visible {
outline: none;
}
.@{prefix} {
&-form {
&.ant-form {
background: transparent !important;
color: @white !important;
}
.ant-btn-primary[disabled], .ant-btn-primary[disabled]:hover, .ant-btn-primary[disabled]:focus, .ant-btn-primary[disabled]:active {
background: fade(@white, 20%);
color: fade(@white, 50%);
border-color: transparent;
}
.ant-form-item {
label, input {
background: transparent !important;
color: @white !important;
}
}
}
&-rounded-drawer {
background: transparent;
.ant-drawer-content-wrapper {
box-shadow: none !important;
}
.ant-drawer-content {
background: transparent !important;;
}
&.bg-white .ant-drawer-body {
background: white;
border-radius: 15px 15px 0px 0px;
}
&.bg-primaryLighten .ant-drawer-body {
background: @primaryLighten;
border-radius: 30px 30px 0px 0px;
}
}
&-custom-scrollbar {
padding: 0 10px;
&::-webkit-scrollbar {
width: 8px;
}
/* Handle */
&::-webkit-scrollbar-thumb {
background: transparent;
border-radius: 10px;
}
/* Handle on hover */
&:hover::-webkit-scrollbar-thumb {
background: #ffffff80;
}
}
}
.ant {
&-empty-image img{
object-fit: contain;
}
&-timeline-item-content {
margin: 0 26px 0 0;
}
&-timeline-item-tail {
left: unset;
right: 4px;
}
&-btn {
display: flex !important;
flex-direction: row-reverse;
align-items: center;
justify-content: center;
i {
margin-right: 10px;
}
span {
font-weight: 600;
}
&-lg {
span {
font-size: 20px;
}
}
&-secondary,
&-secondary:hover,
&-secondary:focus {
border-color: @primary;
background: @primary;
color: @white;
&.ant-btn-background-ghost {
color: @primary;
border-color: @primary;
text-shadow: none;
}
}
&-light,
&-light:hover,
&-light:focus {
color: @primary;
border-color: @light;
background: @light;
}
}
&-form-vertical .ant-form-item-label, .ant-col-24.ant-form-item-label, .ant-col-xl-24.ant-form-item-label {
text-align: right !important;
}
//&-ant-form-item-label > label{
// font-size: 50px!important;
//}
&-tabs-tab + .ant-tabs-tab {
margin: 0 32px 0 0;
}
&-tabs > .ant-tabs-nav .ant-tabs-nav-wrap, .ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-wrap {
justify-content: flex-end;
}
&-drawer-bottom.rtl {
.ant-drawer-body {
.no-scrollbar;
}
}
&-radio-button-wrapper {
border-left-width: 1.02px;
&:not(:first-child)::before {
left: unset;
right: -1px;
}
&:first-child {
border-radius: 0 5px 5px 0;
}
&:last-child {
border-radius: 5px 0 0 5px;
}
}
&-radio-group.flex {
display: flex !important;
.ant-radio-button-wrapper {
flex: 1 1 0%;
}
}
}
.content {
content: '';
display: inline-block;
width: 8px;
}
.before {
&\:mark:before {
@apply content;
width: 4px;
padding: .2rem;
@apply top-4;
//position: absolute;
right: 0;
height: 48px;
border-radius: 5px 0 0 5px;
background: @secondary;
color: @secondary;
}
&\:bullet {
font-size: 13px;
&:before {
@apply content;
height: 8px;
border-radius: 100%;
margin-left: 10px;
}
}
&\:bg {
&-secondary:before {
@apply content;
background: @secondary;
}
&-primary:before {
@apply content;
background: @primary;
}
}
&\:text {
&-secondary:before {
content: '1';
color: @secondary;
}
&-primary:before {
content: '1';
color: @primary;
}
}
}
.hide-counter {
.ant-input-number-handler-wrap {
visibility: hidden;
display: none;
}
}
.ant-select{
width: 100% !important;
.ant-select-selector{
height: 3rem !important;
align-items: center;
}
}
*:not(input) {
user-select: none; /* supported by Chrome and Opera */
-webkit-user-select: none; /* Safari */
-khtml-user-select: none; /* Konqueror HTML */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* Internet Explorer/Edge */
}
.ant-empty-image img,.ant-empty-image{
width: 100%;
height: 40vh
}
@@ -0,0 +1,3 @@
@tailwind base;
@tailwind components;
@tailwind utilities;