adata-ui 2.1.40-beta.1 → 2.1.40-beta.11
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.
- package/.claude/settings.local.json +19 -0
- package/components/elements/a-select-row/ASelectRowV2.vue +214 -0
- package/components/elements/button/AButtonV2.vue +112 -0
- package/components/elements/leave-note/ALeaveNote.vue +38 -17
- package/components/elements/segmented/ASegmentedV2.vue +58 -0
- package/components/elements/select/ASelectV2.vue +589 -0
- package/components/elements/show-more/AShowMoreV2.vue +26 -0
- package/components/elements/star-rating/AStarRating.vue +12 -4
- package/components/elements/status-badge-v2/StatusBadgeV2.vue +78 -0
- package/components/features/payment/process/PaymentKaspiQrSidePanel.vue +43 -27
- package/components/features/payment/process/PaymentKaspiRedirectSidePanel.vue +34 -23
- package/components/features/payment/process/PaymentMethodSidePanel.vue +61 -49
- package/components/features/payment/process/PaymentProcess.vue +6 -6
- package/components/features/payment/process/PaymentTopUpSidePanel.vue +44 -63
- package/components/forms/checkbox/ACheckboxV2.vue +229 -0
- package/components/forms/feedback-form/FeedbackForm.vue +8 -8
- package/components/forms/input/AInputV2.vue +542 -0
- package/components/forms/input/textarea/ATextareaV2.vue +248 -0
- package/components/forms/toggle/AToggleV2.vue +71 -0
- package/components/modals/AnotherDeviceModal.vue +22 -18
- package/components/modals/ApplicationAcceptedModal.vue +12 -15
- package/components/modals/ConnectingTariffModal.vue +13 -20
- package/components/modals/ContentNavigationModal.vue +77 -333
- package/components/modals/Insufficient-funds-modal.vue +18 -33
- package/components/modals/LimitReachedModal.vue +4 -3
- package/components/modals/NoAccessModal.vue +9 -11
- package/components/modals/PaymentMethodModal.vue +1 -1
- package/components/modals/ReportBugConfirmModal.vue +12 -10
- package/components/modals/ReportBugModal.vue +42 -36
- package/components/modals/Resend.vue +9 -10
- package/components/modals/SubmitApplicationModal.vue +27 -24
- package/components/modals/id/IdConfirmAccountOtpModal.vue +4 -9
- package/components/modals/id/IdLoginModal.vue +3 -8
- package/components/modals/id/IdModals.vue +23 -10
- package/components/modals/id/IdTwoFactorModal.vue +3 -8
- package/components/navigation/bottom-navigation/ABottomNavigation.vue +1 -1
- package/components/navigation/header/AHeader.vue +15 -19
- package/components/navigation/header/HeaderLink.vue +15 -21
- package/components/navigation/header/NavList.vue +8 -32
- package/components/navigation/header/ProductMenu.vue +52 -50
- package/components/navigation/pill-tabs/APillTabsV2.vue +134 -0
- package/components/overlays/modal/AModalV2.vue +391 -0
- package/composables/useAccessTokenCookie.ts +25 -0
- package/composables/useChipOverflow.ts +92 -0
- package/composables/useHeaderNavigationLinks.ts +53 -23
- package/icons/arrow/arrow-right.vue +14 -0
- package/icons/briefcase.vue +14 -0
- package/icons/car-side.vue +16 -0
- package/icons/cart.vue +15 -0
- package/icons/download-rounded.vue +15 -0
- package/icons/shield-verified.vue +14 -0
- package/lang/en.ts +35 -4
- package/lang/kk.ts +36 -5
- package/lang/ru.ts +37 -6
- package/package.json +1 -1
- package/shared/constans/pages.ts +8 -2
|
@@ -1,355 +1,99 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
import type { Component } from 'vue'
|
|
3
|
+
import { useCurrentModule } from '#adata-ui/composables/projectState'
|
|
4
|
+
import { useHeaderNavigationLinks } from '#adata-ui/composables/useHeaderNavigationLinks'
|
|
2
5
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import IconLink from "#adata-ui/icons/link-chain.vue";
|
|
8
|
-
import IconUsers from "#adata-ui/icons/users.vue";
|
|
9
|
-
import IconGlobe from "#adata-ui/icons/globe.vue";
|
|
10
|
-
import IconBlock from "#adata-ui/icons/block.vue";
|
|
11
|
-
import IconDollar from "#adata-ui/icons/currency/currency-dollar.vue";
|
|
12
|
-
import IconDocument from "#adata-ui/icons/hdocument.vue";
|
|
13
|
-
import IconArrowCircle from "#adata-ui/icons/arrow/arrow-circle-down.vue";
|
|
14
|
-
import IconWork from "#adata-ui/icons/work-bag.vue";
|
|
15
|
-
import IconFile from "#adata-ui/icons/file/file.vue";
|
|
16
|
-
import IconCheck from "#adata-ui/icons/hcheck.vue";
|
|
17
|
-
import IconCheckCircle from "#adata-ui/icons/check/check-circle.vue";
|
|
18
|
-
import IconCar from "#adata-ui/icons/car.vue";
|
|
19
|
-
import IconTruck from "#adata-ui/icons/truck.vue";
|
|
20
|
-
import IconArrowGraph from "#adata-ui/icons/arrow/arrow-graph-up.vue";
|
|
21
|
-
import IconCompany from "#adata-ui/icons/company.vue";
|
|
22
|
-
import IconMedal from "#adata-ui/icons/medal.vue";
|
|
23
|
-
import IconProfile from "#adata-ui/icons/profile.vue";
|
|
24
|
-
import Connections from "#adata-ui/icons/sviazi.vue";
|
|
25
|
-
import {useCurrentModule} from "#adata-ui/composables/projectState";
|
|
26
|
-
import IconCalc from '#adata-ui/icons/calculator.vue'
|
|
27
|
-
import { buildLocalizedUrl } from '#adata-ui/utils/localizedNavigation'
|
|
28
|
-
import {
|
|
29
|
-
AIconAkimat,
|
|
30
|
-
AIconCurrencyTenge,
|
|
31
|
-
AIconExcelIcon,
|
|
32
|
-
AIconFiles, AIconSearch,
|
|
33
|
-
AIconUsers,
|
|
34
|
-
AIconWarningTriangle
|
|
35
|
-
} from '#components'
|
|
36
|
-
import MapPinRect from '#adata-ui/icons/map/map-pin-rect.vue'
|
|
37
|
-
import ChartBar from '#adata-ui/icons/chart-bar.vue'
|
|
38
|
-
import Bank from '#adata-ui/icons/bank.vue'
|
|
39
|
-
import { useUrls } from '#adata-ui/composables/useUrls'
|
|
40
|
-
import MapPaper from '#adata-ui/icons/map-paper.vue'
|
|
41
|
-
import AiAssistant from '#adata-ui/icons/ai-assistant.vue'
|
|
42
|
-
import Tasks from '#adata-ui/icons/tasks.vue'
|
|
43
|
-
import HotLine from '#adata-ui/icons/hot-line.vue'
|
|
44
|
-
import Sanctions from '#adata-ui/icons/sanctions.vue'
|
|
45
|
-
import CheckSb from '#adata-ui/icons/check-sb.vue'
|
|
46
|
-
type Emits = {
|
|
47
|
-
(e: 'pushMain'): void
|
|
6
|
+
interface NavItem {
|
|
7
|
+
title: string
|
|
8
|
+
icon: Component
|
|
9
|
+
to: string
|
|
48
10
|
}
|
|
49
|
-
const isOpen = ref(false)
|
|
50
|
-
const tab = ref(useCurrentModule().value)
|
|
51
|
-
const { myLayer }: any = useAppConfig()
|
|
52
|
-
const urls = useUrls()
|
|
53
11
|
|
|
54
|
-
|
|
12
|
+
interface Emits {
|
|
13
|
+
(e: 'pushMain'): void
|
|
14
|
+
}
|
|
55
15
|
const emits = defineEmits<Emits>()
|
|
56
|
-
const mode = myLayer.mode
|
|
57
|
-
|
|
58
|
-
const tabOptions = [
|
|
59
|
-
{
|
|
60
|
-
name: 'header.products.counterparties.label',
|
|
61
|
-
key: 'pk',
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
name: 'header.products.fines.label',
|
|
65
|
-
key: 'fines',
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
name: 'header.products.jobs.label',
|
|
69
|
-
key: 'work',
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
name: 'header.products.fea.label',
|
|
73
|
-
key: 'fea',
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
name: 'header.products.tenders.label',
|
|
77
|
-
key: 'tenders',
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
name: 'header.products.edo.label',
|
|
81
|
-
key: 'edo',
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
name: 'header.products.compliance.label',
|
|
85
|
-
key: 'compliance',
|
|
86
|
-
},
|
|
87
16
|
|
|
88
|
-
|
|
89
|
-
name: 'header.products.analytics.label',
|
|
90
|
-
key: 'analytics',
|
|
91
|
-
},
|
|
17
|
+
const open = defineModel<boolean>({ default: false })
|
|
92
18
|
|
|
19
|
+
const { t } = useI18n()
|
|
20
|
+
const modules = useHeaderNavigationLinks()
|
|
93
21
|
|
|
22
|
+
const initialKey = useCurrentModule().value
|
|
23
|
+
const tab = ref<string>(
|
|
24
|
+
initialKey && modules.value.some(module => module.key === initialKey)
|
|
25
|
+
? initialKey
|
|
26
|
+
: (modules.value[0]?.key ?? 'pk'),
|
|
27
|
+
)
|
|
94
28
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
{
|
|
99
|
-
label: 'header.products.edo.label',
|
|
100
|
-
icon: AIconFiles,
|
|
101
|
-
link: urls.edo_docs,
|
|
102
|
-
}
|
|
103
|
-
],
|
|
104
|
-
pk: [
|
|
105
|
-
{
|
|
106
|
-
icon: IconSearch,
|
|
107
|
-
label: 'header.products.counterparties.items.counterparty.title',
|
|
108
|
-
link: urls.pk + PAGES.pk.main
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
icon: IconScales,
|
|
112
|
-
label: 'header.products.counterparties.items.compare.title',
|
|
113
|
-
link: myLayer.counterParty ? urls.pk + myLayer.counterParty + PAGES.pk.compare : urls.pk + PAGES.pk.compare
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
icon: IconLink,
|
|
117
|
-
label: 'header.products.counterparties.items.networks.title',
|
|
118
|
-
link: myLayer.counterParty ? urls.pk + myLayer.counterParty + '/search-connections/check' : urls.pk + PAGES.pk.connections
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
icon: IconUsers,
|
|
122
|
-
label: 'header.products.counterparties.items.wholesale.title',
|
|
123
|
-
link: myLayer.counterParty ? urls.pk + myLayer.counterParty + PAGES.pk.employees : urls.pk + PAGES.pk.employees
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
icon: IconGlobe,
|
|
127
|
-
label: 'header.products.counterparties.items.foreign.title',
|
|
128
|
-
link: urls.pk + PAGES.pk.foreign
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
icon: IconBlock,
|
|
132
|
-
label: 'header.products.counterparties.items.sanction.title',
|
|
133
|
-
link: myLayer.counterParty ? urls.pk + myLayer.counterParty + PAGES.pk.sanctions : urls.pk + PAGES.pk.sanctions
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
icon: IconDollar,
|
|
137
|
-
label: 'header.products.counterparties.items.offshore.title',
|
|
138
|
-
link: myLayer.counterParty ? urls.pk + myLayer.counterParty + PAGES.pk.offshore : urls.pk + PAGES.pk.offshore
|
|
139
|
-
},
|
|
140
|
-
// {
|
|
141
|
-
// icon: IconDocument,
|
|
142
|
-
// label: "Экспресс проверка",
|
|
143
|
-
// link: "#"
|
|
144
|
-
// },
|
|
145
|
-
{
|
|
146
|
-
icon: IconArrowCircle,
|
|
147
|
-
label: 'header.products.counterparties.items.unloading.title',
|
|
148
|
-
link: urls.pk + PAGES.pk.unload
|
|
149
|
-
}
|
|
150
|
-
],
|
|
151
|
-
work: [
|
|
152
|
-
{
|
|
153
|
-
icon: IconWork,
|
|
154
|
-
label: 'header.products.jobs.items.vacancies.title',
|
|
155
|
-
link: urls.work + PAGES.work.vacancy
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
icon: IconDocument,
|
|
159
|
-
label: 'header.products.jobs.items.resume.title',
|
|
160
|
-
link: urls.work + PAGES.work.summary
|
|
161
|
-
},
|
|
162
|
-
],
|
|
163
|
-
tenders: [
|
|
164
|
-
{
|
|
165
|
-
icon: AIconUsers,
|
|
166
|
-
label: t('header.products.tenders.items.customers.title'),
|
|
167
|
-
link: urls.zakupki + PAGES.tender.customers,
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
icon: AIconAkimat,
|
|
171
|
-
label: t('header.products.tenders.items.akimat.title'),
|
|
172
|
-
link: urls.zakupki + PAGES.tender.akimat,
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
icon: AIconWarningTriangle,
|
|
176
|
-
label: 'header.products.tenders.items.tru.title',
|
|
177
|
-
link: urls.zakupki + PAGES.tender.tru
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
icon: AIconCurrencyTenge,
|
|
181
|
-
label: 'header.products.tenders.items.price.title',
|
|
182
|
-
link: urls.zakupki + PAGES.tender.price
|
|
183
|
-
},
|
|
184
|
-
{
|
|
185
|
-
icon: AIconExcelIcon,
|
|
186
|
-
label: 'header.products.tenders.items.constructor.title',
|
|
187
|
-
link: urls.zakupki + PAGES.tender.constructor
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
icon: AIconSearch,
|
|
191
|
-
label: 'header.products.tenders.items.monitoring.title',
|
|
192
|
-
link: urls.tender
|
|
193
|
-
}
|
|
194
|
-
],
|
|
195
|
-
analytics: [
|
|
196
|
-
// {
|
|
197
|
-
// icon: IconSearch,
|
|
198
|
-
// label: 'header.products.analytics.items.clients.title',
|
|
199
|
-
// link: myLayer.analyticsUrl + PAGES.analytics.clients
|
|
200
|
-
// },
|
|
201
|
-
// {
|
|
202
|
-
// icon: IconCheck,
|
|
203
|
-
// label: 'header.products.analytics.items.procurement.title',
|
|
204
|
-
// link: urls.analyticsNew + PAGES.analytics.main
|
|
205
|
-
// },
|
|
206
|
-
{
|
|
207
|
-
icon: IconArrowGraph,
|
|
208
|
-
label: 'header.products.analytics.items.activity.title',
|
|
209
|
-
link: urls.analytics + PAGES.analytics.index
|
|
210
|
-
},
|
|
211
|
-
{
|
|
212
|
-
icon: IconCompany,
|
|
213
|
-
label: 'header.products.analytics.items.subjects.title',
|
|
214
|
-
link: urls.analytics + PAGES.analytics.business
|
|
215
|
-
},
|
|
216
|
-
{
|
|
217
|
-
icon: IconMedal,
|
|
218
|
-
label: 'header.products.analytics.items.rate.title',
|
|
219
|
-
link: urls.analytics + PAGES.analytics.rating
|
|
220
|
-
}
|
|
221
|
-
],
|
|
222
|
-
fines: [
|
|
223
|
-
{
|
|
224
|
-
icon: IconCheckCircle,
|
|
225
|
-
label: 'header.products.fines.items.fines.title',
|
|
226
|
-
link: urls.avto + PAGES.fines.main
|
|
227
|
-
},
|
|
228
|
-
{
|
|
229
|
-
icon: IconCar,
|
|
230
|
-
label: 'header.products.fines.items.auto.title',
|
|
231
|
-
link: urls.avto + PAGES.fines.avto
|
|
232
|
-
},
|
|
233
|
-
// {
|
|
234
|
-
// icon: IconTruck,
|
|
235
|
-
// label: 'header.products.fines.items.wholesaleAuto.title',
|
|
236
|
-
// link: myLayer.avtoUrl + PAGES.fines.bulk
|
|
237
|
-
// }
|
|
238
|
-
],
|
|
239
|
-
fea: [
|
|
240
|
-
{
|
|
241
|
-
label: 'header.products.fea.items.i.t',
|
|
242
|
-
icon: IconSearch,
|
|
243
|
-
link: `${urls.tnved}${PAGES.fea.t}`
|
|
244
|
-
},
|
|
245
|
-
{
|
|
246
|
-
label: 'header.products.fea.items.o.t',
|
|
247
|
-
icon: Connections,
|
|
248
|
-
link: `${urls.tnved}${PAGES.fea.o}`
|
|
249
|
-
},
|
|
250
|
-
{
|
|
251
|
-
label: 'header.products.fea.items.cp.t',
|
|
252
|
-
icon: IconFile,
|
|
253
|
-
link: `${urls.tnved}${PAGES.fea.cp}`
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
label: 'header.products.fea.items.ca.t',
|
|
257
|
-
icon: IconCalc,
|
|
258
|
-
link: `${urls.tnved}${PAGES.fea.ca}`
|
|
259
|
-
},
|
|
260
|
-
{
|
|
261
|
-
label: 'header.products.fea.items.tr.t',
|
|
262
|
-
icon: IconGlobe,
|
|
263
|
-
link: `${urls.tnved}${PAGES.fea.tr}`
|
|
264
|
-
},
|
|
265
|
-
{
|
|
266
|
-
label: 'header.products.fea.items.importerMap.t',
|
|
267
|
-
icon: MapPinRect,
|
|
268
|
-
link: `${urls.tnved}${PAGES.fea.importerMap}`
|
|
269
|
-
},
|
|
270
|
-
{
|
|
271
|
-
label: 'header.products.fea.items.containers.t',
|
|
272
|
-
icon: MapPaper,
|
|
273
|
-
link: `${urls.tnved}${PAGES.fea.containers}`
|
|
274
|
-
}
|
|
275
|
-
],
|
|
276
|
-
compliance: [
|
|
277
|
-
{
|
|
278
|
-
label: 'header.products.compliance.items.assistant.t',
|
|
279
|
-
icon: AiAssistant,
|
|
280
|
-
link: urls.compliancemain + PAGES.compliance.assistant
|
|
281
|
-
},
|
|
282
|
-
{
|
|
283
|
-
label: 'header.products.compliance.items.assignments.t',
|
|
284
|
-
icon: Tasks,
|
|
285
|
-
link: urls.compliancemain + PAGES.compliance.assignments
|
|
286
|
-
},
|
|
287
|
-
{
|
|
288
|
-
label: 'header.products.compliance.items.hotline.t',
|
|
289
|
-
icon: HotLine,
|
|
290
|
-
link: urls.compliancemain + PAGES.compliance.hotline
|
|
291
|
-
},
|
|
292
|
-
{
|
|
293
|
-
label: 'header.products.compliance.items.sanctions.t',
|
|
294
|
-
icon: Sanctions,
|
|
295
|
-
link: urls.compliancemain + PAGES.compliance.sanctions
|
|
296
|
-
},
|
|
297
|
-
{
|
|
298
|
-
label: 'header.products.compliance.items.suppliers.t',
|
|
299
|
-
icon: IconProfile,
|
|
300
|
-
link: urls.compliancemain + PAGES.compliance.suppliers
|
|
301
|
-
},
|
|
302
|
-
{
|
|
303
|
-
label: 'header.products.compliance.items.sb.t',
|
|
304
|
-
icon: CheckSb,
|
|
305
|
-
link: urls.compliancemain + PAGES.compliance.sb
|
|
306
|
-
}
|
|
307
|
-
]
|
|
308
|
-
}
|
|
309
|
-
const currentLinks = ref(sideLinks[tab.value])
|
|
29
|
+
const tabOptions = computed(() =>
|
|
30
|
+
modules.value.map(module => ({ key: module.key, name: module.name })),
|
|
31
|
+
)
|
|
310
32
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
}
|
|
33
|
+
const currentLinks = computed<NavItem[]>(() => {
|
|
34
|
+
const module = modules.value.find(item => item.key === tab.value)
|
|
35
|
+
return (module?.items ?? []) as NavItem[]
|
|
315
36
|
})
|
|
316
37
|
|
|
38
|
+
function onReturn() {
|
|
39
|
+
emits('pushMain')
|
|
40
|
+
}
|
|
317
41
|
</script>
|
|
318
42
|
|
|
319
43
|
<template>
|
|
320
|
-
<a-modal
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
<
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
</div>
|
|
339
|
-
<span>{{ t(item.label) }}</span>
|
|
340
|
-
</nuxt-link>
|
|
341
|
-
</div>
|
|
342
|
-
<div class="h-[1px] w-full bg-deepblue-900/5"/>
|
|
44
|
+
<a-modal-v2
|
|
45
|
+
v-model="open"
|
|
46
|
+
hide-close
|
|
47
|
+
content-class="bg-gray-50/60 dark:bg-gray-950/40"
|
|
48
|
+
>
|
|
49
|
+
<template #header>
|
|
50
|
+
<h2 class="w-full text-center text-base font-semibold text-gray-900 dark:text-gray-100">
|
|
51
|
+
{{ t('modals.mobile_navigation.type_main') }}
|
|
52
|
+
</h2>
|
|
53
|
+
</template>
|
|
54
|
+
|
|
55
|
+
<div class="px-4 py-3">
|
|
56
|
+
<a-pill-tabs-v2
|
|
57
|
+
v-model="tab"
|
|
58
|
+
:options="tabOptions"
|
|
59
|
+
size="md"
|
|
60
|
+
scroll-into-view
|
|
61
|
+
/>
|
|
343
62
|
</div>
|
|
63
|
+
|
|
64
|
+
<div class="no-scrollbar flex h-[50vh] flex-col gap-2 overflow-y-auto px-4 pb-4">
|
|
65
|
+
<nuxt-link
|
|
66
|
+
v-for="item in currentLinks"
|
|
67
|
+
:key="item.to"
|
|
68
|
+
:to="item.to"
|
|
69
|
+
class="group flex items-center gap-3 rounded-2xl border border-gray-100 bg-white px-3 py-2.5 transition-colors hover:border-blue-200 hover:bg-blue-50/50 dark:border-gray-800 dark:bg-gray-900 dark:hover:border-blue-500/30 dark:hover:bg-gray-800"
|
|
70
|
+
>
|
|
71
|
+
<span class="flex size-10 shrink-0 items-center justify-center rounded-xl bg-blue-50 text-blue-500 transition-colors group-hover:bg-blue-700 group-hover:text-white dark:bg-blue-500/10 dark:text-blue-500 dark:group-hover:bg-blue-500 dark:group-hover:text-white">
|
|
72
|
+
<component
|
|
73
|
+
:is="item.icon"
|
|
74
|
+
class="size-5"
|
|
75
|
+
/>
|
|
76
|
+
</span>
|
|
77
|
+
|
|
78
|
+
<span class="min-w-0 flex-1 truncate text-sm font-semibold text-deepblue-900 dark:text-gray-100">
|
|
79
|
+
{{ item.title }}
|
|
80
|
+
</span>
|
|
81
|
+
|
|
82
|
+
<a-icon-chevron-right class="size-4 shrink-0 text-gray-300 transition-colors group-hover:text-blue-500 dark:text-gray-600" />
|
|
83
|
+
</nuxt-link>
|
|
84
|
+
</div>
|
|
85
|
+
|
|
344
86
|
<template #footer>
|
|
345
|
-
<nuxt-link
|
|
346
|
-
|
|
87
|
+
<nuxt-link
|
|
88
|
+
to="/"
|
|
89
|
+
class="flex items-center justify-center gap-2 rounded-2xl bg-gray-100 px-4 py-3 text-sm font-semibold text-deepblue-900 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-100 dark:hover:bg-gray-700"
|
|
90
|
+
@click="onReturn"
|
|
91
|
+
>
|
|
92
|
+
<a-icon-menu class="size-5" />
|
|
347
93
|
{{ t('modals.mobile_navigation.return_button') }}
|
|
348
94
|
</nuxt-link>
|
|
349
95
|
</template>
|
|
350
|
-
</a-modal>
|
|
96
|
+
</a-modal-v2>
|
|
351
97
|
</template>
|
|
352
98
|
|
|
353
|
-
<style scoped>
|
|
354
|
-
|
|
355
|
-
</style>
|
|
99
|
+
<style scoped></style>
|
|
@@ -1,20 +1,8 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { UserInfo } from '~/api/modules/user/types'
|
|
3
|
-
import { handleElementPosition } from '#adata-ui/utils/getMaxZindex'
|
|
4
|
-
|
|
5
|
-
const props = withDefaults(defineProps<Props>(), {
|
|
6
|
-
deleteFromDom: false,
|
|
7
|
-
})
|
|
8
|
-
|
|
9
|
-
const emit = defineEmits<{
|
|
10
|
-
(e: 'next'): void
|
|
11
|
-
}>()
|
|
12
3
|
|
|
13
4
|
const { t } = useI18n()
|
|
14
5
|
|
|
15
|
-
interface Props {
|
|
16
|
-
deleteFromDom?: boolean
|
|
17
|
-
}
|
|
18
6
|
const { topUpSidePanel } = usePayment()
|
|
19
7
|
|
|
20
8
|
const isOpen = defineModel<boolean>({ default: false })
|
|
@@ -27,49 +15,46 @@ function confirm() {
|
|
|
27
15
|
function cancel() {
|
|
28
16
|
isOpen.value = false
|
|
29
17
|
}
|
|
30
|
-
|
|
31
|
-
if (props.deleteFromDom) {
|
|
32
|
-
handleElementPosition('insufficient-funds')
|
|
33
|
-
}
|
|
34
18
|
</script>
|
|
35
19
|
|
|
36
20
|
<template>
|
|
37
|
-
<a-modal
|
|
21
|
+
<a-modal-v2
|
|
38
22
|
v-model="isOpen"
|
|
39
|
-
|
|
23
|
+
width="424px"
|
|
40
24
|
>
|
|
41
|
-
<div class="flex flex-col gap-
|
|
42
|
-
<
|
|
25
|
+
<div class="flex flex-col gap-4 px-6 py-4">
|
|
26
|
+
<a-ill-empty-wallet class="self-center" />
|
|
27
|
+
<p class="text-center text-[18px] font-semibold">
|
|
43
28
|
{{ t('modals.low_balance.title') }}
|
|
44
29
|
</p>
|
|
45
|
-
<
|
|
46
|
-
|
|
47
|
-
|
|
30
|
+
<p class="text-center">
|
|
31
|
+
{{ t('modals.low_balance.questions') }}
|
|
32
|
+
</p>
|
|
33
|
+
<div class="flex flex-col rounded-xl border border-blue-500 bg-blue-50 px-4 py-2 dark:border-blue-500 dark:bg-blue-950/40">
|
|
34
|
+
<p class="body-600 text-center text-blue-700 dark:text-blue-300">
|
|
48
35
|
{{ t('modals.low_balance.current_balance') }}
|
|
49
36
|
</p>
|
|
50
|
-
<p class="body-600 text-center text-xl text-
|
|
37
|
+
<p class="body-600 text-center text-xl text-blue-700 dark:text-blue-300">
|
|
51
38
|
{{ userInfo?.balance ? userInfo?.balance.toLocaleString('ru-RU') : 0 }}₸
|
|
52
39
|
</p>
|
|
53
40
|
</div>
|
|
54
|
-
<p class="text-center">
|
|
55
|
-
{{ t('modals.low_balance.questions') }}
|
|
56
|
-
</p>
|
|
57
41
|
</div>
|
|
58
42
|
<template #footer>
|
|
59
|
-
<div class="flex gap-2
|
|
60
|
-
<a-button
|
|
43
|
+
<div class="flex gap-2">
|
|
44
|
+
<a-button-v2
|
|
61
45
|
view="outline"
|
|
46
|
+
color="blue"
|
|
62
47
|
block
|
|
63
48
|
@click="cancel"
|
|
64
49
|
>
|
|
65
50
|
{{ t('modals.buttons.close') }}
|
|
66
|
-
</a-button>
|
|
67
|
-
<a-button block @click="confirm">
|
|
51
|
+
</a-button-v2>
|
|
52
|
+
<a-button-v2 block @click="confirm">
|
|
68
53
|
{{ t('modals.buttons.topUp') }}
|
|
69
|
-
</a-button>
|
|
54
|
+
</a-button-v2>
|
|
70
55
|
</div>
|
|
71
56
|
</template>
|
|
72
|
-
</a-modal>
|
|
57
|
+
</a-modal-v2>
|
|
73
58
|
</template>
|
|
74
59
|
|
|
75
60
|
<style scoped>
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
|
|
3
2
|
import { useUrls } from '#adata-ui/composables/useUrls'
|
|
4
3
|
|
|
5
4
|
const { t } = useI18n()
|
|
@@ -16,11 +15,13 @@ function goTariffs() {
|
|
|
16
15
|
<template>
|
|
17
16
|
<a-modal v-model="isOpen" :title="t('modals.limit.title')">
|
|
18
17
|
<div class="flex flex-col items-center gap-5 text-center text-sm">
|
|
19
|
-
<a-ill-empty-wallet
|
|
18
|
+
<a-ill-empty-wallet />
|
|
20
19
|
<div>{{ t('modals.limit.content') }}</div>
|
|
21
20
|
</div>
|
|
22
21
|
<template #footer>
|
|
23
|
-
<a-button @click="goTariffs"
|
|
22
|
+
<a-button block @click="goTariffs">
|
|
23
|
+
{{ t('modals.buttons.goTariffs') }}
|
|
24
|
+
</a-button>
|
|
24
25
|
</template>
|
|
25
26
|
</a-modal>
|
|
26
27
|
</template>
|
|
@@ -5,33 +5,31 @@ const { t } = useI18n()
|
|
|
5
5
|
|
|
6
6
|
const isOpen = useNoAccessModal()
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
function onClose() {
|
|
9
9
|
isOpen.value = false
|
|
10
10
|
}
|
|
11
11
|
</script>
|
|
12
12
|
|
|
13
13
|
<template>
|
|
14
|
-
<a-modal
|
|
14
|
+
<a-modal-v2
|
|
15
15
|
v-model="isOpen"
|
|
16
|
-
|
|
16
|
+
width="424px"
|
|
17
17
|
>
|
|
18
|
-
<div class="flex flex-col gap-
|
|
19
|
-
<
|
|
20
|
-
{{ t('modals.no_access.title') }}
|
|
21
|
-
</p>
|
|
22
|
-
<a-ill-door class="w-full" />
|
|
18
|
+
<div class="flex flex-col items-center justify-center gap-4 px-6 py-4">
|
|
19
|
+
<a-ill-door />
|
|
23
20
|
<p class="body-400 whitespace-pre-wrap text-center">
|
|
24
21
|
{{ t('modals.no_access.info') }}
|
|
25
22
|
</p>
|
|
26
23
|
</div>
|
|
27
24
|
<template #footer>
|
|
28
|
-
<a-button
|
|
25
|
+
<a-button-v2
|
|
29
26
|
view="outline"
|
|
27
|
+
color="blue"
|
|
30
28
|
block
|
|
31
29
|
@click="onClose"
|
|
32
30
|
>
|
|
33
31
|
{{ t('modals.buttons.close') }}
|
|
34
|
-
</a-button>
|
|
32
|
+
</a-button-v2>
|
|
35
33
|
</template>
|
|
36
|
-
</a-modal>
|
|
34
|
+
</a-modal-v2>
|
|
37
35
|
</template>
|
|
@@ -66,7 +66,7 @@ if (props.deleteFromDom) {
|
|
|
66
66
|
:name="`${item.name}`"
|
|
67
67
|
side="right"
|
|
68
68
|
:value="item.id"
|
|
69
|
-
class="flex items-center justify-between gap-2 bg-gray-50 p-[10px_16px]
|
|
69
|
+
class="flex items-center justify-between gap-2 rounded-md bg-gray-50 p-[10px_16px] dark:bg-[#393D40]"
|
|
70
70
|
>
|
|
71
71
|
<div class="flex w-full items-center gap-2">
|
|
72
72
|
<component :is="item.img" />
|
|
@@ -3,28 +3,30 @@ const { t } = useI18n()
|
|
|
3
3
|
|
|
4
4
|
const isOpen = defineModel<boolean>({ required: true })
|
|
5
5
|
</script>
|
|
6
|
+
|
|
6
7
|
<template>
|
|
7
|
-
<a-modal
|
|
8
|
+
<a-modal-v2
|
|
8
9
|
v-model="isOpen"
|
|
9
10
|
width="424px"
|
|
10
11
|
>
|
|
11
|
-
<
|
|
12
|
+
<div class="flex flex-col items-center justify-center gap-4 px-6 py-4">
|
|
13
|
+
<a-ill-ok />
|
|
12
14
|
<p class="heading-02 text-center font-bold">
|
|
13
15
|
{{ t('modals.report_bug.confirmed') }}
|
|
14
16
|
</p>
|
|
15
|
-
|
|
16
|
-
<div class="flex flex-col gap-5 items-center">
|
|
17
|
-
<a-ill-ok />
|
|
18
|
-
<p class="text-sm text-center">
|
|
17
|
+
<p class="body-400 text-center">
|
|
19
18
|
{{ t('modals.report_bug.gratitude') }}
|
|
20
19
|
</p>
|
|
21
|
-
|
|
20
|
+
</div>
|
|
21
|
+
<template #footer>
|
|
22
|
+
<a-button-v2
|
|
22
23
|
view="outline"
|
|
24
|
+
color="blue"
|
|
23
25
|
block
|
|
24
26
|
@click="isOpen = false"
|
|
25
27
|
>
|
|
26
28
|
{{ t('actions.close') }}
|
|
27
|
-
</a-button>
|
|
28
|
-
</
|
|
29
|
-
</a-modal>
|
|
29
|
+
</a-button-v2>
|
|
30
|
+
</template>
|
|
31
|
+
</a-modal-v2>
|
|
30
32
|
</template>
|