adata-ui 4.0.5 → 4.0.7
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/Footer.vue +70 -69
- package/dist/runtime/components/Header.vue +168 -9
- package/dist/runtime/components/Header.vue.d.ts +24 -1
- package/dist/runtime/components/Tag.vue +46 -0
- package/dist/runtime/components/Tag.vue.d.ts +25 -0
- package/dist/runtime/components/header/AlmatyContacts.vue +119 -0
- package/dist/runtime/components/header/AstanaContacts.vue +65 -0
- package/dist/runtime/components/header/AstanaContacts.vue.d.ts +2 -0
- package/dist/runtime/components/header/CardGallery.vue +156 -0
- package/dist/runtime/components/header/CardGallery.vue.d.ts +2 -0
- package/dist/runtime/components/header/ContactMenu.vue +64 -0
- package/dist/runtime/components/header/ContactMenu.vue.d.ts +11 -0
- package/dist/runtime/components/header/HeaderLink.vue +167 -0
- package/dist/runtime/components/header/HeaderLink.vue.d.ts +2 -0
- package/dist/runtime/components/header/ListItem.vue +26 -0
- package/dist/runtime/components/header/ListItem.vue.d.ts +7 -0
- package/dist/runtime/components/header/NavCard.vue +40 -0
- package/dist/runtime/components/header/NavCard.vue.d.ts +8 -0
- package/dist/runtime/components/header/NavList.vue +58 -0
- package/dist/runtime/components/header/NavList.vue.d.ts +15 -0
- package/dist/runtime/components/header/ProductMenu.vue +72 -0
- package/dist/runtime/components/header/ProductMenu.vue.d.ts +11 -0
- package/dist/runtime/components/header/ProfileMenu.vue +168 -0
- package/dist/runtime/components/header/ProfileMenu.vue.d.ts +13 -0
- package/dist/runtime/components/header/TopHeader.vue +147 -0
- package/dist/runtime/components/header/TopHeader.vue.d.ts +10 -0
- package/dist/runtime/components/header/types.d.ts +19 -0
- package/dist/runtime/components/header/types.js +0 -0
- package/dist/runtime/composables/useHeaderNavigationLinks.d.ts +28 -0
- package/dist/runtime/composables/useHeaderNavigationLinks.js +238 -0
- package/dist/runtime/i18n.d.ts +1 -1
- package/dist/runtime/icons/arrow/arrow-circle-down.vue +30 -0
- package/dist/runtime/icons/arrow/arrow-circle-down.vue.d.ts +2 -0
- package/dist/runtime/icons/arrow/arrow-graph-up.vue +24 -0
- package/dist/runtime/icons/arrow/arrow-graph-up.vue.d.ts +2 -0
- package/dist/runtime/icons/arrow/arrow-side-up.vue +19 -0
- package/dist/runtime/icons/arrow/arrow-side-up.vue.d.ts +2 -0
- package/dist/runtime/icons/arrow/arrow-top-right-on-square.vue +19 -0
- package/dist/runtime/icons/arrow/arrow-top-right-on-square.vue.d.ts +2 -0
- package/dist/runtime/icons/avto/car.vue +17 -0
- package/dist/runtime/icons/avto/car.vue.d.ts +2 -0
- package/dist/runtime/icons/avto/truck.vue +17 -0
- package/dist/runtime/icons/avto/truck.vue.d.ts +2 -0
- package/dist/runtime/icons/block.vue +19 -0
- package/dist/runtime/icons/block.vue.d.ts +2 -0
- package/dist/runtime/icons/calculator.vue +19 -0
- package/dist/runtime/icons/calculator.vue.d.ts +2 -0
- package/dist/runtime/icons/check-circle.vue +25 -0
- package/dist/runtime/icons/check-circle.vue.d.ts +2 -0
- package/dist/runtime/icons/clipboard-text.vue +17 -0
- package/dist/runtime/icons/clipboard-text.vue.d.ts +2 -0
- package/dist/runtime/icons/clock.vue +25 -0
- package/dist/runtime/icons/clock.vue.d.ts +2 -0
- package/dist/runtime/icons/color-mode/moon.vue +20 -0
- package/dist/runtime/icons/color-mode/moon.vue.d.ts +2 -0
- package/dist/runtime/icons/color-mode/sun.vue +27 -0
- package/dist/runtime/icons/color-mode/sun.vue.d.ts +2 -0
- package/dist/runtime/icons/communication/mail.vue +19 -0
- package/dist/runtime/icons/communication/mail.vue.d.ts +2 -0
- package/dist/runtime/icons/communication/phone.vue +19 -0
- package/dist/runtime/icons/communication/phone.vue.d.ts +2 -0
- package/dist/runtime/icons/company.vue +17 -0
- package/dist/runtime/icons/company.vue.d.ts +2 -0
- package/dist/runtime/icons/currency/dollar.vue +19 -0
- package/dist/runtime/icons/currency/dollar.vue.d.ts +2 -0
- package/dist/runtime/icons/currency/down.vue +22 -0
- package/dist/runtime/icons/currency/down.vue.d.ts +2 -0
- package/dist/runtime/icons/currency/eur.vue +69 -0
- package/dist/runtime/icons/currency/eur.vue.d.ts +2 -0
- package/dist/runtime/icons/currency/rub.vue +25 -0
- package/dist/runtime/icons/currency/rub.vue.d.ts +2 -0
- package/dist/runtime/icons/currency/usd.vue +269 -0
- package/dist/runtime/icons/currency/usd.vue.d.ts +2 -0
- package/dist/runtime/icons/currency/yuan.vue +37 -0
- package/dist/runtime/icons/currency/yuan.vue.d.ts +2 -0
- package/dist/runtime/icons/document/hdocument.vue +17 -0
- package/dist/runtime/icons/document/hdocument.vue.d.ts +2 -0
- package/dist/runtime/icons/document/id.vue +19 -0
- package/dist/runtime/icons/document/id.vue.d.ts +2 -0
- package/dist/runtime/icons/document/profile.vue +19 -0
- package/dist/runtime/icons/document/profile.vue.d.ts +2 -0
- package/dist/runtime/icons/file.vue +19 -0
- package/dist/runtime/icons/file.vue.d.ts +2 -0
- package/dist/runtime/icons/globe.vue +19 -0
- package/dist/runtime/icons/globe.vue.d.ts +2 -0
- package/dist/runtime/icons/handshake.vue +19 -0
- package/dist/runtime/icons/handshake.vue.d.ts +2 -0
- package/dist/runtime/icons/info/info-circle.vue +29 -0
- package/dist/runtime/icons/info/info-circle.vue.d.ts +2 -0
- package/dist/runtime/icons/link-chain.vue +31 -0
- package/dist/runtime/icons/link-chain.vue.d.ts +2 -0
- package/dist/runtime/icons/loader-circle.vue +41 -0
- package/dist/runtime/icons/loader-circle.vue.d.ts +2 -0
- package/dist/runtime/icons/logo/adata.vue +48 -0
- package/dist/runtime/icons/logo/adata.vue.d.ts +2 -0
- package/dist/runtime/icons/logo/logo.vue +27 -0
- package/dist/runtime/icons/logo/logo.vue.d.ts +2 -0
- package/dist/runtime/icons/medal.vue +17 -0
- package/dist/runtime/icons/medal.vue.d.ts +2 -0
- package/dist/runtime/icons/navigation/expand-window.vue +19 -0
- package/dist/runtime/icons/navigation/expand-window.vue.d.ts +2 -0
- package/dist/runtime/icons/navigation/location.vue +25 -0
- package/dist/runtime/icons/navigation/location.vue.d.ts +2 -0
- package/dist/runtime/icons/navigation/logout.vue +19 -0
- package/dist/runtime/icons/navigation/logout.vue.d.ts +2 -0
- package/dist/runtime/icons/plus.vue +24 -0
- package/dist/runtime/icons/plus.vue.d.ts +2 -0
- package/dist/runtime/icons/receipt/hcheck.vue +27 -0
- package/dist/runtime/icons/receipt/hcheck.vue.d.ts +2 -0
- package/dist/runtime/icons/receipt/receipt.vue +27 -0
- package/dist/runtime/icons/receipt/receipt.vue.d.ts +2 -0
- package/dist/runtime/icons/scale.vue +19 -0
- package/dist/runtime/icons/scale.vue.d.ts +2 -0
- package/dist/runtime/icons/search.vue +27 -0
- package/dist/runtime/icons/search.vue.d.ts +2 -0
- package/dist/runtime/icons/socials/whatsapp.vue +21 -0
- package/dist/runtime/icons/socials/whatsapp.vue.d.ts +2 -0
- package/dist/runtime/icons/sviazi.vue +19 -0
- package/dist/runtime/icons/sviazi.vue.d.ts +2 -0
- package/dist/runtime/icons/users/users-three.vue +17 -0
- package/dist/runtime/icons/users/users-three.vue.d.ts +2 -0
- package/dist/runtime/icons/users/users.vue +31 -0
- package/dist/runtime/icons/users/users.vue.d.ts +2 -0
- package/dist/runtime/icons/work-bag.vue +20 -0
- package/dist/runtime/icons/work-bag.vue.d.ts +2 -0
- package/dist/runtime/icons/x-mark.vue +18 -0
- package/dist/runtime/icons/x-mark.vue.d.ts +2 -0
- package/dist/runtime/shared/constants/pages.d.ts +68 -0
- package/dist/runtime/shared/constants/pages.js +68 -0
- package/package.json +3 -1
- package/dist/runtime/icons/adata.vue +0 -19
- /package/dist/runtime/{icons/adata.vue.d.ts → components/header/AlmatyContacts.vue.d.ts} +0 -0
package/dist/module.json
CHANGED
|
@@ -5,6 +5,7 @@ import ISocialsInstagram from "#icons/socials/instagram.vue";
|
|
|
5
5
|
import ISocialsTelegram from "#icons/socials/telegram.vue";
|
|
6
6
|
import ISocialsFacebook from "#icons/socials/facebook.vue";
|
|
7
7
|
import ISocialsTiktok from "#icons/socials/tik-tok.vue";
|
|
8
|
+
import IAdata from "#icons/logo/adata.vue";
|
|
8
9
|
import { useI18n, ref } from "#imports";
|
|
9
10
|
const year = (/* @__PURE__ */ new Date()).getFullYear();
|
|
10
11
|
const { t } = useI18n();
|
|
@@ -45,73 +46,73 @@ const info = ref([]);
|
|
|
45
46
|
</script>
|
|
46
47
|
|
|
47
48
|
<template>
|
|
48
|
-
<div
|
|
49
|
-
id="footer"
|
|
50
|
-
class="bg-deepblue-900 dark:bg-gray-900 lg:pt-10"
|
|
51
|
-
>
|
|
52
|
-
<div class="container mx-auto px-4 2xl:px-16 py-5 text-white">
|
|
53
|
-
<i-adata
|
|
54
|
-
filled
|
|
55
|
-
:font-controlled="false"
|
|
56
|
-
class="mb-8 h-[26px] w-[92px] lg:hidden"
|
|
57
|
-
/>
|
|
58
|
-
<div class="grid gap-5 lg:grid-cols-5 lg:gap-10 xl:grid-cols-6">
|
|
59
|
-
<div
|
|
60
|
-
v-for="(link, key) in links"
|
|
61
|
-
:key="key"
|
|
62
|
-
>
|
|
63
|
-
<div
|
|
64
|
-
:content="link.items"
|
|
65
|
-
:label="t(link.title)"
|
|
66
|
-
:link="link.link.replace(/\/$/, '')"
|
|
67
|
-
/>
|
|
68
|
-
</div>
|
|
69
|
-
</div>
|
|
70
|
-
<div class="flex grow justify-end gap-8 py-5">
|
|
71
|
-
<nuxt-link
|
|
72
|
-
v-for="(social, idx) in socialMedia"
|
|
73
|
-
:key="idx"
|
|
74
|
-
target="_blank"
|
|
75
|
-
:to="social.link"
|
|
76
|
-
:aria-label="social.name"
|
|
77
|
-
>
|
|
78
|
-
<component
|
|
79
|
-
:is="social.icon"
|
|
80
|
-
filled
|
|
81
|
-
:font-controlled="false"
|
|
82
|
-
class="social-icon h-[28px] w-[28px]"
|
|
83
|
-
/>
|
|
84
|
-
</nuxt-link>
|
|
85
|
-
</div>
|
|
86
|
-
</div>
|
|
87
|
-
<div class="relative">
|
|
88
|
-
<div class="container mx-auto px-4 2xl:px-16 py-5">
|
|
89
|
-
<div
|
|
90
|
-
class="flex flex-col gap-10 text-xs text-white before:absolute before:left-0 before:top-0 before:h-[0.5px] before:w-full before:bg-white lg:flex-row lg:items-center lg:gap-5"
|
|
91
|
-
>
|
|
92
|
-
<div class="flex flex-col gap-4 lg:flex-row lg:gap-6">
|
|
93
|
-
<nuxt-link
|
|
94
|
-
v-for="(item, idx) in info"
|
|
95
|
-
:key="idx"
|
|
96
|
-
target="_blank"
|
|
97
|
-
class="text-[10px]"
|
|
98
|
-
:to="item.link"
|
|
99
|
-
>
|
|
100
|
-
{{ t(item.title) }}
|
|
101
|
-
</nuxt-link>
|
|
102
|
-
</div>
|
|
103
|
-
<div class="flex justify-center lg:grow lg:items-center lg:justify-end lg:gap-4">
|
|
104
|
-
<div class="flex flex-col gap-1">
|
|
105
|
-
<span>{{ year }} © {{ t("footer.LLP") }} "Alldata"</span>
|
|
106
|
-
</div>
|
|
107
|
-
<i-adata
|
|
108
|
-
filled
|
|
109
|
-
:font-controlled="false"
|
|
110
|
-
class="hidden h-[26px] w-[92px] lg:block"
|
|
111
|
-
/>
|
|
112
|
-
</div>
|
|
113
|
-
</div>
|
|
114
|
-
</div>
|
|
115
|
-
</div>
|
|
116
|
-
</div>
|
|
49
|
+
<div
|
|
50
|
+
id="footer"
|
|
51
|
+
class="bg-deepblue-900 dark:bg-gray-900 lg:pt-10"
|
|
52
|
+
>
|
|
53
|
+
<div class="container mx-auto px-4 2xl:px-16 py-5 text-white">
|
|
54
|
+
<i-adata
|
|
55
|
+
filled
|
|
56
|
+
:font-controlled="false"
|
|
57
|
+
class="mb-8 h-[26px] w-[92px] lg:hidden"
|
|
58
|
+
/>
|
|
59
|
+
<div class="grid gap-5 lg:grid-cols-5 lg:gap-10 xl:grid-cols-6">
|
|
60
|
+
<div
|
|
61
|
+
v-for="(link, key) in links"
|
|
62
|
+
:key="key"
|
|
63
|
+
>
|
|
64
|
+
<div
|
|
65
|
+
:content="link.items"
|
|
66
|
+
:label="t(link.title)"
|
|
67
|
+
:link="link.link.replace(/\/$/, '')"
|
|
68
|
+
/>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
<div class="flex grow justify-end gap-8 py-5">
|
|
72
|
+
<nuxt-link
|
|
73
|
+
v-for="(social, idx) in socialMedia"
|
|
74
|
+
:key="idx"
|
|
75
|
+
target="_blank"
|
|
76
|
+
:to="social.link"
|
|
77
|
+
:aria-label="social.name"
|
|
78
|
+
>
|
|
79
|
+
<component
|
|
80
|
+
:is="social.icon"
|
|
81
|
+
filled
|
|
82
|
+
:font-controlled="false"
|
|
83
|
+
class="social-icon h-[28px] w-[28px]"
|
|
84
|
+
/>
|
|
85
|
+
</nuxt-link>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
<div class="relative">
|
|
89
|
+
<div class="container mx-auto px-4 2xl:px-16 py-5">
|
|
90
|
+
<div
|
|
91
|
+
class="flex flex-col gap-10 text-xs text-white before:absolute before:left-0 before:top-0 before:h-[0.5px] before:w-full before:bg-white lg:flex-row lg:items-center lg:gap-5"
|
|
92
|
+
>
|
|
93
|
+
<div class="flex flex-col gap-4 lg:flex-row lg:gap-6">
|
|
94
|
+
<nuxt-link
|
|
95
|
+
v-for="(item, idx) in info"
|
|
96
|
+
:key="idx"
|
|
97
|
+
target="_blank"
|
|
98
|
+
class="text-[10px]"
|
|
99
|
+
:to="item.link"
|
|
100
|
+
>
|
|
101
|
+
{{ t(item.title) }}
|
|
102
|
+
</nuxt-link>
|
|
103
|
+
</div>
|
|
104
|
+
<div class="flex justify-center lg:grow lg:items-center lg:justify-end lg:gap-4">
|
|
105
|
+
<div class="flex flex-col gap-1">
|
|
106
|
+
<span>{{ year }} © {{ t("footer.LLP") }} "Alldata"</span>
|
|
107
|
+
</div>
|
|
108
|
+
<i-adata
|
|
109
|
+
filled
|
|
110
|
+
:font-controlled="false"
|
|
111
|
+
class="hidden h-[26px] w-[92px] lg:block"
|
|
112
|
+
/>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
117
118
|
</template>
|
|
@@ -1,13 +1,172 @@
|
|
|
1
|
-
<script setup
|
|
2
|
-
|
|
1
|
+
<script setup>
|
|
2
|
+
import TopHeader from "./header/TopHeader.vue";
|
|
3
|
+
import HeaderLink from "./header/HeaderLink.vue";
|
|
4
|
+
import ProfileMenu from "./header/ProfileMenu.vue";
|
|
5
|
+
import { useI18n, ref, onBeforeMount } from "#imports";
|
|
6
|
+
import ILogo from "#icons/logo/logo.vue";
|
|
7
|
+
import ILogout from "#icons/navigation/logout.vue";
|
|
8
|
+
import IAdata from "#icons/logo/adata.vue";
|
|
9
|
+
import ISearch from "#icons/search.vue";
|
|
10
|
+
const props = defineProps({
|
|
11
|
+
replenish: { type: String, required: false },
|
|
12
|
+
hasNotification: { type: Boolean, required: false },
|
|
13
|
+
email: { type: null, required: false },
|
|
14
|
+
rate: { type: String, required: false, default: "\u0411\u0430\u0437\u043E\u0432\u044B\u0439" },
|
|
15
|
+
daysRemaining: { type: Number, required: false, default: 0 },
|
|
16
|
+
limitRemaining: { type: Number, required: false, default: 0 },
|
|
17
|
+
balance: { type: Number, required: false, default: 0 },
|
|
18
|
+
isAuthenticated: { type: Boolean, required: false },
|
|
19
|
+
showLogIn: { type: Boolean, required: false, default: true },
|
|
20
|
+
mobileHeaderType: { type: String, required: false, default: "default" },
|
|
21
|
+
module: { type: String, required: false, default: "pk" },
|
|
22
|
+
oldVersion: { type: String, required: false }
|
|
23
|
+
});
|
|
24
|
+
const emit = defineEmits(["logout", "search", "login"]);
|
|
25
|
+
const { t } = useI18n();
|
|
26
|
+
const langIsOn = false;
|
|
27
|
+
const contacts = ref([]);
|
|
28
|
+
const goAuth = () => {
|
|
29
|
+
if (window) {
|
|
30
|
+
emit("login");
|
|
31
|
+
let fullPath = encodeURIComponent(window.location.toString());
|
|
32
|
+
if (fullPath.includes("basic-info")) {
|
|
33
|
+
fullPath = fullPath.replace("%2Fcounterparty%2Fmain", "").replace("%2Fbasic-info", "");
|
|
34
|
+
}
|
|
35
|
+
location.href = `https://id.adata.kz/?url=${fullPath}`;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
const goToAnotherModule = () => {
|
|
39
|
+
location.href = "https://adata.kz";
|
|
40
|
+
};
|
|
41
|
+
const fetchContacts = async () => {
|
|
42
|
+
try {
|
|
43
|
+
const response = await fetch(
|
|
44
|
+
"https://pk-api.adata.kz/api/v1/data/counterparty/contacts/sales-department"
|
|
45
|
+
);
|
|
46
|
+
const { data } = await response.json();
|
|
47
|
+
contacts.value = data;
|
|
48
|
+
} catch (e) {
|
|
49
|
+
console.error(e.message);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
onBeforeMount(() => {
|
|
53
|
+
fetchContacts();
|
|
54
|
+
});
|
|
3
55
|
</script>
|
|
4
56
|
|
|
5
57
|
<template>
|
|
6
|
-
<
|
|
7
|
-
|
|
8
|
-
|
|
58
|
+
<div>
|
|
59
|
+
<top-header
|
|
60
|
+
:days-remaining="daysRemaining"
|
|
61
|
+
:is-authenticated="isAuthenticated"
|
|
62
|
+
:module-name="module"
|
|
63
|
+
:limit-remaining="limitRemaining"
|
|
64
|
+
/>
|
|
65
|
+
<header
|
|
66
|
+
class="relative h-16 border-b border-deepblue-900/10 bg-white dark:border-gray-200/10 dark:bg-gray-900"
|
|
67
|
+
>
|
|
68
|
+
<div class="container mx-auto mobile-padding flex h-full items-center justify-between gap-2">
|
|
69
|
+
<!-- Desktop hidden -->
|
|
70
|
+
<section
|
|
71
|
+
id="mobile-header"
|
|
72
|
+
class="grow lg:hidden"
|
|
73
|
+
>
|
|
74
|
+
<div
|
|
75
|
+
v-if="mobileHeaderType === 'default'"
|
|
76
|
+
class="flex justify-center"
|
|
77
|
+
>
|
|
78
|
+
<nuxt-link
|
|
79
|
+
class="text-deepblue dark:text-[#E3E5E8]"
|
|
80
|
+
@click="goToAnotherModule"
|
|
81
|
+
>
|
|
82
|
+
<i-adata
|
|
83
|
+
:font-controlled="false"
|
|
84
|
+
filled
|
|
85
|
+
/>
|
|
86
|
+
</nuxt-link>
|
|
87
|
+
</div>
|
|
88
|
+
<div
|
|
89
|
+
v-else-if="mobileHeaderType === 'search'"
|
|
90
|
+
class="flex w-full items-center gap-2 bg-white dark:bg-gray-900 lg:hidden"
|
|
91
|
+
>
|
|
92
|
+
<i-logo
|
|
93
|
+
class="dark:text-gray-200"
|
|
94
|
+
@click="goToAnotherModule"
|
|
95
|
+
/>
|
|
96
|
+
<button
|
|
97
|
+
class="flex w-full items-center gap-2 rounded bg-gray-50 px-4 py-1.5 dark:bg-gray-800 dark:text-gray-500"
|
|
98
|
+
@click="$emit('search')"
|
|
99
|
+
>
|
|
100
|
+
<i-search />
|
|
101
|
+
<span class="body-400">Найти</span>
|
|
102
|
+
</button>
|
|
103
|
+
</div>
|
|
104
|
+
</section>
|
|
105
|
+
<div class="lg:hidden">
|
|
106
|
+
<div
|
|
107
|
+
v-if="langIsOn || module === 'fea'"
|
|
108
|
+
class="lg:hidden"
|
|
109
|
+
/>
|
|
110
|
+
</div>
|
|
111
|
+
<!-- Mobile hidden -->
|
|
112
|
+
<nav class="hidden items-center gap-4 lg:flex">
|
|
113
|
+
<nuxt-link
|
|
114
|
+
aria-label="Adata-logo"
|
|
115
|
+
to="https://adata.kz"
|
|
116
|
+
class="text-deepblue cursor-pointer dark:text-[#E3E5E8]"
|
|
117
|
+
@click="goToAnotherModule"
|
|
118
|
+
>
|
|
119
|
+
<i-adata
|
|
120
|
+
:font-controlled="false"
|
|
121
|
+
filled
|
|
122
|
+
/>
|
|
123
|
+
</nuxt-link>
|
|
124
|
+
<header-link />
|
|
125
|
+
</nav>
|
|
126
|
+
<div class="text-deepblue hidden items-center gap-4 dark:text-[#E3E5E8] lg:flex">
|
|
127
|
+
<!-- Mobile hidden -->
|
|
128
|
+
<div class="hidden items-center gap-4 lg:flex">
|
|
129
|
+
<div
|
|
130
|
+
v-if="oldVersion"
|
|
131
|
+
:url="oldVersion"
|
|
132
|
+
/>
|
|
133
|
+
<div />
|
|
134
|
+
<div v-if="langIsOn || module === 'fea'" />
|
|
135
|
+
</div>
|
|
136
|
+
|
|
137
|
+
<!-- <div v-show="isAuthenticated"> -->
|
|
138
|
+
<!-- <template #default="{ onExpand, expanded }"> -->
|
|
139
|
+
<!-- <div -->
|
|
140
|
+
<!-- class="hidden cursor-pointer items-center gap-2 text-sm font-semibold lg:flex" -->
|
|
141
|
+
<!-- @click.stop="onExpand" -->
|
|
142
|
+
<!-- > -->
|
|
143
|
+
<!-- <span>{{ email }}</span> -->
|
|
144
|
+
<!-- <arrow :class="{ 'rotate-180': expanded }" /> -->
|
|
145
|
+
<!-- </div> -->
|
|
146
|
+
<!-- </template> -->
|
|
147
|
+
<!-- <template #content> -->
|
|
148
|
+
<!-- <profile-menu -->
|
|
149
|
+
<!-- :balance="balance" -->
|
|
150
|
+
<!-- :days-remaining="daysRemaining" -->
|
|
151
|
+
<!-- :limit-remaining="limitRemaining" -->
|
|
152
|
+
<!-- :rate="rate" -->
|
|
153
|
+
<!-- :replenish="replenish" -->
|
|
154
|
+
<!-- @logout="$emit('logout')" -->
|
|
155
|
+
<!-- /> -->
|
|
156
|
+
<!-- </template> -->
|
|
157
|
+
<!-- </div> -->
|
|
158
|
+
<div
|
|
159
|
+
v-show="!isAuthenticated && showLogIn"
|
|
160
|
+
class="hidden cursor-pointer items-center gap-2 font-semibold lg:flex"
|
|
161
|
+
@click="goAuth"
|
|
162
|
+
>
|
|
163
|
+
<i-logout class="lg:h-4 lg:w-4" />
|
|
164
|
+
<span class="hidden lg:inline-block">
|
|
165
|
+
{{ t("header.login") }}
|
|
166
|
+
</span>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
</div>
|
|
170
|
+
</header>
|
|
171
|
+
</div>
|
|
9
172
|
</template>
|
|
10
|
-
|
|
11
|
-
<style scoped>
|
|
12
|
-
|
|
13
|
-
</style>
|
|
@@ -1,2 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ProjectKeys } from './header/types.js';
|
|
2
|
+
interface Props {
|
|
3
|
+
replenish?: string;
|
|
4
|
+
hasNotification?: boolean;
|
|
5
|
+
email?: string | undefined;
|
|
6
|
+
rate?: string;
|
|
7
|
+
daysRemaining?: number;
|
|
8
|
+
limitRemaining?: number;
|
|
9
|
+
balance?: number;
|
|
10
|
+
isAuthenticated?: boolean;
|
|
11
|
+
showLogIn?: boolean;
|
|
12
|
+
mobileHeaderType?: 'search' | 'default';
|
|
13
|
+
module?: ProjectKeys;
|
|
14
|
+
oldVersion?: string;
|
|
15
|
+
}
|
|
16
|
+
declare const _default: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, any, string, import("vue").PublicProps, any, {
|
|
17
|
+
daysRemaining: number;
|
|
18
|
+
limitRemaining: number;
|
|
19
|
+
module: ProjectKeys;
|
|
20
|
+
rate: string;
|
|
21
|
+
balance: number;
|
|
22
|
+
showLogIn: boolean;
|
|
23
|
+
mobileHeaderType: "search" | "default";
|
|
24
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
2
25
|
export default _default;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { computed } from "#imports";
|
|
3
|
+
defineOptions({ name: "AStatusBadge" });
|
|
4
|
+
const props = defineProps({
|
|
5
|
+
type: { type: String, required: false, default: "primary" },
|
|
6
|
+
view: { type: String, required: false, default: "default" },
|
|
7
|
+
size: { type: String, required: false, default: "lg" },
|
|
8
|
+
customClasses: { type: String, required: false, default: "" }
|
|
9
|
+
});
|
|
10
|
+
const classes = computed(() => [
|
|
11
|
+
"text-sm rounded-md select-none inline-flex gap-[5.5px] justify-center items-center",
|
|
12
|
+
typeSwitchValues[props.view][props.type],
|
|
13
|
+
props.size === "xs" ? "px-4 py-[2px] text-xs font-bold" : "",
|
|
14
|
+
props.size === "sm" ? "text-xs font-semibold px-4 py-[2px] h-6" : "",
|
|
15
|
+
props.size === "lg" ? "px-4 py-[7.5px] font-semibold" : ""
|
|
16
|
+
]);
|
|
17
|
+
const typeSwitchValues = {
|
|
18
|
+
default: {
|
|
19
|
+
primary: "bg-blue-700 text-white dark:text-gray-900 dark:bg-blue-500",
|
|
20
|
+
success: "bg-green-500 text-white dark:text-gray-200 dark:bg-green-400",
|
|
21
|
+
danger: "bg-red-500 text-white dark:text-gray-200 ",
|
|
22
|
+
warning: "bg-yellow-400 text-white dark:text-gray-200 ",
|
|
23
|
+
gray: "bg-deepblue-900 text-white dark:text-gray-200 dark:bg-gray-200/10",
|
|
24
|
+
orange: "bg-orange-600 text-white dark:text-gray-200"
|
|
25
|
+
},
|
|
26
|
+
inverted: {
|
|
27
|
+
primary: "bg-blue-700/10 text-blue-700 dark:text-blue-500 dark:bg-[#1EABFF1A]",
|
|
28
|
+
success: "bg-green-500/20 text-green-500 dark:text-green-400 dark:bg-green-400/20",
|
|
29
|
+
danger: "bg-red-500/10 text-red-500 dark:text-red-400 dark:bg-red-400/10",
|
|
30
|
+
warning: "bg-yellow-400/10 text-yellow-400",
|
|
31
|
+
gray: "bg-deepblue-900/10 text-gray-600 dark:text-gray-200 dark:bg-gray-200/10",
|
|
32
|
+
orange: "bg-orange-600/10 text-orange-600"
|
|
33
|
+
},
|
|
34
|
+
transparent: {
|
|
35
|
+
success: "bg-green-500/10 text-green-500 dark:bg-green-400/10 dark:text-green-400",
|
|
36
|
+
danger: "bg-red-500/10 text-red-500 dark:bg-red-400/10 dark:text-red-400"
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<template>
|
|
42
|
+
<div :class="[[classes], customClasses]">
|
|
43
|
+
<slot name="point" />
|
|
44
|
+
<slot />
|
|
45
|
+
</div>
|
|
46
|
+
</template>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
interface Props {
|
|
2
|
+
type?: 'primary' | 'success' | 'danger' | 'gray' | 'orange' | 'warning';
|
|
3
|
+
view?: 'default' | 'inverted' | 'transparent';
|
|
4
|
+
size?: 'xs' | 'sm' | 'lg';
|
|
5
|
+
customClasses?: string;
|
|
6
|
+
}
|
|
7
|
+
declare var __VLS_1: {}, __VLS_3: {};
|
|
8
|
+
type __VLS_Slots = {} & {
|
|
9
|
+
point?: (props: typeof __VLS_1) => any;
|
|
10
|
+
} & {
|
|
11
|
+
default?: (props: typeof __VLS_3) => any;
|
|
12
|
+
};
|
|
13
|
+
declare const __VLS_component: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
14
|
+
type: "primary" | "success" | "danger" | "gray" | "orange" | "warning";
|
|
15
|
+
view: "default" | "inverted" | "transparent";
|
|
16
|
+
size: "xs" | "sm" | "lg";
|
|
17
|
+
customClasses: string;
|
|
18
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
19
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
20
|
+
export default _default;
|
|
21
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
22
|
+
new (): {
|
|
23
|
+
$slots: S;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import Location from "#icons/navigation/location.vue";
|
|
3
|
+
import Mail from "#icons/communication/mail.vue";
|
|
4
|
+
import Clock from "#icons/clock.vue";
|
|
5
|
+
import ExpandWindow from "#icons/navigation/expand-window.vue";
|
|
6
|
+
import { computed, ref, useI18n } from "#imports";
|
|
7
|
+
import Phone from "#icons/communication/phone.vue";
|
|
8
|
+
import Whatsapp from "#icons/socials/whatsapp.vue";
|
|
9
|
+
const contacts = ref([]);
|
|
10
|
+
const { t } = useI18n();
|
|
11
|
+
const AlmatyItems = [
|
|
12
|
+
{
|
|
13
|
+
title: "header.contacts.almaty.adress.title",
|
|
14
|
+
subtitle: "header.contacts.almaty.adress.subtitle",
|
|
15
|
+
icon: Location,
|
|
16
|
+
to: "https://yandex.kz/maps/ru/org/avrora_kholding/1099794306/?ll=76.912479%2C43.208928&z=17.72"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
title: "header.contacts.almaty.email.title",
|
|
20
|
+
subtitle: "info@adata.kz",
|
|
21
|
+
icon: Mail,
|
|
22
|
+
to: "mailto:info@adata.kz"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
title: "header.contacts.almaty.schedule.title",
|
|
26
|
+
subtitle: "header.contacts.almaty.schedule.subtitle",
|
|
27
|
+
icon: Clock
|
|
28
|
+
}
|
|
29
|
+
];
|
|
30
|
+
const technicalSupport = [
|
|
31
|
+
{
|
|
32
|
+
subtitle: "header.contacts.almaty.support.linkTitle",
|
|
33
|
+
icon: ExpandWindow,
|
|
34
|
+
to: "https://api.whatsapp.com/send/?phone=77712289041"
|
|
35
|
+
}
|
|
36
|
+
];
|
|
37
|
+
const newContacts = computed(() => contacts.value.map((item) => ({
|
|
38
|
+
subtitle: item.contact,
|
|
39
|
+
icon: item.platform_code === "telephone" ? Phone : Whatsapp,
|
|
40
|
+
to: item.platform_code === "telephone" ? `tel:${item.contact}` : `https://api.whatsapp.com/send/?phone=${item.contact.replace(/\D/g, "")}`
|
|
41
|
+
})));
|
|
42
|
+
</script>
|
|
43
|
+
|
|
44
|
+
<template>
|
|
45
|
+
<div class="h-[272px]">
|
|
46
|
+
<h2 class="heading-02 mb-4">
|
|
47
|
+
{{ t("header.contacts.almaty.title") }}
|
|
48
|
+
</h2>
|
|
49
|
+
<div class="flex gap-10">
|
|
50
|
+
<div class="flex flex-col gap-4">
|
|
51
|
+
<div
|
|
52
|
+
v-for="item in AlmatyItems.slice(0, 3)"
|
|
53
|
+
class="flex flex-col gap-2 "
|
|
54
|
+
>
|
|
55
|
+
<div class="heading-04">
|
|
56
|
+
{{ t(item.title) }}
|
|
57
|
+
</div>
|
|
58
|
+
<a
|
|
59
|
+
class="flex items-center gap-1 text-deepblue-900 dark:text-white"
|
|
60
|
+
:href="item.to"
|
|
61
|
+
>
|
|
62
|
+
<component
|
|
63
|
+
:is="item.icon"
|
|
64
|
+
class="shrink-0"
|
|
65
|
+
/>
|
|
66
|
+
<div class=" body-400">
|
|
67
|
+
{{ t(item.subtitle) }}
|
|
68
|
+
</div>
|
|
69
|
+
</a>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="flex flex-col gap-2 2xl:gap-4">
|
|
73
|
+
<div class="flex flex-col gap-4 h-full justify-between">
|
|
74
|
+
<div class="flex flex-col gap-2 ">
|
|
75
|
+
<div class="heading-04">
|
|
76
|
+
{{ t("header.contacts.almaty.sellDep.title") }}
|
|
77
|
+
</div>
|
|
78
|
+
<div class="grid grid-cols-3 gap-x-8 gap-y-2">
|
|
79
|
+
<a
|
|
80
|
+
v-for="link in newContacts"
|
|
81
|
+
:key="link.subtitle"
|
|
82
|
+
class="flex 2xl:items-center gap-1 text-deepblue-900 dark:text-white"
|
|
83
|
+
:href="link.to"
|
|
84
|
+
:target="link.icon === Whatsapp ? '_blank' : '_self'"
|
|
85
|
+
>
|
|
86
|
+
<component :is="link.icon" />
|
|
87
|
+
<div class="body-400 line-clamp-1">
|
|
88
|
+
{{ link.subtitle }}
|
|
89
|
+
</div>
|
|
90
|
+
</a>
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|
|
93
|
+
<div class="flex flex-col gap-2 ">
|
|
94
|
+
<div class="heading-04 whitespace-nowrap">
|
|
95
|
+
{{ t("header.contacts.almaty.support.title") }}
|
|
96
|
+
</div>
|
|
97
|
+
<div class="flex flex-col lg:gap-y-5">
|
|
98
|
+
<a
|
|
99
|
+
v-for="link in technicalSupport"
|
|
100
|
+
:key="link.subtitle"
|
|
101
|
+
class="flex 2xl:items-center gap-1 text-deepblue-900 dark:text-white"
|
|
102
|
+
:href="link.to"
|
|
103
|
+
target="_blank"
|
|
104
|
+
>
|
|
105
|
+
<div class="body-400 line-clamp-1 text-blue-600">
|
|
106
|
+
{{ t(link.subtitle) }}
|
|
107
|
+
</div>
|
|
108
|
+
<component
|
|
109
|
+
:is="link.icon"
|
|
110
|
+
class="stroke-blue-600"
|
|
111
|
+
/>
|
|
112
|
+
</a>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
</template>
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import Location from "#icons/navigation/location.vue";
|
|
3
|
+
import Mail from "#icons/communication/mail.vue";
|
|
4
|
+
import Clock from "#icons/clock.vue";
|
|
5
|
+
import Whatsapp from "#icons/socials/whatsapp.vue";
|
|
6
|
+
import { useI18n } from "#imports";
|
|
7
|
+
const { t } = useI18n();
|
|
8
|
+
const AstanaItems = [
|
|
9
|
+
{
|
|
10
|
+
title: "header.contacts.astana.adress.title",
|
|
11
|
+
subtitle: "header.contacts.astana.adress.subtitle",
|
|
12
|
+
icon: Location,
|
|
13
|
+
to: "https://yandex.kz/maps/ru/org/adata_consulting/214484722242/?ll=71.429573%2C51.131319&z=20.56"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
title: "header.contacts.astana.email.title",
|
|
17
|
+
subtitle: "info@adata-c.kz",
|
|
18
|
+
icon: Mail,
|
|
19
|
+
to: "mailto:info@adata-c.kz"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
title: "header.contacts.astana.schedule.title",
|
|
23
|
+
subtitle: "header.contacts.astana.schedule.subtitle",
|
|
24
|
+
icon: Clock
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
title: "header.contacts.astana.sellDep.title",
|
|
28
|
+
subtitle: "+7 700 744 00 10",
|
|
29
|
+
icon: Whatsapp,
|
|
30
|
+
to: "https://api.whatsapp.com/send/?phone=77007440010"
|
|
31
|
+
}
|
|
32
|
+
];
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<template>
|
|
36
|
+
<div class="h-[272px]">
|
|
37
|
+
<h2 class="heading-02 mb-4">
|
|
38
|
+
{{ t("header.contacts.astana.title") }}
|
|
39
|
+
</h2>
|
|
40
|
+
<div class="grid grid-cols-2 gap-5 ">
|
|
41
|
+
<div class="xl:grid grid-cols-2 grid-rows-3 flex flex-wrap gap-4 ">
|
|
42
|
+
<div
|
|
43
|
+
v-for="(item, index) in AstanaItems"
|
|
44
|
+
:key="index"
|
|
45
|
+
class="flex flex-col gap-2 "
|
|
46
|
+
:class="{ 'col-span-2': index === 0 }"
|
|
47
|
+
>
|
|
48
|
+
<div class="heading-04">
|
|
49
|
+
{{ t(item.title) }}
|
|
50
|
+
</div>
|
|
51
|
+
<a
|
|
52
|
+
class="flex items-center gap-1 text-deepblue-900 dark:text-white"
|
|
53
|
+
:href="item?.to"
|
|
54
|
+
:target="item.icon === Whatsapp ? '_blank' : '_self'"
|
|
55
|
+
>
|
|
56
|
+
<component :is="item.icon" />
|
|
57
|
+
<div class=" body-400">
|
|
58
|
+
{{ t(item.subtitle) }}
|
|
59
|
+
</div>
|
|
60
|
+
</a>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
</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;
|