@amirjalili1374/ui-kit 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/README.md +275 -0
  2. package/dist/_redirects +1 -0
  3. package/dist/components/Loading.vue.d.ts +3 -0
  4. package/dist/components/Loading.vue.d.ts.map +1 -0
  5. package/dist/components/common/AppStepper.vue.d.ts +75 -0
  6. package/dist/components/common/AppStepper.vue.d.ts.map +1 -0
  7. package/dist/components/shared/BaseBreadcrumb.vue.d.ts +18 -0
  8. package/dist/components/shared/BaseBreadcrumb.vue.d.ts.map +1 -0
  9. package/dist/components/shared/BaseIcon.vue.d.ts +33 -0
  10. package/dist/components/shared/BaseIcon.vue.d.ts.map +1 -0
  11. package/dist/components/shared/ConfirmDialog.vue.d.ts +38 -0
  12. package/dist/components/shared/ConfirmDialog.vue.d.ts.map +1 -0
  13. package/dist/components/shared/CustomAutocomplete.vue.d.ts +81 -0
  14. package/dist/components/shared/CustomAutocomplete.vue.d.ts.map +1 -0
  15. package/dist/components/shared/CustomDataTable.vue.d.ts +59 -0
  16. package/dist/components/shared/CustomDataTable.vue.d.ts.map +1 -0
  17. package/dist/components/shared/DescriptionInput.vue.d.ts +34 -0
  18. package/dist/components/shared/DescriptionInput.vue.d.ts.map +1 -0
  19. package/dist/components/shared/DownloadButton.vue.d.ts +25 -0
  20. package/dist/components/shared/DownloadButton.vue.d.ts.map +1 -0
  21. package/dist/components/shared/MoneyInput.vue.d.ts +127 -0
  22. package/dist/components/shared/MoneyInput.vue.d.ts.map +1 -0
  23. package/dist/components/shared/PdfViewer.vue.d.ts +67 -0
  24. package/dist/components/shared/PdfViewer.vue.d.ts.map +1 -0
  25. package/dist/components/shared/ShamsiDatePicker.vue.d.ts +48 -0
  26. package/dist/components/shared/ShamsiDatePicker.vue.d.ts.map +1 -0
  27. package/dist/components/shared/UiChildCard.vue.d.ts +14 -0
  28. package/dist/components/shared/UiChildCard.vue.d.ts.map +1 -0
  29. package/dist/components/shared/UiParentCard.vue.d.ts +18 -0
  30. package/dist/components/shared/UiParentCard.vue.d.ts.map +1 -0
  31. package/dist/components/shared/VPriceTextField.vue.d.ts +30 -0
  32. package/dist/components/shared/VPriceTextField.vue.d.ts.map +1 -0
  33. package/dist/composables/useDataTable.d.ts +36 -0
  34. package/dist/composables/useDataTable.d.ts.map +1 -0
  35. package/dist/composables/useTableActions.d.ts +294 -0
  36. package/dist/composables/useTableActions.d.ts.map +1 -0
  37. package/dist/composables/useTableHeaders.d.ts +80 -0
  38. package/dist/composables/useTableHeaders.d.ts.map +1 -0
  39. package/dist/composables/useTableSelection.d.ts +32 -0
  40. package/dist/composables/useTableSelection.d.ts.map +1 -0
  41. package/dist/constants/enums/booleanEnum.d.ts +13 -0
  42. package/dist/constants/enums/booleanEnum.d.ts.map +1 -0
  43. package/dist/directives/v-digit-limit.d.ts +6 -0
  44. package/dist/directives/v-digit-limit.d.ts.map +1 -0
  45. package/dist/directives/v-permission.d.ts +3 -0
  46. package/dist/directives/v-permission.d.ts.map +1 -0
  47. package/dist/favicon.svg +13 -0
  48. package/dist/index.d.ts +53 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/persian.json +1 -0
  51. package/dist/plugins/mdi-icon.d.ts +16 -0
  52. package/dist/plugins/mdi-icon.d.ts.map +1 -0
  53. package/dist/services/apiService.d.ts +21 -0
  54. package/dist/services/apiService.d.ts.map +1 -0
  55. package/dist/services/axiosInstance.d.ts +11 -0
  56. package/dist/services/axiosInstance.d.ts.map +1 -0
  57. package/dist/stores/customizer.d.ts +47 -0
  58. package/dist/stores/customizer.d.ts.map +1 -0
  59. package/dist/stores/permissions.d.ts +47 -0
  60. package/dist/stores/permissions.d.ts.map +1 -0
  61. package/dist/style.css +5 -0
  62. package/dist/types/componentTypes/DataTableType.d.ts +14 -0
  63. package/dist/types/componentTypes/DataTableType.d.ts.map +1 -0
  64. package/dist/types/componentTypes/DataTableTypes.d.ts +120 -0
  65. package/dist/types/componentTypes/DataTableTypes.d.ts.map +1 -0
  66. package/dist/ui-kit.cjs.js +2 -0
  67. package/dist/ui-kit.cjs.js.map +1 -0
  68. package/dist/ui-kit.es.js +36840 -0
  69. package/dist/ui-kit.es.js.map +1 -0
  70. package/dist/utils/NationalCodeValidator.d.ts +4 -0
  71. package/dist/utils/NationalCodeValidator.d.ts.map +1 -0
  72. package/dist/utils/date-convertor.d.ts +5 -0
  73. package/dist/utils/date-convertor.d.ts.map +1 -0
  74. package/dist/utils/greetingUtils.d.ts +35 -0
  75. package/dist/utils/greetingUtils.d.ts.map +1 -0
  76. package/dist/utils/helpers/fetch-wrapper.d.ts +23 -0
  77. package/dist/utils/helpers/fetch-wrapper.d.ts.map +1 -0
  78. package/dist/utils/number-formatter.d.ts +16 -0
  79. package/dist/utils/number-formatter.d.ts.map +1 -0
  80. package/dist/validators/nationalCodeRule.d.ts +2 -0
  81. package/dist/validators/nationalCodeRule.d.ts.map +1 -0
  82. package/package.json +134 -0
  83. package/src/assets/fonts/A Massir Spray.ttf +0 -0
  84. package/src/assets/fonts/BYekan.ttf +0 -0
  85. package/src/assets/fonts/BYekan.woff +0 -0
  86. package/src/assets/fonts/BYekan.woff2 +0 -0
  87. package/src/assets/fonts/Dima Shekasteh 2 Free.ttf +0 -0
  88. package/src/assets/fonts/Dima Shekasteh Free Regular.ttf +0 -0
  89. package/src/assets/fonts/IRANSansWeb.ts +1 -0
  90. package/src/assets/fonts/IRANSansWeb.ttf +0 -0
  91. package/src/assets/fonts/IRANSansXBlack.ttf +0 -0
  92. package/src/assets/fonts/IRANSansXBold.ttf +0 -0
  93. package/src/assets/fonts/IRANSansXDemiBold.ttf +0 -0
  94. package/src/assets/fonts/IRANSansXExtraBold.ttf +0 -0
  95. package/src/assets/fonts/IRANSansXLight.ttf +0 -0
  96. package/src/assets/fonts/IRANSansXMedium.ttf +0 -0
  97. package/src/assets/fonts/IRANSansXRegular.ttf +0 -0
  98. package/src/assets/fonts/IRANSansXThin.ttf +0 -0
  99. package/src/assets/fonts/IRANSansXUltraLight.ttf +0 -0
  100. package/src/assets/fonts/IranNastaliq.ttf +0 -0
  101. package/src/assets/fonts/Vazir-Medium-FD.ttf +0 -0
  102. package/src/assets/fonts/Vazir-Medium-FD.woff +0 -0
  103. package/src/assets/fonts/Vazir-Medium-FD.woff2 +0 -0
  104. package/src/assets/fonts/Vazir-Regular-FD.eot +0 -0
  105. package/src/assets/fonts/kalamehBold.woff +0 -0
  106. package/src/assets/fonts/kalamehBold.woff2 +0 -0
  107. package/src/assets/fonts/kalamehHeavy.woff +0 -0
  108. package/src/assets/fonts/kalamehHeavy.woff2 +0 -0
  109. package/src/assets/fonts/kalamehLight.woff +0 -0
  110. package/src/assets/fonts/kalamehLight.woff2 +0 -0
  111. package/src/assets/fonts/kalamehRegular.woff +0 -0
  112. package/src/assets/fonts/kalamehRegular.woff2 +0 -0
  113. package/src/assets/images/auth/social-google.svg +6 -0
  114. package/src/assets/images/favicon.svg +18 -0
  115. package/src/assets/images/icons/icon-card.svg +5 -0
  116. package/src/assets/images/logos/logo.svg +12 -0
  117. package/src/assets/images/logos/logolight.svg +12 -0
  118. package/src/assets/images/maintenance/img-error-bg.svg +34 -0
  119. package/src/assets/images/maintenance/img-error-blue.svg +43 -0
  120. package/src/assets/images/maintenance/img-error-purple.svg +42 -0
  121. package/src/assets/images/maintenance/img-error-text.svg +27 -0
  122. package/src/assets/images/profile/profile-user-account-svgrepo-com.svg +12 -0
  123. package/src/assets/images/profile/user-round.svg +15 -0
  124. package/src/assets/images/template/template-01.ts +1 -0
  125. package/src/assets/images/vectors/colorized-bg.svg +40 -0
  126. package/src/assets/images/vectors/logo_stroke_1px.svg +26 -0
  127. package/src/assets/images/vectors/logo_stroke_2px.svg +26 -0
  128. package/src/assets/scss/components/_approval-sections.scss +75 -0
  129. package/src/assets/styles/fonts.scss +77 -0
  130. package/src/components/Loading.vue +88 -0
  131. package/src/components/common/AppStepper.vue +139 -0
  132. package/src/components/shared/BaseBreadcrumb.vue +55 -0
  133. package/src/components/shared/BaseIcon.vue +27 -0
  134. package/src/components/shared/ConfirmDialog.vue +72 -0
  135. package/src/components/shared/CustomAutocomplete.vue +306 -0
  136. package/src/components/shared/CustomDataTable.vue +1859 -0
  137. package/src/components/shared/DescriptionInput.vue +204 -0
  138. package/src/components/shared/DownloadButton.vue +169 -0
  139. package/src/components/shared/MoneyInput.vue +105 -0
  140. package/src/components/shared/PdfViewer.vue +645 -0
  141. package/src/components/shared/ShamsiDatePicker.vue +444 -0
  142. package/src/components/shared/UiChildCard.vue +17 -0
  143. package/src/components/shared/UiParentCard.vue +21 -0
  144. package/src/components/shared/VPriceTextField.vue +136 -0
  145. package/src/composables/useDataTable.ts +152 -0
  146. package/src/composables/usePermissions.ts +90 -0
  147. package/src/composables/useRouteGuard.ts +36 -0
  148. package/src/composables/useTableActions.ts +207 -0
  149. package/src/composables/useTableHeaders.ts +172 -0
  150. package/src/composables/useTableSelection.ts +201 -0
  151. package/src/constants/enums/approval.ts +13 -0
  152. package/src/constants/enums/booleanEnum.ts +11 -0
  153. package/src/constants/enums/contractType.ts +11 -0
  154. package/src/constants/enums/lcProductType.ts +21 -0
  155. package/src/constants/enums/repaymentType.ts +11 -0
  156. package/src/directives/v-digit-limit.ts +15 -0
  157. package/src/directives/v-permission.ts +31 -0
  158. package/src/features/index.ts +48 -0
  159. package/src/index.ts +119 -0
  160. package/src/plugins/key-clock.ts +39 -0
  161. package/src/plugins/mdi-icon.ts +31 -0
  162. package/src/plugins/vuetify.ts +74 -0
  163. package/src/scss/_override.scss +72 -0
  164. package/src/scss/_variables.scss +124 -0
  165. package/src/scss/components/_VButtons.scss +23 -0
  166. package/src/scss/components/_VCard.scss +20 -0
  167. package/src/scss/components/_VCustomDataTable.scss +282 -0
  168. package/src/scss/components/_VField.scss +9 -0
  169. package/src/scss/components/_VInput.scss +17 -0
  170. package/src/scss/components/_VNavigationDrawer.scss +3 -0
  171. package/src/scss/components/_VShadow.scss +3 -0
  172. package/src/scss/components/_VStepper.scss +235 -0
  173. package/src/scss/components/_VTabs.scss +11 -0
  174. package/src/scss/components/_VTextField.scss +40 -0
  175. package/src/scss/components/_approval.scss +128 -0
  176. package/src/scss/layout/_container.scss +147 -0
  177. package/src/scss/layout/_sidebar.scss +138 -0
  178. package/src/scss/layout/_topbar.scss +39 -0
  179. package/src/scss/pages/_dashboards.scss +97 -0
  180. package/src/scss/style.scss +21 -0
  181. package/src/services/apiService.ts +59 -0
  182. package/src/services/axiosInstance.ts +14 -0
  183. package/src/stores/customizer.ts +55 -0
  184. package/src/stores/permissions.ts +237 -0
  185. package/src/theme/darkThemes/DarkModernTheme.ts +54 -0
  186. package/src/theme/darkThemes/DarkOrangeTheme.ts +53 -0
  187. package/src/theme/darkThemes/DarkPurpleTheme.ts +54 -0
  188. package/src/theme/darkThemes/DarkRedTheme.ts +54 -0
  189. package/src/theme/darkThemes/DarkSilverTheme.ts +53 -0
  190. package/src/theme/darkThemes/DarkSteelTealGreen.ts +53 -0
  191. package/src/theme/darkThemes/DarkTealTheme.ts +52 -0
  192. package/src/theme/lightThemes/ModernTheme.ts +55 -0
  193. package/src/theme/lightThemes/OrangeTheme.ts +54 -0
  194. package/src/theme/lightThemes/PurpleTheme.ts +54 -0
  195. package/src/theme/lightThemes/RedTheme.ts +55 -0
  196. package/src/theme/lightThemes/SilverTheme.ts +55 -0
  197. package/src/theme/lightThemes/SteelTealGreen.ts +54 -0
  198. package/src/theme/lightThemes/TealTheme.ts +54 -0
  199. package/src/types/approval/approvalType.ts +473 -0
  200. package/src/types/cartable/cartableTypes.ts +169 -0
  201. package/src/types/componentTypes/DataTableType.ts +14 -0
  202. package/src/types/componentTypes/DataTableTypes.ts +130 -0
  203. package/src/types/enums/global.ts +267 -0
  204. package/src/types/jalaali-js.d.ts +6 -0
  205. package/src/types/models/Base.ts +4 -0
  206. package/src/types/models/env.d.ts +10 -0
  207. package/src/types/models/person.ts +13 -0
  208. package/src/types/models/userInfo.ts +29 -0
  209. package/src/types/preApproval/preApprovalTypes.ts +67 -0
  210. package/src/types/shims-tabler-icons.d.ts +58 -0
  211. package/src/types/themeTypes/ThemeType.ts +47 -0
  212. package/src/types/vue-apexcharts.d.ts +1 -0
  213. package/src/types/vue3-print-nb.d.ts +1 -0
  214. package/src/types/vue_tabler_icon.d.ts +10 -0
  215. package/src/utils/NationalCodeValidator.ts +33 -0
  216. package/src/utils/date-convertor.ts +40 -0
  217. package/src/utils/greetingUtils.ts +97 -0
  218. package/src/utils/helpers/fake-backend.ts +68 -0
  219. package/src/utils/helpers/fetch-wrapper.ts +86 -0
  220. package/src/utils/number-formatter.ts +33 -0
  221. package/src/validators/nationalCodeRule.ts +6 -0
@@ -0,0 +1,235 @@
1
+ // Variables
2
+ $stepper-header-height: 80px;
3
+ $stepper-badge-size: 25px;
4
+ $stepper-connector-width: 35px;
5
+ $stepper-border-radius: 12px;
6
+ $stepper-shadow: 0 2px 8px rgba(0,0,0,0.04);
7
+
8
+ // Root container
9
+ .app-stepper-root {
10
+ width: 100%;
11
+ display: flex;
12
+ flex-direction: column;
13
+ direction: rtl;
14
+ }
15
+
16
+ // Header section
17
+ .app-stepper-header-card {
18
+ background: rgb(var(--v-theme-surface));
19
+ border: 1px solid rgb(var(--v-theme-borderLight));
20
+ border-radius: $stepper-border-radius;
21
+ box-shadow: $stepper-shadow;
22
+ margin-bottom: 20px;
23
+ padding: 0 8px;
24
+ width: 100%;
25
+ min-height: $stepper-header-height;
26
+ display: flex;
27
+ align-items: center;
28
+ justify-content: stretch;
29
+ }
30
+
31
+ .app-stepper-header {
32
+ display: flex;
33
+ justify-content: flex-start;
34
+ align-items: center;
35
+ font-size: 16px;
36
+ flex-wrap: nowrap;
37
+ padding: 17px 0;
38
+ overflow-x: auto;
39
+ white-space: nowrap;
40
+ scrollbar-width: thin;
41
+ scrollbar-color: #bdbdbd #f5f5f5;
42
+ width: 100%;
43
+
44
+ // Scrollbar styling
45
+ &::-webkit-scrollbar {
46
+ height: 6px;
47
+ }
48
+
49
+ &::-webkit-scrollbar-thumb {
50
+ background: rgb(var(--v-theme-borderLight));
51
+ border-radius: 3px;
52
+ }
53
+
54
+ &::-webkit-scrollbar-track {
55
+ background: rgb(var(--v-theme-lightprimary));
56
+ }
57
+ }
58
+
59
+ // Step styling
60
+ .app-stepper-step {
61
+ display: flex;
62
+ align-items: center;
63
+ position: relative;
64
+ padding: 0 8px;
65
+ cursor: pointer;
66
+ transition: background 0.2s;
67
+ border-radius: 4px;
68
+
69
+ // Step states
70
+ &.active {
71
+ .app-stepper-title {
72
+ color: rgb(var(--v-theme-secondary));
73
+ font-weight: 700;
74
+ text-shadow: 0 1px 4px rgba(var(--v-theme-secondary), 0.08);
75
+ }
76
+ }
77
+
78
+ &.resolved {
79
+ .app-stepper-title {
80
+ color: rgb(var(--v-theme-success));
81
+ font-weight: 500;
82
+ opacity: 0.85;
83
+ }
84
+ }
85
+
86
+ &.pending {
87
+ .app-stepper-title {
88
+ color: rgb(var(--v-theme-lightText));
89
+ font-weight: 400;
90
+ }
91
+ }
92
+ }
93
+
94
+ // Badge styling
95
+ .app-stepper-badge {
96
+ display: flex;
97
+ align-items: center;
98
+ justify-content: center;
99
+ width: $stepper-badge-size;
100
+ height: $stepper-badge-size;
101
+ border-radius: 50%;
102
+ margin-left: 6px;
103
+ margin-right: 6px;
104
+ font-size: 14px;
105
+ background: rgb(var(--v-theme-borderLight));
106
+ color: rgb(var(--v-theme-lightText));
107
+ border: 2px solid rgb(var(--v-theme-borderLight));
108
+ transition: background 0.3s, color 0.3s, border 0.3s;
109
+ }
110
+
111
+ // Badge states
112
+ .badge-resolved {
113
+ background: rgb(var(--v-theme-success));
114
+ color: #fff;
115
+ border-color: rgb(var(--v-theme-success));
116
+ }
117
+
118
+ .badge-active {
119
+ background: rgb(var(--v-theme-surface));
120
+ color: rgb(var(--v-theme-secondary));
121
+ border-color: rgb(var(--v-theme-secondary));
122
+ box-shadow: 0 0 0 2px rgba(var(--v-theme-secondary), 0.2);
123
+ }
124
+
125
+ .badge-pending {
126
+ background: rgb(var(--v-theme-borderLight));
127
+ color: rgb(var(--v-theme-lightText));
128
+ border-color: rgb(var(--v-theme-borderLight));
129
+ }
130
+
131
+ // Title styling
132
+ .app-stepper-title {
133
+ font-size: 15px;
134
+ font-weight: 500;
135
+ margin-left: 2px;
136
+ margin-right: 2px;
137
+ transition: color 0.3s, font-weight 0.3s;
138
+ display: flex;
139
+ align-items: center;
140
+ min-width: 60px;
141
+ }
142
+
143
+ // Connector styling
144
+ .app-stepper-connector {
145
+ display: inline-block;
146
+ width: $stepper-connector-width;
147
+ height: 3px;
148
+ background: rgb(var(--v-theme-borderLight));
149
+ margin: 0 12px 0 0;
150
+ border-radius: 2px;
151
+ transition: background 0.3s;
152
+
153
+ &.active {
154
+ background: rgb(var(--v-theme-secondary));
155
+ }
156
+
157
+ &.resolved {
158
+ background: rgb(var(--v-theme-success));
159
+ }
160
+ }
161
+
162
+ // Content section
163
+ .app-stepper-content {
164
+ flex: 1 1 0;
165
+ width: 100%;
166
+ overflow-y: auto;
167
+ min-height: 60vh;
168
+ }
169
+
170
+ // Actions section
171
+ .app-stepper-actions {
172
+ width: 100%;
173
+ display: flex;
174
+ flex-direction: row-reverse;
175
+ justify-content: space-between;
176
+ align-items: center;
177
+ gap: 12px;
178
+ padding: 20px 16px 16px 16px;
179
+ background: rgb(var(--v-theme-surface));
180
+ border-top: 1px solid rgb(var(--v-theme-borderLight));
181
+ border-radius: 0 0 $stepper-border-radius $stepper-border-radius;
182
+ box-shadow: 0 2px 8px rgba(0,0,0,0.02);
183
+ position: relative;
184
+ z-index: 2;
185
+ }
186
+
187
+ // Button styling
188
+ .app-stepper-btn {
189
+ min-width: 110px;
190
+ padding: 8px 18px;
191
+ font-size: 15px;
192
+ border: none;
193
+ border-radius: 6px;
194
+ background: rgb(var(--v-theme-lightprimary));
195
+ color: rgb(var(--v-theme-darkText));
196
+ cursor: pointer;
197
+ transition: background 0.2s, color 0.2s;
198
+ font-weight: 500;
199
+ box-shadow: 0 1px 2px rgba(0,0,0,0.03);
200
+
201
+ &:disabled {
202
+ background: rgb(var(--v-theme-borderLight));
203
+ color: rgb(var(--v-theme-lightText));
204
+ cursor: not-allowed;
205
+ }
206
+
207
+ &-submit {
208
+ background: rgb(var(--v-theme-success));
209
+ color: #fff;
210
+
211
+ &.loading {
212
+ opacity: 0.7;
213
+ pointer-events: none;
214
+ }
215
+ }
216
+
217
+ &-custom {
218
+ background: rgb(var(--v-theme-secondary));
219
+ color: #fff;
220
+ }
221
+ }
222
+
223
+ // Responsive styles
224
+ @media (max-width: 600px) {
225
+ .app-stepper-actions {
226
+ flex-direction: column;
227
+ gap: 10px;
228
+ padding: 16px 8px 8px 8px;
229
+ }
230
+
231
+ .app-stepper-btn {
232
+ width: 100%;
233
+ min-width: 0;
234
+ }
235
+ }
@@ -0,0 +1,11 @@
1
+ .theme-tab {
2
+ &.v-tabs {
3
+ .v-tab {
4
+ border-radius: $border-radius-root !important;
5
+ min-width: auto !important;
6
+ &.v-tab-item--selected {
7
+ background: rgb(var(--v-theme-primary));
8
+ }
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,40 @@
1
+ .v-text-field input {
2
+ font-size: 0.85rem;
3
+ }
4
+
5
+ /* Smaller font size for outlined inputs */
6
+ .v-field--variant-outlined .v-field__input {
7
+ font-size: 0.85rem;
8
+ }
9
+
10
+ .v-field--variant-outlined .v-label {
11
+ font-size: 0.85rem;
12
+ }
13
+ .v-input--density-default {
14
+ .v-field__input {
15
+ min-height: 51px;
16
+ }
17
+ }
18
+
19
+ .v-field__outline {
20
+ color: rgb(var(--v-theme-inputBorder));
21
+ }
22
+ .inputWithbg {
23
+ .v-field--variant-outlined {
24
+ background-color: rgba(0, 0, 0, 0.025);
25
+ border-radius: 12px !important;
26
+ }
27
+ }
28
+
29
+ /* Hide spinner buttons in number inputs */
30
+ input[type="number"]::-webkit-inner-spin-button,
31
+ input[type="number"]::-webkit-outer-spin-button {
32
+ -webkit-appearance: none;
33
+ margin: 0;
34
+ }
35
+
36
+ /* Firefox */
37
+ input[type="number"] {
38
+ -moz-appearance: textfield;
39
+ appearance: textfield;
40
+ }
@@ -0,0 +1,128 @@
1
+ // Global approval section styles
2
+ .approval-section {
3
+ background: rgb(var(--v-theme-surface));
4
+ border: 1px solid rgb(var(--v-theme-borderLight));
5
+ border-radius: 10px;
6
+ padding: 25px 15px;
7
+ margin-bottom: 10px;
8
+ width: 100%;
9
+ max-width: 100%;
10
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
11
+
12
+ .section-header {
13
+ display: flex;
14
+ justify-content: space-between;
15
+ align-items: center;
16
+ margin-bottom: 1.5rem;
17
+ }
18
+
19
+ .section-title {
20
+ font-size: 1.25rem;
21
+ font-weight: 600;
22
+ color: rgb(var(--v-theme-darkText));
23
+ }
24
+
25
+ .group-title {
26
+ color: rgb(var(--v-theme-darkText));
27
+ font-weight: 700;
28
+ margin-bottom: 20px;
29
+ font-size: 1.2rem;
30
+ padding-bottom: 8px;
31
+ border-bottom: 2px solid rgb(var(--v-theme-primary));
32
+ display: inline-block;
33
+ }
34
+
35
+ .section-content {
36
+ min-height: 300px;
37
+ }
38
+
39
+ .approval-table {
40
+ width: 100%;
41
+ max-width: 100%;
42
+ border-radius: 10px;
43
+ padding: 15px;
44
+ }
45
+ }
46
+
47
+ // Theme-aware table styles
48
+ :deep(th) {
49
+ background: rgb(var(--v-theme-lightprimary)) !important;
50
+ color: rgb(var(--v-theme-darkText)) !important;
51
+ font-weight: 600;
52
+ }
53
+
54
+ :deep(.v-data-table__wrapper) {
55
+ background: rgb(var(--v-theme-surface));
56
+ border-radius: 8px;
57
+ overflow: hidden;
58
+ border: 1px solid rgb(var(--v-theme-borderLight));
59
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
60
+ }
61
+
62
+ :deep(.v-data-table__tbody tr:nth-child(even)) {
63
+ background: rgb(var(--v-theme-lightprimary)) !important;
64
+ }
65
+
66
+ :deep(.v-data-table__tbody tr:nth-child(odd)) {
67
+ background: rgb(var(--v-theme-surface)) !important;
68
+ }
69
+
70
+ :deep(.v-data-table__tbody tr:hover) {
71
+ background: rgb(var(--v-theme-lightsecondary)) !important;
72
+ }
73
+
74
+ // Theme-aware form field styles
75
+ :deep(.v-text-field .v-field) {
76
+ background: rgb(var(--v-theme-surface));
77
+ border-color: rgb(var(--v-theme-borderLight));
78
+ transition: border-color 0.2s ease;
79
+ }
80
+
81
+ :deep(.v-text-field .v-field:hover) {
82
+ border-color: rgb(var(--v-theme-secondary));
83
+ }
84
+
85
+ :deep(.v-select .v-field) {
86
+ background: rgb(var(--v-theme-surface));
87
+ border-color: rgb(var(--v-theme-borderLight));
88
+ transition: border-color 0.2s ease;
89
+ }
90
+
91
+ :deep(.v-select .v-field:hover) {
92
+ border-color: rgb(var(--v-theme-secondary));
93
+ }
94
+
95
+ // Theme-aware button styles
96
+ :deep(.v-btn--variant-outlined) {
97
+ border-color: rgb(var(--v-theme-borderLight));
98
+ color: rgb(var(--v-theme-darkText));
99
+ }
100
+
101
+ :deep(.v-btn--variant-outlined:hover) {
102
+ background: rgb(var(--v-theme-lightsecondary));
103
+ }
104
+
105
+ // Utility classes
106
+ .customer-search-btn {
107
+ display: flex;
108
+ justify-content: center;
109
+ align-items: center;
110
+ }
111
+
112
+ .gap-2 {
113
+ gap: 8px;
114
+ }
115
+
116
+ .gap-2 {
117
+ gap: 8px;
118
+ }
119
+
120
+ @media (forced-colors: active) {
121
+ .v-btn {
122
+ forced-color-adjust: none;
123
+ }
124
+
125
+ .v-text-field {
126
+ forced-color-adjust: none;
127
+ }
128
+ }
@@ -0,0 +1,147 @@
1
+ html {
2
+ overflow-y: auto;
3
+ }
4
+
5
+ :root {
6
+ --font-theme: 'vazir', sans-serif; /* Default font */
7
+ }
8
+ .v-tab {
9
+ height: calc(30vh);
10
+ }
11
+ @media (max-width: 1279px) {
12
+ .v-main {
13
+ margin: 0 10px;
14
+ }
15
+ }
16
+ .spacer {
17
+ padding: 100px 0;
18
+ }
19
+ @media (max-width: 800px) {
20
+ .spacer {
21
+ padding: 40px 0;
22
+ }
23
+ }
24
+
25
+ .page-wrapper {
26
+ min-height: calc(100vh - 100px);
27
+ padding: 15px;
28
+ border-radius: $border-radius-root;
29
+ background: rgb(var(--v-theme-containerBg));
30
+ }
31
+
32
+ .customizer-loading {
33
+ backdrop-filter: blur(10px);
34
+ }
35
+ $sizes: (
36
+ 'display-1': 44px,
37
+ 'display-2': 40px,
38
+ 'display-3': 30px,
39
+ 'h1': 36px,
40
+ 'h2': 30px,
41
+ 'h3': 21px,
42
+ 'h4': 18px,
43
+ 'h5': 16px,
44
+ 'h6': 14px,
45
+ 'text-8': 8px,
46
+ 'text-10': 10px,
47
+ 'text-13': 13px,
48
+ 'text-18': 18px,
49
+ 'text-20': 20px,
50
+ 'text-24': 24px,
51
+ 'body-text-1': 10px
52
+ );
53
+
54
+ @each $pixel, $size in $sizes {
55
+ .#{$pixel} {
56
+ font-size: $size;
57
+ line-height: $size + 10;
58
+ }
59
+ }
60
+
61
+ .customizer-btn {
62
+ position: fixed;
63
+ top: 9%;
64
+ left: 0;
65
+ border-radius: 0 20px 20px 20px ;
66
+
67
+ }
68
+
69
+ .text-white {
70
+ color: rgb(255, 255, 255) !important;
71
+ }
72
+
73
+ // font family
74
+
75
+ @font-face {
76
+ font-family: 'yekanLight';
77
+ src: url('/src/assets/fonts/BYekan.woff') format('woff');
78
+ font-weight: 300;
79
+ font-style: normal;
80
+ }
81
+ @font-face {
82
+ font-family: 'iranSans';
83
+ src: url('/src/assets/fonts/IRANSansWeb.ttf') format('truetype');
84
+ font-weight: 300;
85
+ font-style: normal;
86
+ }
87
+ @font-face {
88
+ font-family: 'kalamehLight';
89
+ src: url('/src/assets/fonts/kalamehRegular.woff') format('woff');
90
+ font-weight: 300;
91
+ font-style: normal;
92
+ }
93
+ @font-face {
94
+ font-family: 'vazir';
95
+ src: url('/src/assets/fonts/Vazir-Medium-FD.woff') format('woff');
96
+ font-weight: 300;
97
+ font-style: normal;
98
+ }
99
+ @font-face {
100
+ font-family: 'IranNastaliq';
101
+ src: url('/src/assets/fonts/IranNastaliq.ttf') format('truetype');
102
+ font-weight: 300;
103
+ font-style: normal;
104
+ }
105
+ @font-face {
106
+ font-family: 'Massir';
107
+ src: url('/src/assets/fonts/A Massir Spray.ttf') format('truetype');
108
+ font-weight: 300;
109
+ font-style: normal;
110
+ }
111
+ body {
112
+ font-family: var(--font-theme), sans-serif;
113
+ }
114
+
115
+ @keyframes blink {
116
+ 50% {
117
+ opacity: 0;
118
+ }
119
+ 100% {
120
+ opacity: 1;
121
+ }
122
+ }
123
+ @keyframes bounce {
124
+ 0%,
125
+ 20%,
126
+ 53%,
127
+ to {
128
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
129
+ transform: translateZ(0);
130
+ }
131
+ 40%,
132
+ 43% {
133
+ animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
134
+ transform: translate3d(0, -5px, 0);
135
+ }
136
+ 70% {
137
+ animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
138
+ transform: translate3d(0, -7px, 0);
139
+ }
140
+ 80% {
141
+ transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
142
+ transform: translateZ(0);
143
+ }
144
+ 90% {
145
+ transform: translate3d(0, -2px, 0);
146
+ }
147
+ }
@@ -0,0 +1,138 @@
1
+ /* This is for the logo */
2
+ .leftSidebar {
3
+ border: 0;
4
+ box-shadow: none !important;
5
+
6
+ .logo {
7
+ padding-left: 7px;
8
+ }
9
+ }
10
+
11
+ /* This is for the Vertical sidebar */
12
+ .scrollnavbar {
13
+ height: calc(100vh - 100px);
14
+ overflow-y: auto;
15
+ overflow-x: hidden;
16
+
17
+ .smallCap {
18
+ padding: 0 0 0 4px !important;
19
+ font-size: 0.875rem;
20
+ font-weight: 500;
21
+ }
22
+
23
+ .v-list {
24
+ color: rgb(var(--v-theme-lightText));
25
+ }
26
+
27
+ /* General Menu css */
28
+ .v-list-group__items .v-list-item,
29
+ .v-list-item {
30
+ border-radius: $border-radius-root;
31
+ padding-inline-start: calc(12px + var(--indent-padding) / 2) !important;
32
+ transition: background-color 0.3s ease, color 0.3s ease; // ✅ Smooth transitions
33
+
34
+ &:hover {
35
+ color: rgb(var(--v-theme-secondary));
36
+ background-color: rgba(var(--v-theme-secondary), 0.05); // ✅ Smooth background on hover
37
+ }
38
+
39
+ .v-list-item__prepend {
40
+ margin-inline-end: 13px;
41
+ }
42
+
43
+ .v-list-item__append {
44
+ font-size: 0.875rem;
45
+ }
46
+
47
+ .v-list-item-title {
48
+ font-size: 0.875rem;
49
+ }
50
+ }
51
+
52
+ .leftPadding {
53
+ margin-left: 4px;
54
+ }
55
+
56
+ /* This is for the dropdown */
57
+ .v-list {
58
+ .v-list-item--active {
59
+ transition: background-color 0.8s ease, color 0.8s ease; // ✅ Smooth transitions
60
+ background-color: rgba(var(--v-theme-secondary), 0.05); // ✅ Active background color
61
+ .v-list-item-title {
62
+ font-weight: 500;
63
+ }
64
+ }
65
+
66
+
67
+
68
+ .v-list-group {
69
+ background-color: rgba(var(--v-theme-secondary), 0.02);
70
+ .v-list-item:hover > .v-list-item__overlay,
71
+ .v-list-item--active > .v-list-item__overlay {
72
+ background-color: rgba(var(--v-theme-secondary), 0.05);
73
+ transition: background-color 5.8s ease-in-out, color 5.8s ease-in-out; // ✅ Smooth transitions
74
+ }
75
+
76
+ .v-list-item:focus-visible > .v-list-item__overlay {
77
+ opacity: 0;
78
+ }
79
+ }
80
+
81
+ > .v-list-group {
82
+ position: relative;
83
+
84
+ > .v-list-item--active,
85
+ > .v-list-item:hover {
86
+ background: rgba(var(--v-theme-secondary), 0.05); // ✅ Use rgba for smoother feeling
87
+ }
88
+
89
+ &:after {
90
+ content: '';
91
+ position: absolute;
92
+ left: 21px;
93
+ top: 46px;
94
+ height: calc(100% - 46px);
95
+ width: 1px;
96
+ opacity: 1;
97
+ background: rgba(var(--v-theme-secondary), 0.15);
98
+ }
99
+ }
100
+ }
101
+ }
102
+
103
+ /* When sidebar is collapsed (rail mode) */
104
+ .v-navigation-drawer--rail {
105
+ .scrollnavbar .v-list .v-list-group__items,
106
+ .hide-menu {
107
+ opacity: 0;
108
+ }
109
+
110
+ .leftPadding {
111
+ margin-left: 0;
112
+ }
113
+ }
114
+
115
+ /* Mini Sidebar Hover Expand */
116
+ @media only screen and (min-width: 1170px) {
117
+ .mini-sidebar {
118
+ .logo {
119
+ width: 40px;
120
+ overflow: hidden;
121
+ }
122
+
123
+ .leftSidebar:hover {
124
+ box-shadow: $box-shadow !important;
125
+ }
126
+
127
+ .v-navigation-drawer--expand-on-hover:hover {
128
+ .logo {
129
+ width: 100%;
130
+ }
131
+
132
+ .v-list .v-list-group__items,
133
+ .hide-menu {
134
+ opacity: 1;
135
+ }
136
+ }
137
+ }
138
+ }