adata-ui 4.0.55 → 4.0.58
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/dist/module.json +1 -1
- package/dist/runtime/components/Alert.vue +29 -29
- package/dist/runtime/components/Header.vue +6 -7
- package/dist/runtime/components/NewFooter.vue +267 -0
- package/dist/runtime/components/NewFooter.vue.d.ts +2 -0
- package/dist/runtime/components/NewFooterAccordion.vue +85 -0
- package/dist/runtime/components/NewFooterAccordion.vue.d.ts +11 -0
- package/dist/runtime/components/header/ProductMenu.vue +13 -13
- package/dist/runtime/components/header/ProfileMenuContent.vue +12 -11
- package/dist/runtime/i18n/i18n.config.d.ts +81 -0
- package/dist/runtime/lang/ru.d.ts +27 -0
- package/dist/runtime/lang/ru.js +28 -1
- package/package.json +2 -1
package/dist/module.json
CHANGED
|
@@ -1,32 +1,3 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div
|
|
3
|
-
class="inline-flex w-full rounded-md"
|
|
4
|
-
:class="twMerge(colorOptions.description[color], textBgClasses)"
|
|
5
|
-
>
|
|
6
|
-
<div
|
|
7
|
-
class="flex items-center justify-center rounded-l-md"
|
|
8
|
-
:class="twMerge([colorOptions.icon[color], sizeOptions[size]], iconBgClasses)"
|
|
9
|
-
>
|
|
10
|
-
<slot name="icon">
|
|
11
|
-
<i-info-circle
|
|
12
|
-
v-if="iconType == 'circle'"
|
|
13
|
-
:class="`w-[${iconSize}] h-[${iconSize}]`"
|
|
14
|
-
/>
|
|
15
|
-
<i-warning-triangle
|
|
16
|
-
v-if="iconType == 'triangle'"
|
|
17
|
-
:class="`w-[${iconSize}] h-[${iconSize}]`"
|
|
18
|
-
/>
|
|
19
|
-
</slot>
|
|
20
|
-
</div>
|
|
21
|
-
<div
|
|
22
|
-
:class="sizeOptions[size]"
|
|
23
|
-
class="rounded-r-md flex items-center"
|
|
24
|
-
>
|
|
25
|
-
<slot name="default" />
|
|
26
|
-
</div>
|
|
27
|
-
</div>
|
|
28
|
-
</template>
|
|
29
|
-
|
|
30
1
|
<script setup>
|
|
31
2
|
import { twMerge } from "tailwind-merge";
|
|
32
3
|
defineOptions({ name: "AAlert" });
|
|
@@ -60,3 +31,32 @@ const colorOptions = {
|
|
|
60
31
|
}
|
|
61
32
|
};
|
|
62
33
|
</script>
|
|
34
|
+
|
|
35
|
+
<template>
|
|
36
|
+
<div
|
|
37
|
+
class="inline-flex w-full rounded-md"
|
|
38
|
+
:class="twMerge(colorOptions.description[color], textBgClasses)"
|
|
39
|
+
>
|
|
40
|
+
<div
|
|
41
|
+
class="flex items-center justify-center rounded-l-md"
|
|
42
|
+
:class="twMerge([colorOptions.icon[color], sizeOptions[size]], iconBgClasses)"
|
|
43
|
+
>
|
|
44
|
+
<slot name="icon">
|
|
45
|
+
<i-info-circle
|
|
46
|
+
v-if="iconType == 'circle'"
|
|
47
|
+
:class="`w-[${iconSize}] h-[${iconSize}]`"
|
|
48
|
+
/>
|
|
49
|
+
<i-warning-triangle
|
|
50
|
+
v-if="iconType == 'triangle'"
|
|
51
|
+
:class="`w-[${iconSize}] h-[${iconSize}]`"
|
|
52
|
+
/>
|
|
53
|
+
</slot>
|
|
54
|
+
</div>
|
|
55
|
+
<div
|
|
56
|
+
:class="sizeOptions[size]"
|
|
57
|
+
class="rounded-r-md flex items-center"
|
|
58
|
+
>
|
|
59
|
+
<slot name="default" />
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
@@ -4,12 +4,11 @@ import TopHeader from "./header/TopHeader.vue";
|
|
|
4
4
|
import HeaderLink from "./header/HeaderLink.vue";
|
|
5
5
|
import ProfileMenu from "./header/ProfileMenu.vue";
|
|
6
6
|
import ColorMode from "./ColorMode.vue";
|
|
7
|
-
import HeaderMobile from "./header-mobile/HeaderMobile.vue";
|
|
8
7
|
import { useI18n, ref, onBeforeMount, useAppConfig, useRuntimeConfig } from "#imports";
|
|
9
8
|
import ILogout from "#icons/navigation/logout.vue";
|
|
10
9
|
import IAdata from "#icons/logo/adata.vue";
|
|
11
10
|
import LangSwitcher from "./header/LangSwitcher.vue";
|
|
12
|
-
const { localize } = useRuntimeConfig().public.adataUI;
|
|
11
|
+
const { localize, isColorModeActive } = useRuntimeConfig().public.adataUI;
|
|
13
12
|
const props = defineProps({
|
|
14
13
|
replenish: { type: String, required: false },
|
|
15
14
|
hasNotification: { type: Boolean, required: false },
|
|
@@ -104,8 +103,8 @@ onBeforeMount(() => {
|
|
|
104
103
|
<div v-if="langIsOn || module === 'fea'" />
|
|
105
104
|
</div>
|
|
106
105
|
<div class="flex items-center gap-4">
|
|
107
|
-
<color-mode />
|
|
108
|
-
<lang-switcher v-if="
|
|
106
|
+
<color-mode v-if="localize" />
|
|
107
|
+
<lang-switcher v-if="isColorModeActive" />
|
|
109
108
|
</div>
|
|
110
109
|
|
|
111
110
|
|
|
@@ -125,11 +124,11 @@ onBeforeMount(() => {
|
|
|
125
124
|
|
|
126
125
|
<div
|
|
127
126
|
v-show="!isAuthenticated && showLogIn"
|
|
128
|
-
class="hidden cursor-pointer items-center gap-2 font-semibold lg:flex"
|
|
129
127
|
@click="goAuth"
|
|
128
|
+
class="hidden w-max cursor-pointer items-center gap-2 rounded-2xl bg-blue-700 px-4 py-[6px] font-semibold dark:bg-blue-500 lg:flex"
|
|
130
129
|
>
|
|
131
|
-
<i-logout class="lg:h-4 lg:w-4" />
|
|
132
|
-
<span class="hidden lg:inline-block">
|
|
130
|
+
<i-logout class="text-white dark:text-gray-900 lg:h-4 lg:w-4" />
|
|
131
|
+
<span class="hidden text-sm font-semibold text-white dark:text-gray-900 lg:inline-block min-w-[44px]">
|
|
133
132
|
{{ t("header.login") }}
|
|
134
133
|
</span>
|
|
135
134
|
</div>
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { PAGES } from "../shared/constants/pages";
|
|
3
|
+
import { useI18n, useAppConfig } from "#imports";
|
|
4
|
+
import ISocialsLinkedin from "#icons/socials/linkedin.vue";
|
|
5
|
+
import ISocialsYoutube from "#icons/socials/youtube.vue";
|
|
6
|
+
import ISocialsInstagram from "#icons/socials/instagram.vue";
|
|
7
|
+
import ISocialsTelegram from "#icons/socials/telegram.vue";
|
|
8
|
+
import ISocialsFacebook from "#icons/socials/facebook.vue";
|
|
9
|
+
import ISocialsTiktok from "#icons/socials/tik-tok.vue";
|
|
10
|
+
import INavigationLocation from "#icons/navigation/location.vue";
|
|
11
|
+
import INavigationExpandWindow from "#icons/navigation/expand-window.vue";
|
|
12
|
+
import ICommunicationPhone from "#icons/communication/phone.vue";
|
|
13
|
+
import ICommunicationMail from "#icons/communication/mail.vue";
|
|
14
|
+
import IAdata from "#icons/logo/adata.vue";
|
|
15
|
+
const year = (/* @__PURE__ */ new Date()).getFullYear();
|
|
16
|
+
const { t } = useI18n();
|
|
17
|
+
const appConfig = useAppConfig();
|
|
18
|
+
const mode = appConfig.adataUI.mode;
|
|
19
|
+
const socialMedia = [
|
|
20
|
+
// {
|
|
21
|
+
// icon: ISocialsLinkedin,
|
|
22
|
+
// link: 'https://www.linkedin.com/company/adata-kz/?viewAsMember=true',
|
|
23
|
+
// name: 'Linkedin',
|
|
24
|
+
// },
|
|
25
|
+
{
|
|
26
|
+
icon: ISocialsYoutube,
|
|
27
|
+
link: "https://www.youtube.com/channel/UCPkbtgwgTZbMJXjmTi3R8Uw/featured",
|
|
28
|
+
name: "YouTube"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
icon: ISocialsInstagram,
|
|
32
|
+
link: "https://www.instagram.com/adata.kz/?igshid=253i4qxg3els",
|
|
33
|
+
name: "Instagram"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
icon: ISocialsTelegram,
|
|
37
|
+
link: "https://t.me/adatakz_official",
|
|
38
|
+
name: "Telegram"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
icon: ISocialsFacebook,
|
|
42
|
+
link: "https://www.facebook.com/adata.kz",
|
|
43
|
+
name: "Facebook"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
icon: ISocialsTiktok,
|
|
47
|
+
link: "https://www.tiktok.com/@adata.kz?lang=ru-RU",
|
|
48
|
+
name: "Tiktok"
|
|
49
|
+
}
|
|
50
|
+
];
|
|
51
|
+
const mainLinks = {
|
|
52
|
+
services: {
|
|
53
|
+
title: "footer.newVersion.services.title",
|
|
54
|
+
items: [
|
|
55
|
+
[
|
|
56
|
+
{
|
|
57
|
+
title: "footer.newVersion.services.counterparties",
|
|
58
|
+
link: `https://pk.${mode}.kz`
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
title: "footer.newVersion.services.fines",
|
|
62
|
+
link: `https://avto.${mode}.kz/`
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
title: "footer.newVersion.services.work",
|
|
66
|
+
link: `https://work.${mode}.kz/`
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
title: "footer.newVersion.services.analytics",
|
|
70
|
+
link: `https://analytics-new.${mode}.kz/`
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
title: "footer.newVersion.services.procurement",
|
|
74
|
+
link: `https://tender.${mode}.kz/`
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
[
|
|
78
|
+
{
|
|
79
|
+
title: "footer.newVersion.services.compliance",
|
|
80
|
+
link: `https://ac.${mode}.kz/compliance`,
|
|
81
|
+
isNew: true
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
title: "footer.newVersion.services.edo",
|
|
85
|
+
link: `https://edo.${mode}.kz/`,
|
|
86
|
+
isNew: true
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
title: "footer.newVersion.services.ved",
|
|
90
|
+
link: `https://tnved.${mode}.kz/`,
|
|
91
|
+
isNew: true
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
useful: {
|
|
97
|
+
title: "footer.newVersion.useful.title",
|
|
98
|
+
link: `https://${mode}.kz` + PAGES.usefulMain,
|
|
99
|
+
items: [[
|
|
100
|
+
{
|
|
101
|
+
title: "footer.newVersion.useful.apiDescription",
|
|
102
|
+
link: `https://${mode}.kz` + PAGES.apiDescription
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
title: "footer.newVersion.useful.userAgreement",
|
|
106
|
+
link: `https://${mode}.kz` + PAGES.userAgreement
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: "footer.newVersion.useful.privacyPolicy",
|
|
110
|
+
link: `https://${mode}.kz` + PAGES.privacy
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
title: "footer.newVersion.useful.vacancies",
|
|
114
|
+
link: `https://${mode}.kz` + PAGES.vacancy
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
title: "footer.newVersion.useful.companyDirectory",
|
|
118
|
+
link: `https://pk.${mode}.kz` + PAGES.pk.counterparty
|
|
119
|
+
}
|
|
120
|
+
]]
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
const contactLinks = {
|
|
124
|
+
title: "footer.newVersion.contacts.title",
|
|
125
|
+
link: `https://${mode}.kz` + PAGES.contacts,
|
|
126
|
+
items: [
|
|
127
|
+
{
|
|
128
|
+
title: "footer.newVersion.contacts.address",
|
|
129
|
+
link: "https://go.2gis.com/30j2f",
|
|
130
|
+
startIcon: INavigationLocation,
|
|
131
|
+
endIcon: null
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
title: "+7 (747) 120 34 67",
|
|
135
|
+
link: "tel:+77471203467",
|
|
136
|
+
startIcon: ICommunicationPhone,
|
|
137
|
+
endIcon: null
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
title: "info@adata.kz",
|
|
141
|
+
link: "mailto:info@adata.kz",
|
|
142
|
+
startIcon: ICommunicationMail,
|
|
143
|
+
endIcon: null
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
title: "footer.newVersion.contacts.goToChat",
|
|
147
|
+
link: "https://api.whatsapp.com/send?phone=77712289041",
|
|
148
|
+
startIcon: null,
|
|
149
|
+
endIcon: INavigationExpandWindow,
|
|
150
|
+
class: "!font-bold"
|
|
151
|
+
}
|
|
152
|
+
]
|
|
153
|
+
};
|
|
154
|
+
</script>
|
|
155
|
+
|
|
156
|
+
<template>
|
|
157
|
+
<div
|
|
158
|
+
id="footer"
|
|
159
|
+
class="bg-deepblue-900 dark:bg-gray-900 py-4 lg:py-5 rounded-t-3xl"
|
|
160
|
+
>
|
|
161
|
+
<div class="a-container mobile-padding py-5 text-white flex flex-col lg:flex-row justify-between gap-8">
|
|
162
|
+
<div class="flex flex-col gap-8 justify-between">
|
|
163
|
+
<div class="flex flex-col gap-4">
|
|
164
|
+
<i-adata
|
|
165
|
+
filled
|
|
166
|
+
:font-controlled="false"
|
|
167
|
+
class="h-[26px] w-[92px]"
|
|
168
|
+
/>
|
|
169
|
+
<span class="text-sm">{{ t("footer.slogan") }}</span>
|
|
170
|
+
|
|
171
|
+
<div class="hidden lg:flex gap-8">
|
|
172
|
+
<nuxt-link
|
|
173
|
+
v-for="(social, idx) in socialMedia"
|
|
174
|
+
:key="idx"
|
|
175
|
+
target="_blank"
|
|
176
|
+
:to="social.link"
|
|
177
|
+
:aria-label="social.name"
|
|
178
|
+
>
|
|
179
|
+
<component
|
|
180
|
+
:is="social.icon"
|
|
181
|
+
filled
|
|
182
|
+
:font-controlled="false"
|
|
183
|
+
class="social-icon h-[28px] w-[28px]"
|
|
184
|
+
/>
|
|
185
|
+
</nuxt-link>
|
|
186
|
+
</div>
|
|
187
|
+
</div>
|
|
188
|
+
|
|
189
|
+
<span class="hidden lg:block text-[10px]">{{ year }} © {{ t("footer.LLP") }} "Alldata"</span>
|
|
190
|
+
</div>
|
|
191
|
+
|
|
192
|
+
<div class="flex gap-6 lg:gap-[75px] flex-col lg:flex-row">
|
|
193
|
+
<div class="flex flex-col gap-[18px] lg:gap-[75px] lg:flex-row">
|
|
194
|
+
<div v-for="(item, idx) in mainLinks" :key="idx">
|
|
195
|
+
<adt-new-footer-accordion
|
|
196
|
+
:content="item.items"
|
|
197
|
+
:label="t(item.title)"
|
|
198
|
+
:link="item.link?.replace(/\/$/, '')"
|
|
199
|
+
/>
|
|
200
|
+
</div>
|
|
201
|
+
</div>
|
|
202
|
+
|
|
203
|
+
<!-- contactLinks -->
|
|
204
|
+
<div class="flex flex-col gap-2 items-start">
|
|
205
|
+
<nuxt-link-locale
|
|
206
|
+
class="text-sm font-semibold pb-3 pr-4 border-b border-b-[0.5px] border-white cursor-default"
|
|
207
|
+
:class="{ 'cursor-pointer': contactLinks.link }"
|
|
208
|
+
:to="contactLinks.link?.replace(/\/$/, '')"
|
|
209
|
+
>
|
|
210
|
+
{{ t(contactLinks.title) }}
|
|
211
|
+
</nuxt-link-locale>
|
|
212
|
+
|
|
213
|
+
<div class="flex flex-col gap-3 lg:gap-2">
|
|
214
|
+
<div
|
|
215
|
+
v-for="(link, linkIdx) in contactLinks.items"
|
|
216
|
+
:key="linkIdx"
|
|
217
|
+
class="flex gap-2 items-center"
|
|
218
|
+
>
|
|
219
|
+
<nuxt-link-locale
|
|
220
|
+
class="text-xs/5 font-medium flex gap-2 items-center cursor-pointer"
|
|
221
|
+
:class="link.class"
|
|
222
|
+
:to="link.link?.replace(/\/$/, '')"
|
|
223
|
+
>
|
|
224
|
+
<component
|
|
225
|
+
v-if="link.startIcon"
|
|
226
|
+
:is="link.startIcon"
|
|
227
|
+
class="size-4"
|
|
228
|
+
/>
|
|
229
|
+
|
|
230
|
+
{{ t(link.title) }}
|
|
231
|
+
|
|
232
|
+
<component
|
|
233
|
+
v-if="link.endIcon"
|
|
234
|
+
:is="link.endIcon"
|
|
235
|
+
class="size-4"
|
|
236
|
+
/>
|
|
237
|
+
</nuxt-link-locale>
|
|
238
|
+
|
|
239
|
+
<div v-if="link.isNew" class="text-[9px]/1 font-bold px-1 py-1.5 rounded-sm bg-white/20">
|
|
240
|
+
NEW
|
|
241
|
+
</div>
|
|
242
|
+
</div>
|
|
243
|
+
</div>
|
|
244
|
+
</div>
|
|
245
|
+
</div>
|
|
246
|
+
|
|
247
|
+
<div class="lg:hidden flex gap-8 flex-wrap">
|
|
248
|
+
<nuxt-link
|
|
249
|
+
v-for="(social, idx) in socialMedia"
|
|
250
|
+
:key="idx"
|
|
251
|
+
target="_blank"
|
|
252
|
+
:to="social.link"
|
|
253
|
+
:aria-label="social.name"
|
|
254
|
+
>
|
|
255
|
+
<component
|
|
256
|
+
:is="social.icon"
|
|
257
|
+
filled
|
|
258
|
+
:font-controlled="false"
|
|
259
|
+
class="social-icon h-[28px] w-[28px]"
|
|
260
|
+
/>
|
|
261
|
+
</nuxt-link>
|
|
262
|
+
</div>
|
|
263
|
+
|
|
264
|
+
<span class="lg:hidden text-[10px]">{{ year }} © {{ t("footer.LLP") }} "Alldata"</span>
|
|
265
|
+
</div>
|
|
266
|
+
</div>
|
|
267
|
+
</template>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { ref, useI18n, computed } from "#imports";
|
|
3
|
+
import { useMediaQuery } from "@vueuse/core";
|
|
4
|
+
const props = defineProps({
|
|
5
|
+
label: { type: String, required: true },
|
|
6
|
+
link: { type: String, required: true },
|
|
7
|
+
content: { type: Array, required: true }
|
|
8
|
+
});
|
|
9
|
+
const isDesktop = useMediaQuery("(max-width: 1024px)");
|
|
10
|
+
const { t } = useI18n();
|
|
11
|
+
const open = ref(false);
|
|
12
|
+
function toFinalValues(el) {
|
|
13
|
+
el.style.height = el.scrollHeight + "px";
|
|
14
|
+
el.style.opacity = "1";
|
|
15
|
+
}
|
|
16
|
+
function onAfterEnter(el) {
|
|
17
|
+
el.style.height = "";
|
|
18
|
+
}
|
|
19
|
+
const filterCheck = computed(() => {
|
|
20
|
+
if (open.value) {
|
|
21
|
+
return open.value;
|
|
22
|
+
} else {
|
|
23
|
+
return open.value = !isDesktop.value;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<template>
|
|
29
|
+
<div class="flex flex-col gap-2 items-start">
|
|
30
|
+
<div
|
|
31
|
+
class="flex gap-2 justify-between w-full"
|
|
32
|
+
>
|
|
33
|
+
<nuxt-link-locale
|
|
34
|
+
class="text-sm font-semibold lg:pb-3 lg:pr-4 lg:border-b lg:border-b-[0.5px] lg:border-white cursor-default"
|
|
35
|
+
:class="{ 'cursor-pointer': link }"
|
|
36
|
+
:to="link?.replace(/\/$/, '')"
|
|
37
|
+
>
|
|
38
|
+
{{ t(label) }}
|
|
39
|
+
</nuxt-link-locale>
|
|
40
|
+
|
|
41
|
+
<div class="transition-all lg:hidden cursor-pointer">
|
|
42
|
+
<i-arrow-chevron-down
|
|
43
|
+
v-if="content.length"
|
|
44
|
+
filled
|
|
45
|
+
:font-controlled="false"
|
|
46
|
+
class="w-6 h-6 transition-all"
|
|
47
|
+
:class="{ 'rotate-180': open }"
|
|
48
|
+
@click="open = !open"
|
|
49
|
+
/>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
<transition
|
|
54
|
+
name="accordion"
|
|
55
|
+
@enter="toFinalValues"
|
|
56
|
+
@after-enter="onAfterEnter"
|
|
57
|
+
@before-leave="toFinalValues"
|
|
58
|
+
>
|
|
59
|
+
<div v-if="filterCheck" class="flex gap-3 lg:gap-6 flex-col lg:flex-row ">
|
|
60
|
+
<div v-for="(subItem, subIdx) in content" :key="subIdx" class="flex flex-col gap-3 lg:gap-2">
|
|
61
|
+
<div
|
|
62
|
+
v-for="(link, idx) in subItem"
|
|
63
|
+
:key="idx"
|
|
64
|
+
class="flex gap-2 items-center"
|
|
65
|
+
>
|
|
66
|
+
<nuxt-link-locale
|
|
67
|
+
class="text-xs/5 lg:font-medium flex gap-2 items-center cursor-pointer"
|
|
68
|
+
:to="link.link?.replace(/\/$/, '')"
|
|
69
|
+
>
|
|
70
|
+
{{ t(link.title) }}
|
|
71
|
+
</nuxt-link-locale>
|
|
72
|
+
|
|
73
|
+
<div v-if="link.isNew" class="text-[9px]/1 font-bold px-1 py-1.5 rounded-sm bg-white/20">
|
|
74
|
+
NEW
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</transition>
|
|
80
|
+
</div>
|
|
81
|
+
</template>
|
|
82
|
+
|
|
83
|
+
<style scoped>
|
|
84
|
+
.accordion-enter-active,.accordion-leave-active{overflow:hidden;transition:height .3s ease,opacity .3s ease,margin .3s ease}.accordion-enter-from,.accordion-leave-to{height:0!important;margin:0!important;opacity:0!important}
|
|
85
|
+
</style>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface Item {
|
|
2
|
+
title: string;
|
|
3
|
+
link: string;
|
|
4
|
+
}
|
|
5
|
+
interface Props {
|
|
6
|
+
label: string;
|
|
7
|
+
link: string;
|
|
8
|
+
content: Item[];
|
|
9
|
+
}
|
|
10
|
+
declare const _default: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
11
|
+
export default _default;
|
|
@@ -41,6 +41,19 @@ const mode = appConfig.adataUI.mode;
|
|
|
41
41
|
const pageUrl = useRequestURL();
|
|
42
42
|
defineEmits(["outerClick", "mouseOver"]);
|
|
43
43
|
const filteredItems = [
|
|
44
|
+
{
|
|
45
|
+
key: "edo",
|
|
46
|
+
name: t("header.products.edo.label"),
|
|
47
|
+
icon: IFiles,
|
|
48
|
+
items: [
|
|
49
|
+
{
|
|
50
|
+
title: t("header.products.edo.items.l.t"),
|
|
51
|
+
subtitle: t("header.products.edo.items.l.t"),
|
|
52
|
+
icon: IFiles,
|
|
53
|
+
to: `https://edo.${mode}.kz`
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
},
|
|
44
57
|
{
|
|
45
58
|
key: "pk",
|
|
46
59
|
name: t("header.products.counterparties.label"),
|
|
@@ -243,19 +256,6 @@ const filteredItems = [
|
|
|
243
256
|
to: `https://ac.${mode}.kz/compliance`
|
|
244
257
|
}
|
|
245
258
|
]
|
|
246
|
-
},
|
|
247
|
-
{
|
|
248
|
-
key: "edo",
|
|
249
|
-
name: t("header.products.edo.label"),
|
|
250
|
-
icon: IFiles,
|
|
251
|
-
items: [
|
|
252
|
-
{
|
|
253
|
-
title: t("header.products.edo.items.l.t"),
|
|
254
|
-
subtitle: t("header.products.edo.items.l.t"),
|
|
255
|
-
icon: IFiles,
|
|
256
|
-
to: `https://edo.${mode}.kz`
|
|
257
|
-
}
|
|
258
|
-
]
|
|
259
259
|
}
|
|
260
260
|
];
|
|
261
261
|
function isCurrentModule(currentModule) {
|
|
@@ -81,7 +81,7 @@ const onReplenish = () => {
|
|
|
81
81
|
</script>
|
|
82
82
|
|
|
83
83
|
<template>
|
|
84
|
-
<div class="max-w-full lg:w-[
|
|
84
|
+
<div class="max-w-full lg:w-[300px]">
|
|
85
85
|
<!-- desktop -->
|
|
86
86
|
<div
|
|
87
87
|
class="gradient-bg hidden px-4 py-4 text-white dark:text-gray-900 lg:block lg:rounded-t-[0.5rem] lg:px-8 lg:dark:text-white"
|
|
@@ -90,7 +90,7 @@ const onReplenish = () => {
|
|
|
90
90
|
{{ t("header.profile.tariff") }}
|
|
91
91
|
</div>
|
|
92
92
|
<div class="flex items-center justify-between gap-4 lg:mt-2">
|
|
93
|
-
<div>
|
|
93
|
+
<div class="flex items-center justify-between lg:w-full">
|
|
94
94
|
<span class="mr-2 font-semibold lg:text-lg">{{ rate }}</span>
|
|
95
95
|
<a-status-badge
|
|
96
96
|
type="success"
|
|
@@ -102,17 +102,19 @@ const onReplenish = () => {
|
|
|
102
102
|
</div>
|
|
103
103
|
<span class="bg-deepblue ml-2 rounded-xl px-2 py-1 text-xs lg:hidden">{{ balance.toLocaleString("RU-ru") }} ₸</span>
|
|
104
104
|
</div>
|
|
105
|
-
<div class="mt-2 hidden items-center justify-between lg:flex">
|
|
106
|
-
<div class="text-xs">
|
|
105
|
+
<div class="mt-2 hidden items-center justify-between lg:flex lg:flex-col">
|
|
106
|
+
<div class="items-center justify-between lg:flex lg:w-full text-xs">
|
|
107
107
|
{{ t("header.profile.currentBalance") }}
|
|
108
108
|
<span class="ml-2 rounded-xl bg-deepblue-900 px-2 py-1">{{ balance.toLocaleString("RU-ru") }} ₸</span>
|
|
109
109
|
</div>
|
|
110
110
|
<a-button
|
|
111
111
|
size="sm"
|
|
112
|
+
class="w-full mt-4"
|
|
112
113
|
view="outline"
|
|
113
114
|
variant="ghost"
|
|
114
115
|
@click="onReplenish"
|
|
115
116
|
>
|
|
117
|
+
<i-plus />
|
|
116
118
|
{{ t("header.profile.addBalance") }}
|
|
117
119
|
</a-button>
|
|
118
120
|
</div>
|
|
@@ -178,11 +180,11 @@ const onReplenish = () => {
|
|
|
178
180
|
{{ daysRemaining }}
|
|
179
181
|
</a-status-badge>
|
|
180
182
|
</div>
|
|
181
|
-
<div class="grid grid-cols-2 gap-2">
|
|
183
|
+
<div class="grid grid-cols-2 gap-2 lg:flex lg:flex-col">
|
|
182
184
|
<nuxt-link
|
|
183
185
|
v-for="item in items"
|
|
184
186
|
:key="item.title"
|
|
185
|
-
class="flex flex-col items-center rounded-[6px] bg-gray-50 py-[10px] text-center text-sm hover:bg-deepblue-900/10 active:bg-deepblue-900 active:text-white dark:bg-[#161617] active:dark:bg-[#E3E5E8] active:dark:text-gray-900 lg:px-4
|
|
187
|
+
class="hover:text-blue-700 dark:hover:text-blue-500 flex flex-col lg:flex-row lg:gap-3 items-center rounded-[6px] bg-gray-50 lg:bg-white lg:dark:bg-[#232324] lg:hover:bg-blue-100 py-[10px] text-center text-sm hover:bg-deepblue-900/10 active:bg-deepblue-900 active:text-white dark:bg-[#161617] active:dark:bg-[#E3E5E8] active:dark:text-gray-900 lg:px-4 lg:dark:hover:bg-gray-900"
|
|
186
188
|
:to="item.to"
|
|
187
189
|
target="_blank"
|
|
188
190
|
>
|
|
@@ -208,16 +210,15 @@ const onReplenish = () => {
|
|
|
208
210
|
</span>
|
|
209
211
|
<color-mode />
|
|
210
212
|
</div>
|
|
211
|
-
<
|
|
212
|
-
class="lg:
|
|
213
|
-
block
|
|
213
|
+
<div
|
|
214
|
+
class="flex items-center justify-center lg:justify-start gap-3 pb-2 pt-4 px-4 cursor-pointer text-red-500 hover:text-red-700 border-t"
|
|
214
215
|
@click="$emit('logout')"
|
|
215
216
|
>
|
|
216
|
-
<
|
|
217
|
+
<icon-logout class="h-5 w-5" />
|
|
217
218
|
<span>
|
|
218
219
|
{{ t("header.profile.logout") }}
|
|
219
220
|
</span>
|
|
220
|
-
</
|
|
221
|
+
</div>
|
|
221
222
|
</div>
|
|
222
223
|
</div>
|
|
223
224
|
</template>
|
|
@@ -344,6 +344,33 @@ declare const _default: {
|
|
|
344
344
|
title: string;
|
|
345
345
|
};
|
|
346
346
|
LLP: string;
|
|
347
|
+
slogan: string;
|
|
348
|
+
newVersion: {
|
|
349
|
+
services: {
|
|
350
|
+
title: string;
|
|
351
|
+
counterparties: string;
|
|
352
|
+
compliance: string;
|
|
353
|
+
edo: string;
|
|
354
|
+
ved: string;
|
|
355
|
+
procurement: string;
|
|
356
|
+
fines: string;
|
|
357
|
+
work: string;
|
|
358
|
+
analytics: string;
|
|
359
|
+
};
|
|
360
|
+
useful: {
|
|
361
|
+
title: string;
|
|
362
|
+
apiDescription: string;
|
|
363
|
+
userAgreement: string;
|
|
364
|
+
privacyPolicy: string;
|
|
365
|
+
vacancies: string;
|
|
366
|
+
companyDirectory: string;
|
|
367
|
+
};
|
|
368
|
+
contacts: {
|
|
369
|
+
title: string;
|
|
370
|
+
address: string;
|
|
371
|
+
goToChat: string;
|
|
372
|
+
};
|
|
373
|
+
};
|
|
347
374
|
};
|
|
348
375
|
our_clients: {
|
|
349
376
|
title: string;
|
|
@@ -891,6 +918,33 @@ declare const _default: {
|
|
|
891
918
|
title: string;
|
|
892
919
|
};
|
|
893
920
|
LLP: string;
|
|
921
|
+
slogan: string;
|
|
922
|
+
newVersion: {
|
|
923
|
+
services: {
|
|
924
|
+
title: string;
|
|
925
|
+
counterparties: string;
|
|
926
|
+
compliance: string;
|
|
927
|
+
edo: string;
|
|
928
|
+
ved: string;
|
|
929
|
+
procurement: string;
|
|
930
|
+
fines: string;
|
|
931
|
+
work: string;
|
|
932
|
+
analytics: string;
|
|
933
|
+
};
|
|
934
|
+
useful: {
|
|
935
|
+
title: string;
|
|
936
|
+
apiDescription: string;
|
|
937
|
+
userAgreement: string;
|
|
938
|
+
privacyPolicy: string;
|
|
939
|
+
vacancies: string;
|
|
940
|
+
companyDirectory: string;
|
|
941
|
+
};
|
|
942
|
+
contacts: {
|
|
943
|
+
title: string;
|
|
944
|
+
address: string;
|
|
945
|
+
goToChat: string;
|
|
946
|
+
};
|
|
947
|
+
};
|
|
894
948
|
};
|
|
895
949
|
our_clients: {
|
|
896
950
|
title: string;
|
|
@@ -1438,6 +1492,33 @@ declare const _default: {
|
|
|
1438
1492
|
title: string;
|
|
1439
1493
|
};
|
|
1440
1494
|
LLP: string;
|
|
1495
|
+
slogan: string;
|
|
1496
|
+
newVersion: {
|
|
1497
|
+
services: {
|
|
1498
|
+
title: string;
|
|
1499
|
+
counterparties: string;
|
|
1500
|
+
compliance: string;
|
|
1501
|
+
edo: string;
|
|
1502
|
+
ved: string;
|
|
1503
|
+
procurement: string;
|
|
1504
|
+
fines: string;
|
|
1505
|
+
work: string;
|
|
1506
|
+
analytics: string;
|
|
1507
|
+
};
|
|
1508
|
+
useful: {
|
|
1509
|
+
title: string;
|
|
1510
|
+
apiDescription: string;
|
|
1511
|
+
userAgreement: string;
|
|
1512
|
+
privacyPolicy: string;
|
|
1513
|
+
vacancies: string;
|
|
1514
|
+
companyDirectory: string;
|
|
1515
|
+
};
|
|
1516
|
+
contacts: {
|
|
1517
|
+
title: string;
|
|
1518
|
+
address: string;
|
|
1519
|
+
goToChat: string;
|
|
1520
|
+
};
|
|
1521
|
+
};
|
|
1441
1522
|
};
|
|
1442
1523
|
our_clients: {
|
|
1443
1524
|
title: string;
|
|
@@ -338,6 +338,33 @@ declare const RuLocale: {
|
|
|
338
338
|
title: string;
|
|
339
339
|
};
|
|
340
340
|
LLP: string;
|
|
341
|
+
slogan: string;
|
|
342
|
+
newVersion: {
|
|
343
|
+
services: {
|
|
344
|
+
title: string;
|
|
345
|
+
counterparties: string;
|
|
346
|
+
compliance: string;
|
|
347
|
+
edo: string;
|
|
348
|
+
ved: string;
|
|
349
|
+
procurement: string;
|
|
350
|
+
fines: string;
|
|
351
|
+
work: string;
|
|
352
|
+
analytics: string;
|
|
353
|
+
};
|
|
354
|
+
useful: {
|
|
355
|
+
title: string;
|
|
356
|
+
apiDescription: string;
|
|
357
|
+
userAgreement: string;
|
|
358
|
+
privacyPolicy: string;
|
|
359
|
+
vacancies: string;
|
|
360
|
+
companyDirectory: string;
|
|
361
|
+
};
|
|
362
|
+
contacts: {
|
|
363
|
+
title: string;
|
|
364
|
+
address: string;
|
|
365
|
+
goToChat: string;
|
|
366
|
+
};
|
|
367
|
+
};
|
|
341
368
|
};
|
|
342
369
|
our_clients: {
|
|
343
370
|
title: string;
|
package/dist/runtime/lang/ru.js
CHANGED
|
@@ -331,7 +331,34 @@ const RuLocale = {
|
|
|
331
331
|
compliance: {
|
|
332
332
|
title: "\u041A\u043E\u043C\u043F\u043B\u0430\u0435\u043D\u0441"
|
|
333
333
|
},
|
|
334
|
-
LLP: "\u0422\u041E\u041E"
|
|
334
|
+
LLP: "\u0422\u041E\u041E",
|
|
335
|
+
slogan: "\u0415\u0434\u0438\u043D\u043E\u0435 \u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u0434\u0435\u043B\u043E\u0432\u044B\u0445 \u0437\u0430\u0434\u0430\u0447",
|
|
336
|
+
newVersion: {
|
|
337
|
+
services: {
|
|
338
|
+
title: "\u0421\u0435\u0440\u0432\u0438\u0441\u044B",
|
|
339
|
+
counterparties: "\u041A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u044B",
|
|
340
|
+
compliance: "\u041A\u043E\u043C\u043F\u043B\u0430\u0435\u043D\u0441",
|
|
341
|
+
edo: "\u042D\u0414\u041E",
|
|
342
|
+
ved: "\u0412\u042D\u0414",
|
|
343
|
+
procurement: "\u0417\u0430\u043A\u0443\u043F\u043A\u0438",
|
|
344
|
+
fines: "\u0428\u0442\u0440\u0430\u0444\u044B",
|
|
345
|
+
work: "\u0420\u0430\u0431\u043E\u0442\u0430",
|
|
346
|
+
analytics: "\u0410\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0430"
|
|
347
|
+
},
|
|
348
|
+
useful: {
|
|
349
|
+
title: "\u041F\u043E\u043B\u0435\u0437\u043D\u043E\u0435",
|
|
350
|
+
apiDescription: "\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 API",
|
|
351
|
+
userAgreement: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0435 \u0441\u043E\u0433\u043B\u0430\u0448\u0435\u043D\u0438\u0435",
|
|
352
|
+
privacyPolicy: "\u041F\u043E\u043B\u0438\u0442\u0438\u043A\u0430 \u043A\u043E\u043D\u0444\u0438\u0434\u0435\u043D\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u0441\u0442\u0438",
|
|
353
|
+
vacancies: "\u0412\u0430\u043A\u0430\u043D\u0441\u0438\u0438",
|
|
354
|
+
companyDirectory: "\u041A\u0430\u0442\u0430\u043B\u043E\u0433 \u043F\u0440\u0435\u0434\u043F\u0440\u0438\u044F\u0442\u0438\u0439"
|
|
355
|
+
},
|
|
356
|
+
contacts: {
|
|
357
|
+
title: "\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B",
|
|
358
|
+
address: "\u041A\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043D, \u0433. \u0410\u043B\u043C\u0430\u0442\u044B, \u0443\u043B.\u0425\u043E\u0434\u0436\u0430\u043D\u043E\u0432\u0430, 79",
|
|
359
|
+
goToChat: "\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0447\u0430\u0442 \u0441 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u043E\u0439"
|
|
360
|
+
}
|
|
361
|
+
}
|
|
335
362
|
},
|
|
336
363
|
our_clients: {
|
|
337
364
|
title: "\u041D\u0430\u043C \u0434\u043E\u0432\u0435\u0440\u044F\u044E\u0442"
|