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.
Files changed (56) hide show
  1. package/.claude/settings.local.json +19 -0
  2. package/components/elements/a-select-row/ASelectRowV2.vue +214 -0
  3. package/components/elements/button/AButtonV2.vue +112 -0
  4. package/components/elements/leave-note/ALeaveNote.vue +38 -17
  5. package/components/elements/segmented/ASegmentedV2.vue +58 -0
  6. package/components/elements/select/ASelectV2.vue +589 -0
  7. package/components/elements/show-more/AShowMoreV2.vue +26 -0
  8. package/components/elements/star-rating/AStarRating.vue +12 -4
  9. package/components/elements/status-badge-v2/StatusBadgeV2.vue +78 -0
  10. package/components/features/payment/process/PaymentKaspiQrSidePanel.vue +43 -27
  11. package/components/features/payment/process/PaymentKaspiRedirectSidePanel.vue +34 -23
  12. package/components/features/payment/process/PaymentMethodSidePanel.vue +61 -49
  13. package/components/features/payment/process/PaymentProcess.vue +6 -6
  14. package/components/features/payment/process/PaymentTopUpSidePanel.vue +44 -63
  15. package/components/forms/checkbox/ACheckboxV2.vue +229 -0
  16. package/components/forms/feedback-form/FeedbackForm.vue +8 -8
  17. package/components/forms/input/AInputV2.vue +542 -0
  18. package/components/forms/input/textarea/ATextareaV2.vue +248 -0
  19. package/components/forms/toggle/AToggleV2.vue +71 -0
  20. package/components/modals/AnotherDeviceModal.vue +22 -18
  21. package/components/modals/ApplicationAcceptedModal.vue +12 -15
  22. package/components/modals/ConnectingTariffModal.vue +13 -20
  23. package/components/modals/ContentNavigationModal.vue +77 -333
  24. package/components/modals/Insufficient-funds-modal.vue +18 -33
  25. package/components/modals/LimitReachedModal.vue +4 -3
  26. package/components/modals/NoAccessModal.vue +9 -11
  27. package/components/modals/PaymentMethodModal.vue +1 -1
  28. package/components/modals/ReportBugConfirmModal.vue +12 -10
  29. package/components/modals/ReportBugModal.vue +42 -36
  30. package/components/modals/Resend.vue +9 -10
  31. package/components/modals/SubmitApplicationModal.vue +27 -24
  32. package/components/modals/id/IdConfirmAccountOtpModal.vue +4 -9
  33. package/components/modals/id/IdLoginModal.vue +3 -8
  34. package/components/modals/id/IdModals.vue +23 -10
  35. package/components/modals/id/IdTwoFactorModal.vue +3 -8
  36. package/components/navigation/bottom-navigation/ABottomNavigation.vue +1 -1
  37. package/components/navigation/header/AHeader.vue +15 -19
  38. package/components/navigation/header/HeaderLink.vue +15 -21
  39. package/components/navigation/header/NavList.vue +8 -32
  40. package/components/navigation/header/ProductMenu.vue +52 -50
  41. package/components/navigation/pill-tabs/APillTabsV2.vue +134 -0
  42. package/components/overlays/modal/AModalV2.vue +391 -0
  43. package/composables/useAccessTokenCookie.ts +25 -0
  44. package/composables/useChipOverflow.ts +92 -0
  45. package/composables/useHeaderNavigationLinks.ts +53 -23
  46. package/icons/arrow/arrow-right.vue +14 -0
  47. package/icons/briefcase.vue +14 -0
  48. package/icons/car-side.vue +16 -0
  49. package/icons/cart.vue +15 -0
  50. package/icons/download-rounded.vue +15 -0
  51. package/icons/shield-verified.vue +14 -0
  52. package/lang/en.ts +35 -4
  53. package/lang/kk.ts +36 -5
  54. package/lang/ru.ts +37 -6
  55. package/package.json +1 -1
  56. 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
- import {ref} from "vue";
4
- import IconSearch from "#adata-ui/icons/search.vue";
5
- import {PAGES} from '#adata-ui/shared/constans/pages'
6
- import IconScales from "#adata-ui/icons/scales/scale.vue";
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
- const { t, locale } = useI18n()
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
- const sideLinks = <any>{
97
- edo: [
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
- watch(tab, (e) => {
312
- if (e) {
313
- currentLinks.value = sideLinks[e]
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 v-model="isOpen" :title="t('modals.mobile_navigation.type_main')">
321
- <div class="flex flex-col gap-5">
322
- <div class="h-[1px] w-full bg-deepblue-900/5"/>
323
- <div>
324
- <a-pill-tabs v-model="tab" :options="tabOptions" view="gray"/>
325
- </div>
326
- <div class="h-[40vh] sm:h-[300px] overflow-auto no-scrollbar">
327
- <nuxt-link
328
- v-for="item in currentLinks"
329
- :key="item.label"
330
- :to="item.link"
331
- class="flex items-center gap-4 px-4 py-3 bg-gray-50 dark:bg-gray-800 mb-2 rounded"
332
- >
333
- <div class="bg-gradient-blue p-1 rounded-lg">
334
- <component
335
- :is="item.icon"
336
- class="w-5 h-5 text-white dark:text-gray-900"
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 to="/" @click="emits('pushMain')" class="flex items-center gap-4 px-4 py-3 bg-gray-50 rounded-md dark:bg-gray-800">
346
- <a-icon-menu/>
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
- name="insufficient-funds"
23
+ width="424px"
40
24
  >
41
- <div class="flex flex-col gap-5">
42
- <p class="heading-02 text-center">
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
- <a-ill-empty-wallet class="self-center" />
46
- <div class="m-[0_-32px] flex flex-col bg-green-500 py-1.5">
47
- <p class="body-600 text-center text-white ">
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-white ">
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></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" block>{{ t('modals.buttons.goTariffs') }}</a-button>
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
- const onClose = () => {
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
- name="no-access-modal"
16
+ width="424px"
17
17
  >
18
- <div class="flex flex-col gap-5">
19
- <p class="heading-02 text-center">
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] rounded-md dark:bg-[#393D40]"
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
- <template #header>
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
- </template>
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
- <a-button
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
- </div>
29
- </a-modal>
29
+ </a-button-v2>
30
+ </template>
31
+ </a-modal-v2>
30
32
  </template>