adata-ui 2.1.0 → 2.1.2
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/.editorconfig +12 -12
- package/.nuxtrc +1 -1
- package/.playground/app.config.ts +5 -5
- package/README.md +75 -75
- package/app.config.ts +4 -3
- package/app.vue +1 -0
- package/assets/styles/index.scss +104 -0
- package/assets/styles/modules/_base.scss +5 -0
- package/assets/styles/modules/_typography.scss +152 -0
- package/components/elements/README.md +1 -1
- package/components/elements/accordion/AAccordion.vue +13 -12
- package/components/elements/curve-block/ACurveBlock.vue +94 -19
- package/components/elements/feature-description/AFeatureDescription.vue +4 -4
- package/components/elements/illustrations/noAccess.vue +11 -2
- package/components/elements/photos-animation/APhotosAnimation.vue +3 -1
- package/components/elements/select/ASelect.vue +65 -9
- package/components/features/lang-switcher/lang-switcher.vue +8 -1
- package/components/features/payment/banner/BasicPlusLimitBanner.vue +104 -0
- package/components/features/payment/banner/PaymentBanner.vue +108 -0
- package/components/features/payment/process/PaymentKaspiQrSidePanel.vue +158 -0
- package/components/features/payment/process/PaymentKaspiRedirectSidePanel.vue +112 -0
- package/components/features/payment/process/PaymentMethodSidePanel.vue +121 -0
- package/components/features/payment/process/PaymentProcess.vue +138 -0
- package/components/features/payment/process/PaymentTopUpSidePanel.vue +130 -0
- package/components/features/pk-mobile-services/APkMobileServices.vue +21 -2
- package/components/forms/README.md +1 -1
- package/components/forms/checkbox/ACheckbox.vue +0 -2
- package/components/forms/radio-button/ARadioButton.vue +21 -13
- package/components/forms/request-demo/ARequestDemo.vue +21 -7
- package/components/modals/AConfirmationEmail.vue +40 -0
- package/components/modals/AnotherDeviceModal.vue +3 -2
- package/components/modals/ConnectingTariffModal.vue +0 -1
- package/components/modals/ContentNavigationModal.vue +148 -75
- package/components/modals/Insufficient-funds-modal.vue +5 -2
- package/components/modals/LimitReachedModal.vue +4 -3
- package/components/modals/ReportBugModal.vue +3 -3
- package/components/modals/Resend.vue +82 -0
- package/components/modals/SubmitApplicationModal.vue +4 -0
- package/components/modals/id/AuthModal.vue +78 -0
- package/components/modals/id/IdAutoLogoutModal.vue +45 -0
- package/components/modals/id/IdBanner.vue +58 -0
- package/components/modals/id/IdConfirmAccountOtpModal.vue +186 -0
- package/components/modals/id/IdConfirmSuccessfulModal.vue +41 -0
- package/components/modals/id/IdLoginModal.vue +316 -0
- package/components/modals/id/IdModals.vue +114 -0
- package/components/modals/id/IdNewPasswordModal.vue +129 -0
- package/components/modals/id/IdOtpInput.vue +155 -0
- package/components/modals/id/IdPasswordSuccessfulModal.vue +25 -0
- package/components/modals/id/IdRecoveryModal.vue +117 -0
- package/components/modals/id/IdRegistrationModal.vue +215 -0
- package/components/modals/id/IdResetPasswordOtpModal.vue +158 -0
- package/components/modals/id/IdTwoFactorModal.vue +130 -0
- package/components/navigation/README.md +1 -1
- package/components/navigation/bottom-navigation/ABottomNavigation.vue +34 -29
- package/components/navigation/footer/AFooter.vue +210 -57
- package/components/navigation/footer/ui/{new-footer-accordion.vue → a-footer-accordion.vue} +2 -4
- package/components/navigation/header/AHeader.vue +59 -51
- package/components/navigation/header/AlmatyContacts.vue +16 -14
- package/components/navigation/header/AstanaContacts.vue +13 -11
- package/components/navigation/header/CardGallery.vue +5 -4
- package/components/navigation/header/HeaderLink.vue +16 -8
- package/components/navigation/header/NavList.vue +21 -5
- package/components/navigation/header/ProductMenu.vue +8 -78
- package/components/navigation/header/ProfileMenu.vue +10 -5
- package/components/navigation/header/TopHeader.vue +2 -2
- package/components/navigation/mobile-navigation/AMobileNavigation.vue +3 -3
- package/components/navigation/pill-tabs/APillTabs.vue +18 -4
- package/components/navigation/pill-tabs/types.ts +1 -0
- package/components/navigation/side-navigation/ASideNavigation.vue +23 -21
- package/components/overlays/README.md +1 -1
- package/components/overlays/side-panel/ASidePanel.vue +439 -0
- package/components/overlays/tooltip/ATooltip.vue +149 -154
- package/components/utils/removeTrailingSlash.ts +7 -0
- package/composables/useBuyTariffs.ts +91 -0
- package/composables/useHeaderNavigationLinks.ts +174 -297
- package/composables/useIdModals.ts +36 -0
- package/composables/usePayment.ts +74 -0
- package/composables/useUrls.ts +21 -0
- package/eslint.config.mjs +45 -0
- package/icons/adata-logo.vue +1 -1
- package/icons/ai-assistant.vue +13 -0
- package/icons/akimat.vue +20 -0
- package/icons/arrow/arrow-bottom-left-on-square.vue +1 -1
- package/icons/arrow/arrow-circle-reset.vue +1 -1
- package/icons/arrow/arrow-corner.vue +1 -1
- package/icons/arrow/arrow-graph-down.vue +1 -1
- package/icons/arrow/arrow-graph-up.vue +1 -1
- package/icons/arrow/arrow-square-down.vue +1 -1
- package/icons/arrow/arrow-top-right-on-square.vue +1 -1
- package/icons/arrow-currency-gray.vue +1 -1
- package/icons/arrow-currency-green.vue +1 -1
- package/icons/arrow-currency-red.vue +1 -1
- package/icons/avatar.vue +1 -1
- package/icons/bank.vue +5 -0
- package/icons/block.vue +1 -1
- package/icons/bookmark/bookmark-filled.vue +1 -1
- package/icons/bookmark/bookmark.vue +1 -1
- package/icons/browsers/browser-duck.vue +1 -1
- package/icons/browsers/browser-google.vue +7 -1
- package/icons/browsers/browser-yandex.vue +1 -1
- package/icons/building-vector.vue +1 -1
- package/icons/calculator.vue +1 -1
- package/icons/calendar.vue +1 -1
- package/icons/car.vue +1 -1
- package/icons/chart-bar.vue +5 -0
- package/icons/chart-pie.vue +16 -0
- package/icons/check/check-circle.vue +1 -1
- package/icons/check/check.vue +1 -1
- package/icons/check/checkmark-circle.vue +1 -1
- package/icons/check-sb.vue +7 -0
- package/icons/checkbox/checkbox-active.vue +1 -1
- package/icons/checkbox/checkbox-empty.vue +1 -1
- package/icons/checkbox/checkbox-intermediate.vue +1 -1
- package/icons/chevron/chevron-down.vue +1 -1
- package/icons/chevron/chevron-left.vue +1 -1
- package/icons/chevron/chevron-right.vue +1 -1
- package/icons/chevron/chevron-up.vue +1 -1
- package/icons/chevron/double-chevron-right.vue +1 -1
- package/icons/clipboard-text.vue +1 -1
- package/icons/clock.vue +1 -1
- package/icons/company/company-bazis.vue +3 -3
- package/icons/company/company-bereke.vue +13 -13
- package/icons/company/company-bigroup.vue +5 -5
- package/icons/company/company-erg.vue +6 -6
- package/icons/company/company-forte.vue +11 -11
- package/icons/company/company-halyk.vue +4 -4
- package/icons/company/company-jusan.vue +20 -3
- package/icons/company/company-kaspi.vue +3 -3
- package/icons/company/company-mycar.vue +2 -2
- package/icons/company/company-samruk.vue +9 -9
- package/icons/company-egov-small.vue +1 -1
- package/icons/company.vue +1 -1
- package/icons/copy.vue +1 -1
- package/icons/currency/currency-dollar.vue +1 -1
- package/icons/currency/currency-down.vue +1 -1
- package/icons/currency/currency-eur.vue +1 -1
- package/icons/currency/currency-rub.vue +1 -1
- package/icons/currency/currency-tenge.vue +9 -0
- package/icons/currency/currency-usd.vue +1 -1
- package/icons/currency/currency-yuan.vue +1 -1
- package/icons/delete.vue +1 -1
- package/icons/document.vue +1 -1
- package/icons/download.vue +1 -1
- package/icons/edit.vue +1 -1
- package/icons/education.vue +1 -1
- package/icons/egov-small.vue +1 -1
- package/icons/excel-icon.vue +14 -0
- package/icons/expand-window.vue +1 -1
- package/icons/eye-closed.vue +1 -1
- package/icons/eye-open.vue +1 -1
- package/icons/eye-opened.vue +1 -1
- package/icons/file/file.vue +1 -1
- package/icons/filter.vue +1 -1
- package/icons/flag.vue +1 -1
- package/icons/gift.vue +1 -1
- package/icons/globe.vue +1 -1
- package/icons/google.vue +41 -0
- package/icons/hand/hand-thumb-up-filled.vue +1 -1
- package/icons/hand/hand-thumb-up.vue +1 -1
- package/icons/hand-with-phone/hand-with-phone-dark.vue +1 -1
- package/icons/hand-with-phone/hand-with-phone-light.vue +1 -1
- package/icons/handshake.vue +1 -1
- package/icons/hcheck.vue +1 -1
- package/icons/hdocument.vue +1 -1
- package/icons/history.vue +1 -1
- package/icons/horizontal-more.vue +1 -1
- package/icons/hot-line.vue +6 -0
- package/icons/hummer.vue +1 -1
- package/icons/info/info-circle.vue +1 -1
- package/icons/invoice.vue +1 -1
- package/icons/kaspi-qr.vue +13 -0
- package/icons/link-chain.vue +1 -1
- package/icons/link.vue +1 -1
- package/icons/linkedin.vue +24 -24
- package/icons/loader-circle.vue +1 -1
- package/icons/location.vue +1 -1
- package/icons/lock.vue +1 -1
- package/icons/logo.vue +1 -1
- package/icons/logout.vue +1 -1
- package/icons/magnify/magnifying-glass-minus.vue +1 -1
- package/icons/magnify/magnifying-glass-plus.vue +1 -1
- package/icons/magnify/magnifying-glass.vue +1 -1
- package/icons/mail.vue +1 -1
- package/icons/mailru.vue +34 -0
- package/icons/main-filter.vue +1 -1
- package/icons/map/map-pin-filled.vue +1 -1
- package/icons/map/map-pin-rect.vue +1 -1
- package/icons/map/map-pin.vue +1 -1
- package/icons/map-marker-start.vue +1 -1
- package/icons/medal.vue +1 -1
- package/icons/menu-filled.vue +1 -1
- package/icons/menu.vue +1 -1
- package/icons/message/message.vue +1 -1
- package/icons/minus/minus-circle.vue +1 -1
- package/icons/money.vue +1 -1
- package/icons/monitoring.vue +1 -1
- package/icons/moon.vue +1 -1
- package/icons/more.vue +1 -1
- package/icons/notification.vue +1 -1
- package/icons/paperclip.vue +1 -1
- package/icons/payment/payment-card.vue +1 -1
- package/icons/payment/payment-kaspi.vue +1 -1
- package/icons/person-vector.vue +1 -1
- package/icons/person-with-briefcase.vue +1 -1
- package/icons/phone-filled.vue +1 -1
- package/icons/phone.vue +1 -1
- package/icons/plus/plus-circle.vue +1 -1
- package/icons/plus/plus.vue +1 -1
- package/icons/profile.vue +1 -1
- package/icons/radio/radio-check.vue +1 -1
- package/icons/radio/radio-empty.vue +1 -1
- package/icons/receipt.vue +1 -1
- package/icons/sanctions.vue +8 -0
- package/icons/scales/scale.vue +1 -1
- package/icons/scales/scales.vue +1 -1
- package/icons/scales/standing-scales.vue +1 -1
- package/icons/search.vue +1 -1
- package/icons/share/share-alt.vue +1 -1
- package/icons/share/share.vue +1 -1
- package/icons/socials/face-book.vue +1 -1
- package/icons/socials/instagram.vue +1 -1
- package/icons/socials/telegram.vue +1 -1
- package/icons/socials/tik-tok.vue +1 -1
- package/icons/socials/youtube.vue +1 -1
- package/icons/sort/sort-asc.vue +1 -1
- package/icons/sort/sort-desc.vue +1 -1
- package/icons/splitting-arrows.vue +1 -1
- package/icons/star/star-filled.vue +1 -1
- package/icons/star/star-half-filled.vue +1 -1
- package/icons/star/star.vue +1 -1
- package/icons/sun.vue +14 -14
- package/icons/sviazi.vue +1 -1
- package/icons/tag.vue +1 -1
- package/icons/tasks.vue +10 -0
- package/icons/tender-search.vue +1 -1
- package/icons/toasts/check-circle-toast.vue +1 -1
- package/icons/toasts/warning-triangle-toast.vue +1 -1
- package/icons/trash.vue +1 -1
- package/icons/triangle.vue +1 -1
- package/icons/truck.vue +1 -1
- package/icons/user.vue +1 -1
- package/icons/users-focus.vue +1 -1
- package/icons/users.vue +1 -1
- package/icons/warning/warning-circle.vue +1 -1
- package/icons/warning/warning-triangle-filled.vue +1 -1
- package/icons/warning/warning-triangle.vue +1 -1
- package/icons/whatsapp.vue +1 -1
- package/icons/work-bag.vue +1 -1
- package/icons/work-case.vue +9 -0
- package/icons/work-search.vue +1 -1
- package/icons/work.vue +1 -1
- package/icons/x-mark.vue +1 -1
- package/icons/yandex.vue +28 -0
- package/illustrations/address-location.vue +1 -1
- package/illustrations/ball-with-chain.vue +1 -1
- package/illustrations/bill.vue +1 -1
- package/illustrations/buildings.vue +1 -1
- package/illustrations/calendar.vue +1 -1
- package/illustrations/chains.vue +1 -1
- package/illustrations/coin-percent.vue +1 -1
- package/illustrations/coins-stack.vue +1 -1
- package/illustrations/delete-dark.vue +1 -1
- package/illustrations/delete.vue +1 -1
- package/illustrations/doc-with-stamp.vue +1 -1
- package/illustrations/document.vue +1 -1
- package/illustrations/door.vue +1 -1
- package/illustrations/empty-box.vue +1 -1
- package/illustrations/empty-wallet.vue +1 -1
- package/illustrations/graph-in-coin.vue +1 -1
- package/illustrations/hammer.vue +1 -1
- package/illustrations/hand-cash.vue +1 -1
- package/illustrations/info.vue +1 -1
- package/illustrations/mail.vue +1 -1
- package/illustrations/ok.vue +1 -1
- package/illustrations/people-group.vue +1 -1
- package/illustrations/person-with-phone.vue +1 -1
- package/illustrations/person.vue +1 -1
- package/illustrations/phone-check.vue +1 -1
- package/illustrations/phone-payment-method.vue +1 -1
- package/illustrations/stop-hand.vue +1 -1
- package/illustrations/stop-sign.vue +1 -1
- package/illustrations/suit.vue +1 -1
- package/illustrations/suitcase.vue +1 -1
- package/illustrations/terminal-dark.vue +1 -1
- package/illustrations/terminal.vue +1 -1
- package/illustrations/trash-can.vue +1 -1
- package/illustrations/turn-on-tariff.vue +1 -1
- package/illustrations/two-persons.vue +1 -1
- package/lang/en.ts +475 -270
- package/lang/kk.ts +476 -271
- package/lang/ru.ts +315 -107
- package/layouts/default.vue +13 -13
- package/nuxt.config.ts +42 -14
- package/package.json +69 -53
- package/public/kaspi/logo.svg +4 -0
- package/shared/constans/pages.ts +17 -2
- package/tailwind.config.ts +163 -0
- package/vitest.config.ts +14 -0
- package/.eslintrc.cjs +0 -4
- package/.playground/app.vue +0 -9
- package/.playground/pages/index.vue +0 -13
- package/.prettierignore +0 -24
- package/.prettierrc +0 -10
- package/assets/styles/index.css +0 -226
- package/components/modals/AuthModal.vue +0 -50
- package/components/navigation/footer/NewFooter.vue +0 -276
- package/components/navigation/footer/ui/footer-acccordion.vue +0 -119
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
2
|
+
<!--noindex-->
|
|
3
|
+
<div class="h-[272px]" data-nosnippet>
|
|
3
4
|
<h2 class="heading-02 mb-4">
|
|
4
5
|
{{ t('header.contacts.almaty.title') }}
|
|
5
6
|
</h2>
|
|
@@ -10,7 +11,7 @@
|
|
|
10
11
|
class="flex flex-col gap-2 "
|
|
11
12
|
>
|
|
12
13
|
<div class="heading-04">
|
|
13
|
-
{{
|
|
14
|
+
{{ item.title }}
|
|
14
15
|
</div>
|
|
15
16
|
<a
|
|
16
17
|
class="flex items-center gap-1 text-deepblue-900 dark:text-white"
|
|
@@ -21,7 +22,7 @@
|
|
|
21
22
|
class="shrink-0"
|
|
22
23
|
/>
|
|
23
24
|
<div class=" body-400">
|
|
24
|
-
{{
|
|
25
|
+
{{ item.subtitle }}
|
|
25
26
|
</div>
|
|
26
27
|
</a>
|
|
27
28
|
</div>
|
|
@@ -60,7 +61,7 @@
|
|
|
60
61
|
target="_blank"
|
|
61
62
|
>
|
|
62
63
|
<div class="body-400 line-clamp-1 text-blue-600">
|
|
63
|
-
{{
|
|
64
|
+
{{ link.subtitle }}
|
|
64
65
|
</div>
|
|
65
66
|
<component
|
|
66
67
|
:is="link.icon"
|
|
@@ -89,6 +90,7 @@
|
|
|
89
90
|
<!-- </div>-->
|
|
90
91
|
</div>
|
|
91
92
|
</div>
|
|
93
|
+
<!--/noindex-->
|
|
92
94
|
</template>
|
|
93
95
|
|
|
94
96
|
<script setup lang="ts">
|
|
@@ -103,33 +105,33 @@ import {useContacts} from "#adata-ui/composables/projectState";
|
|
|
103
105
|
|
|
104
106
|
const {t} = useI18n()
|
|
105
107
|
const contacts = ref(useContacts())
|
|
106
|
-
const AlmatyItems = [
|
|
108
|
+
const AlmatyItems = computed(() => ([
|
|
107
109
|
{
|
|
108
|
-
title: 'header.contacts.almaty.adress.title',
|
|
109
|
-
subtitle: 'header.contacts.almaty.adress.subtitle',
|
|
110
|
+
title: t('header.contacts.almaty.adress.title'),
|
|
111
|
+
subtitle: t('header.contacts.almaty.adress.subtitle'),
|
|
110
112
|
icon: Location,
|
|
111
113
|
to: 'https://yandex.kz/maps/ru/org/avrora_kholding/1099794306/?ll=76.912479%2C43.208928&z=17.72'
|
|
112
114
|
},
|
|
113
115
|
{
|
|
114
|
-
title: 'header.contacts.almaty.email.title',
|
|
116
|
+
title: t('header.contacts.almaty.email.title'),
|
|
115
117
|
subtitle: 'info@adata.kz',
|
|
116
118
|
icon: Mail,
|
|
117
119
|
to: 'mailto:info@adata.kz'
|
|
118
120
|
},
|
|
119
121
|
{
|
|
120
|
-
title: 'header.contacts.almaty.schedule.title',
|
|
121
|
-
subtitle: 'header.contacts.almaty.schedule.subtitle',
|
|
122
|
+
title: t('header.contacts.almaty.schedule.title'),
|
|
123
|
+
subtitle: t('header.contacts.almaty.schedule.subtitle'),
|
|
122
124
|
icon: Clock,
|
|
123
125
|
},
|
|
124
|
-
]
|
|
126
|
+
]))
|
|
125
127
|
|
|
126
|
-
const technicalSupport = [
|
|
128
|
+
const technicalSupport = computed(() => ([
|
|
127
129
|
{
|
|
128
|
-
subtitle: 'header.contacts.almaty.support.linkTitle',
|
|
130
|
+
subtitle: t('header.contacts.almaty.support.linkTitle'),
|
|
129
131
|
icon: ExpandWindow,
|
|
130
132
|
to: "https://api.whatsapp.com/send/?phone=77712289041"
|
|
131
133
|
}
|
|
132
|
-
]
|
|
134
|
+
]))
|
|
133
135
|
|
|
134
136
|
const newContacts = computed(()=> contacts.value.map(item => ({
|
|
135
137
|
subtitle: item.contact,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
2
|
+
<!--noindex-->
|
|
3
|
+
<div class="h-[272px]" data-nosnippet>
|
|
3
4
|
<h2 class="heading-02 mb-4">
|
|
4
5
|
{{ t('header.contacts.astana.title') }}
|
|
5
6
|
</h2>
|
|
@@ -7,7 +8,7 @@
|
|
|
7
8
|
<div class="xl:grid grid-cols-2 grid-rows-3 flex flex-wrap gap-4 ">
|
|
8
9
|
<div v-for="(item, index) in AstanaItems" class="flex flex-col gap-2 " :class="{'col-span-2':index===0 }">
|
|
9
10
|
<div class="heading-04">
|
|
10
|
-
{{
|
|
11
|
+
{{ item.title }}
|
|
11
12
|
</div>
|
|
12
13
|
<a
|
|
13
14
|
class="flex items-center gap-1 text-deepblue-900 dark:text-white"
|
|
@@ -16,13 +17,14 @@
|
|
|
16
17
|
>
|
|
17
18
|
<component :is="item.icon"/>
|
|
18
19
|
<div class=" body-400">
|
|
19
|
-
{{
|
|
20
|
+
{{ item.subtitle }}
|
|
20
21
|
</div>
|
|
21
22
|
</a>
|
|
22
23
|
</div>
|
|
23
24
|
</div>
|
|
24
25
|
</div>
|
|
25
26
|
</div>
|
|
27
|
+
<!--/noindex-->
|
|
26
28
|
</template>
|
|
27
29
|
|
|
28
30
|
<script setup lang="ts">
|
|
@@ -33,31 +35,31 @@ import Clock from "#adata-ui/icons/clock.vue";
|
|
|
33
35
|
import Whatsapp from "#adata-ui/icons/whatsapp.vue";
|
|
34
36
|
|
|
35
37
|
const {t} = useI18n()
|
|
36
|
-
const AstanaItems = [
|
|
38
|
+
const AstanaItems = computed(() => ([
|
|
37
39
|
{
|
|
38
|
-
title: 'header.contacts.astana.adress.title',
|
|
39
|
-
subtitle: 'header.contacts.astana.adress.subtitle',
|
|
40
|
+
title: t('header.contacts.astana.adress.title'),
|
|
41
|
+
subtitle: t('header.contacts.astana.adress.subtitle'),
|
|
40
42
|
icon: Location,
|
|
41
43
|
to: 'https://yandex.kz/maps/ru/org/adata_consulting/214484722242/?ll=71.429573%2C51.131319&z=20.56'
|
|
42
44
|
},
|
|
43
45
|
{
|
|
44
|
-
title: 'header.contacts.astana.email.title',
|
|
46
|
+
title: t('header.contacts.astana.email.title'),
|
|
45
47
|
subtitle: 'info@adata-c.kz',
|
|
46
48
|
icon: Mail,
|
|
47
49
|
to: 'mailto:info@adata-c.kz'
|
|
48
50
|
},
|
|
49
51
|
{
|
|
50
|
-
title: 'header.contacts.astana.schedule.title',
|
|
51
|
-
subtitle: 'header.contacts.astana.schedule.subtitle',
|
|
52
|
+
title: t('header.contacts.astana.schedule.title'),
|
|
53
|
+
subtitle: t('header.contacts.astana.schedule.subtitle'),
|
|
52
54
|
icon: Clock,
|
|
53
55
|
},
|
|
54
56
|
{
|
|
55
|
-
title: 'header.contacts.astana.sellDep.title',
|
|
57
|
+
title: t('header.contacts.astana.sellDep.title'),
|
|
56
58
|
subtitle: '+7 700 744 00 10',
|
|
57
59
|
icon: Whatsapp,
|
|
58
60
|
to: "https://api.whatsapp.com/send/?phone=77007440010"
|
|
59
61
|
},
|
|
60
|
-
]
|
|
62
|
+
]))
|
|
61
63
|
</script>
|
|
62
64
|
|
|
63
65
|
<style scoped>
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
import { AIconArrowCircleDown, AIconGlobe, AIconId, AIconArrowSideUp } from '#components'
|
|
3
3
|
import { PAGES } from '#adata-ui/shared/constans/pages'
|
|
4
4
|
import { buildLocalizedUrl } from '#adata-ui/utils/localizedNavigation'
|
|
5
|
+
import { useUrls } from '#adata-ui/composables/useUrls'
|
|
5
6
|
|
|
6
|
-
const
|
|
7
|
+
const urls = useUrls()
|
|
7
8
|
const { t, locale } = useI18n()
|
|
8
9
|
const colorMode = useColorMode()
|
|
9
10
|
const computedColorMode = computed(() => colorMode.value)
|
|
@@ -13,21 +14,21 @@ const items = computed(()=>{
|
|
|
13
14
|
{
|
|
14
15
|
title: 'header.products.galleryCards.unload.title',
|
|
15
16
|
subtitle: 'header.products.galleryCards.unload.subtitle',
|
|
16
|
-
to: buildLocalizedUrl(locale,
|
|
17
|
+
to: buildLocalizedUrl(locale, urls.pk, PAGES.pk.unload),
|
|
17
18
|
image: '/header/unload.webp',
|
|
18
19
|
icon: AIconArrowCircleDown,
|
|
19
20
|
},
|
|
20
21
|
{
|
|
21
22
|
title: 'header.products.galleryCards.compliance.title',
|
|
22
23
|
subtitle: 'header.products.galleryCards.compliance.subtitle',
|
|
23
|
-
to: buildLocalizedUrl(locale,
|
|
24
|
+
to: buildLocalizedUrl(locale, urls.compliance, PAGES.compliance.l),
|
|
24
25
|
image: '/header/compliance.webp',
|
|
25
26
|
icon: AIconId,
|
|
26
27
|
},
|
|
27
28
|
{
|
|
28
29
|
title: 'header.products.galleryCards.ved.title',
|
|
29
30
|
subtitle: 'header.products.galleryCards.ved.subtitle',
|
|
30
|
-
to: buildLocalizedUrl(locale,
|
|
31
|
+
to: buildLocalizedUrl(locale, urls.tnved),
|
|
31
32
|
image: '/header/ved.webp',
|
|
32
33
|
icon: AIconGlobe,
|
|
33
34
|
},
|
|
@@ -6,22 +6,27 @@ import ProductMenu from '#adata-ui/components/navigation/header/ProductMenu.vue'
|
|
|
6
6
|
|
|
7
7
|
import ContactMenu from '#adata-ui/components/navigation/header/ContactMenu.vue'
|
|
8
8
|
import { buildLocalizedUrl } from '#adata-ui/utils/localizedNavigation'
|
|
9
|
+
import { useUrls } from '#adata-ui/composables/useUrls'
|
|
9
10
|
|
|
10
|
-
const {
|
|
11
|
+
const { landing } = useUrls()
|
|
11
12
|
const { t, locale } = useI18n()
|
|
12
13
|
|
|
13
14
|
const navs: any = [
|
|
14
15
|
{
|
|
15
16
|
label: 'header.navs.products',
|
|
16
|
-
to:
|
|
17
|
+
to: landing + PAGES.totalServices
|
|
17
18
|
},
|
|
18
19
|
{
|
|
19
20
|
label: 'header.navs.contacts',
|
|
20
|
-
to:
|
|
21
|
+
to: landing + PAGES.contacts
|
|
21
22
|
},
|
|
22
23
|
{
|
|
23
24
|
label: 'header.navs.tariffs',
|
|
24
|
-
to:
|
|
25
|
+
to: landing + PAGES.tariffs
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
label: 'header.navs.api',
|
|
29
|
+
to: landing + PAGES.api
|
|
25
30
|
}
|
|
26
31
|
]
|
|
27
32
|
|
|
@@ -47,7 +52,9 @@ const currentMenuToShow = (index) => {
|
|
|
47
52
|
}
|
|
48
53
|
const toggleMenu = (index: number) => {
|
|
49
54
|
if (index === 2) {
|
|
50
|
-
window.open(buildLocalizedUrl(locale,
|
|
55
|
+
window.open(buildLocalizedUrl(locale, landing, PAGES.tariffs), '_blank')
|
|
56
|
+
} else if (index === 3) {
|
|
57
|
+
window.open(buildLocalizedUrl(locale, landing, PAGES.api), '_blank')
|
|
51
58
|
} else {
|
|
52
59
|
currentMenu.value = currentMenuToShow(index)
|
|
53
60
|
const prev = currentIndex.value
|
|
@@ -76,7 +83,7 @@ const closeMenu = (forceClose = false) => {
|
|
|
76
83
|
}
|
|
77
84
|
}
|
|
78
85
|
const onMenuMouseEnter = (index: number) => {
|
|
79
|
-
if (index
|
|
86
|
+
if (![2, 3].includes(index)) {
|
|
80
87
|
if (show.value === false) {
|
|
81
88
|
delayTimer.value = setTimeout(() => {
|
|
82
89
|
toggleMenu(index)
|
|
@@ -144,6 +151,7 @@ watch(
|
|
|
144
151
|
:key="nav.label"
|
|
145
152
|
class="group inline-block border-r border-[#2C3E501A] px-2 last-of-type:border-none dark:border-[#E3E5E81A]"
|
|
146
153
|
@click="lockMenu"
|
|
154
|
+
role="listitem"
|
|
147
155
|
>
|
|
148
156
|
<div
|
|
149
157
|
class="relative cursor-pointer font-bold uppercase text-gray-800 hover:text-gray-600 dark:text-gray-200 hover:dark:text-gray-600"
|
|
@@ -158,7 +166,7 @@ watch(
|
|
|
158
166
|
<div
|
|
159
167
|
v-show="show"
|
|
160
168
|
ref="menu"
|
|
161
|
-
class="
|
|
169
|
+
class="top-[104px] fixed left-0 z-20 h-full w-full"
|
|
162
170
|
>
|
|
163
171
|
<div class="h-full w-full">
|
|
164
172
|
<transition :name="animation">
|
|
@@ -168,7 +176,7 @@ watch(
|
|
|
168
176
|
v-show="show"
|
|
169
177
|
:animation="forward ? 'next' : 'prev'"
|
|
170
178
|
:index="currentIndex"
|
|
171
|
-
:url="buildLocalizedUrl(locale,
|
|
179
|
+
:url="buildLocalizedUrl(locale, landing, PAGES.contacts)"
|
|
172
180
|
@outer-click="closeMenu(true)"
|
|
173
181
|
@mouse-over="closeMenu"
|
|
174
182
|
/>
|
|
@@ -11,12 +11,17 @@ const props = defineProps<{
|
|
|
11
11
|
id: string
|
|
12
12
|
icon?: Component
|
|
13
13
|
title: string
|
|
14
|
+
link: string
|
|
14
15
|
badge?: boolean
|
|
15
16
|
to: string
|
|
16
17
|
navList: NavList[]
|
|
17
18
|
currentModule: boolean
|
|
18
19
|
}>()
|
|
19
20
|
|
|
21
|
+
const colorMode = useColorMode()
|
|
22
|
+
|
|
23
|
+
const isDark = computed(() => colorMode.value === 'dark')
|
|
24
|
+
|
|
20
25
|
function isActive(itemPath: string) {
|
|
21
26
|
if (!props.currentModule) return false
|
|
22
27
|
|
|
@@ -69,7 +74,7 @@ function isActive(itemPath: string) {
|
|
|
69
74
|
class="flex flex-col gap-2"
|
|
70
75
|
:class="{ 'rounded-md bg-gray-50 p-2 dark:bg-gray-800': currentModule }"
|
|
71
76
|
>
|
|
72
|
-
<
|
|
77
|
+
<nuxt-link-locale class="flex items-center gap-2 pl-[10px] hover:text-blue-700 dark:hover:text-blue-500" :to="link">
|
|
73
78
|
<p class="text-sm font-semibold">
|
|
74
79
|
{{ title }}
|
|
75
80
|
</p>
|
|
@@ -82,15 +87,15 @@ function isActive(itemPath: string) {
|
|
|
82
87
|
>
|
|
83
88
|
NEW
|
|
84
89
|
</a-status-badge>
|
|
85
|
-
</
|
|
90
|
+
</nuxt-link-locale>
|
|
86
91
|
<ul class="flex flex-col gap-2">
|
|
87
92
|
<li
|
|
88
93
|
v-for="item in navList"
|
|
89
94
|
:key="item.title"
|
|
90
|
-
class="flex w-full items-center gap-2 rounded-md px-[10px] py-[6px] hover:bg-
|
|
95
|
+
class="flex w-full items-center gap-2 rounded-md px-[10px] py-[6px] hover:bg-blue-100 dark:hover:bg-gray-200/10 text-gray-600 dark:text-gray-200 hover:text-blue-700 dark:hover:text-blue-500"
|
|
91
96
|
:class="{ 'bg-blue-100 dark:bg-gray-200/10': isActive(item.to) }"
|
|
92
97
|
>
|
|
93
|
-
<div class="
|
|
98
|
+
<div class="rounded-lg p-1" :class="{ 'bg-gradient-blue-dark ': isDark, 'bg-gradient-blue-light': !isDark }">
|
|
94
99
|
<component
|
|
95
100
|
:is="item.icon"
|
|
96
101
|
class="size-[18px] text-white dark:text-gray-900"
|
|
@@ -99,7 +104,8 @@ function isActive(itemPath: string) {
|
|
|
99
104
|
<nuxt-link-locale
|
|
100
105
|
v-if="item.to"
|
|
101
106
|
:to="item.to"
|
|
102
|
-
|
|
107
|
+
itemprop="name"
|
|
108
|
+
class="inline-block normal-case w-full cursor-pointer align-middle text-sm font-semibold text-inherit hover:text-inherit"
|
|
103
109
|
>
|
|
104
110
|
{{ item.title }}
|
|
105
111
|
</nuxt-link-locale>
|
|
@@ -113,3 +119,13 @@ function isActive(itemPath: string) {
|
|
|
113
119
|
</ul>
|
|
114
120
|
</div>
|
|
115
121
|
</template>
|
|
122
|
+
|
|
123
|
+
<style scoped lang="scss">
|
|
124
|
+
.bg-gradient-blue-dark {
|
|
125
|
+
background: linear-gradient(236.46deg, #4FBDFF -2.39%, #1B98E2 79.1%);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.bg-gradient-blue-light {
|
|
129
|
+
background: linear-gradient(236.46deg, #479FFF -2.39%, #0070EB 79.1%);
|
|
130
|
+
}
|
|
131
|
+
</style>
|
|
@@ -1,33 +1,4 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import NavCard from '#adata-ui/components/navigation/header/NavCard.vue'
|
|
3
|
-
import { PAGES } from '#adata-ui/shared/constans/pages'
|
|
4
|
-
import ListItem from '#adata-ui/components/navigation/header/ListItem.vue'
|
|
5
|
-
import IconSearch from '#adata-ui/icons/search.vue'
|
|
6
|
-
import IconUsers from '#adata-ui/icons/users.vue'
|
|
7
|
-
import IconScales from '#adata-ui/icons/scales/scale.vue'
|
|
8
|
-
import IconLink from '#adata-ui/icons/link-chain.vue'
|
|
9
|
-
import IconArrowCircle from '#adata-ui/icons/arrow/arrow-circle-down.vue'
|
|
10
|
-
import IconBlock from '#adata-ui/icons/block.vue'
|
|
11
|
-
import IconDollar from '#adata-ui/icons/currency/currency-dollar.vue'
|
|
12
|
-
import IconWork from '#adata-ui/icons/work-bag.vue'
|
|
13
|
-
import IconDocument from '#adata-ui/icons/hdocument.vue'
|
|
14
|
-
import IconCheck from '#adata-ui/icons/hcheck.vue'
|
|
15
|
-
import IconCalc from '#adata-ui/icons/calculator.vue'
|
|
16
|
-
import IconGlobe from '#adata-ui/icons/globe.vue'
|
|
17
|
-
import IconFile from '#adata-ui/icons/file/file.vue'
|
|
18
|
-
import IconCheckCircle from '#adata-ui/icons/check/check-circle.vue'
|
|
19
|
-
import IconCar from '#adata-ui/icons/car.vue'
|
|
20
|
-
import IconTruck from '#adata-ui/icons/truck.vue'
|
|
21
|
-
import IconArrowGraph from '#adata-ui/icons/arrow/arrow-graph-up.vue'
|
|
22
|
-
import IconMedal from '#adata-ui/icons/medal.vue'
|
|
23
|
-
import IconHandshake from '#adata-ui/icons/handshake.vue'
|
|
24
|
-
import IconClipboardText from '#adata-ui/icons/clipboard-text.vue'
|
|
25
|
-
import IconUsersFocus from '#adata-ui/icons/users-focus.vue'
|
|
26
|
-
import IconCompany from '#adata-ui/icons/company.vue'
|
|
27
|
-
import IconProfile from '#adata-ui/icons/profile.vue'
|
|
28
|
-
import Connections from '#adata-ui/icons/sviazi.vue'
|
|
29
|
-
|
|
30
|
-
import { useCurrentModule } from '#adata-ui/composables/projectState'
|
|
31
2
|
import { useHeaderNavigationLinks } from '#adata-ui/composables/useHeaderNavigationLinks'
|
|
32
3
|
import NavList from '#adata-ui/components/navigation/header/NavList.vue'
|
|
33
4
|
import CardGallery from '#adata-ui/components/navigation/header/CardGallery.vue'
|
|
@@ -46,55 +17,9 @@ const props = withDefaults(
|
|
|
46
17
|
)
|
|
47
18
|
|
|
48
19
|
defineEmits(['outerClick', 'mouseOver'])
|
|
49
|
-
const { myLayer }: any = useAppConfig()
|
|
50
|
-
const colorMode = useColorMode()
|
|
51
|
-
const activeTab = ref(useCurrentModule().value)
|
|
52
|
-
const localePath = useLocalePath()
|
|
53
|
-
|
|
54
|
-
const { t, locale } = useI18n()
|
|
55
20
|
|
|
56
21
|
const pageUrl = useRequestURL()
|
|
57
|
-
|
|
58
|
-
const allImages = computed(() => {
|
|
59
|
-
if (activeTab.value === 'pk' || activeTab.value === 'counterparty') {
|
|
60
|
-
return colorMode.value === 'dark'
|
|
61
|
-
? `/mode/dark-pk-${locale.value}.webp`
|
|
62
|
-
: `/mode/light-pk-${locale.value}.webp`
|
|
63
|
-
}
|
|
64
|
-
if (activeTab.value === 'work') {
|
|
65
|
-
return colorMode.value === 'dark'
|
|
66
|
-
? `/mode/dark-work-${locale.value}.webp`
|
|
67
|
-
: `/mode/light-work-${locale.value}.webp`
|
|
68
|
-
}
|
|
69
|
-
if (activeTab.value === 'tenders') {
|
|
70
|
-
return colorMode.value === 'dark'
|
|
71
|
-
? `/mode/dark-tenders-${locale.value}.webp`
|
|
72
|
-
: `/mode/light-tenders-${locale.value}.webp`
|
|
73
|
-
}
|
|
74
|
-
if (activeTab.value === 'fines') {
|
|
75
|
-
return colorMode.value === 'dark'
|
|
76
|
-
? `/mode/dark-fines-${locale.value}.webp`
|
|
77
|
-
: `/mode/light-fines-${locale.value}.webp`
|
|
78
|
-
}
|
|
79
|
-
if (activeTab.value === 'analytics') {
|
|
80
|
-
return colorMode.value === 'dark'
|
|
81
|
-
? `/mode/dark-analytics-${locale.value}.webp`
|
|
82
|
-
: `/mode/light-analytics-${locale.value}.webp`
|
|
83
|
-
}
|
|
84
|
-
if (activeTab.value === 'fea') {
|
|
85
|
-
return colorMode.value === 'dark'
|
|
86
|
-
? `/mode/dark-fea-${locale.value}.webp`
|
|
87
|
-
: `/mode/light-fea-${locale.value}.webp`
|
|
88
|
-
}
|
|
89
|
-
if (activeTab.value === 'compliance') {
|
|
90
|
-
return colorMode.value === 'dark'
|
|
91
|
-
? `/mode/dark-complience-${locale.value}.webp`
|
|
92
|
-
: `/mode/light-complience-${locale.value}.webp`
|
|
93
|
-
}
|
|
94
|
-
})
|
|
95
|
-
|
|
96
22
|
const filteredItems = useHeaderNavigationLinks()
|
|
97
|
-
const someHovered = ref(false)
|
|
98
23
|
|
|
99
24
|
function isCurrentModule(currentModule: string) {
|
|
100
25
|
if (currentModule === 'fines') return 'avto'
|
|
@@ -118,26 +43,30 @@ function isCurrentModule(currentModule: string) {
|
|
|
118
43
|
<div class="flex gap-[10px] divide-x divide-gray-500/50">
|
|
119
44
|
<div class="flex flex-col gap-5 w-[290px]">
|
|
120
45
|
<nav-list
|
|
121
|
-
v-for="module in filteredItems.slice(0,
|
|
46
|
+
v-for="module in filteredItems.slice(0,3)"
|
|
122
47
|
:id="module.key"
|
|
123
48
|
:key="module.key"
|
|
124
49
|
:current-module="pageUrl.hostname.startsWith(isCurrentModule(module.key))"
|
|
125
50
|
:title="module.name"
|
|
51
|
+
:link="module.link"
|
|
126
52
|
:nav-list="module.items"
|
|
127
53
|
:to="module.to"
|
|
128
54
|
:icon="module.icon"
|
|
55
|
+
:badge="module.is_new"
|
|
129
56
|
/>
|
|
130
57
|
</div>
|
|
131
58
|
<div class="flex flex-col gap-5 w-[290px] pl-[10px]">
|
|
132
59
|
<nav-list
|
|
133
|
-
v-for="module in filteredItems.slice(
|
|
60
|
+
v-for="module in filteredItems.slice(3,5)"
|
|
134
61
|
:id="module.key"
|
|
135
62
|
:key="module.key"
|
|
136
63
|
:current-module="pageUrl.hostname.startsWith(isCurrentModule(module.key))"
|
|
137
64
|
:title="module.name"
|
|
65
|
+
:link="module.link"
|
|
138
66
|
:nav-list="module.items"
|
|
139
67
|
:to="module.to"
|
|
140
68
|
:icon="module.icon"
|
|
69
|
+
:badge="module.is_new"
|
|
141
70
|
/>
|
|
142
71
|
</div>
|
|
143
72
|
<div class="flex flex-col gap-5 w-[330px] pl-[10px]">
|
|
@@ -147,10 +76,11 @@ function isCurrentModule(currentModule: string) {
|
|
|
147
76
|
:key="module.key"
|
|
148
77
|
:current-module="pageUrl.hostname.startsWith(isCurrentModule(module.key))"
|
|
149
78
|
:title="module.name"
|
|
79
|
+
:link="module.link"
|
|
150
80
|
:nav-list="module.items"
|
|
151
81
|
:to="module.to"
|
|
152
82
|
:icon="module.icon"
|
|
153
|
-
badge
|
|
83
|
+
:badge="module.is_new"
|
|
154
84
|
/>
|
|
155
85
|
</div>
|
|
156
86
|
</div>
|
|
@@ -24,16 +24,21 @@ defineEmits(['logout'])
|
|
|
24
24
|
|
|
25
25
|
const { t } = useI18n()
|
|
26
26
|
|
|
27
|
-
const { myLayer }: any = useAppConfig()
|
|
28
27
|
const { locale } = useI18n()
|
|
29
28
|
|
|
29
|
+
// const { topUpSidePanel } = usePayment()
|
|
30
|
+
|
|
30
31
|
const items = useHeaderMenuLinks()
|
|
31
32
|
|
|
33
|
+
const { topUpSidePanel, rateId } = usePayment()
|
|
34
|
+
|
|
32
35
|
const onReplenish = () => {
|
|
33
|
-
if (
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
36
|
+
// if (myLayer.authMode === 'locale') {
|
|
37
|
+
// topUpSidePanel.value = true
|
|
38
|
+
// return
|
|
39
|
+
// }
|
|
40
|
+
rateId.value = ''
|
|
41
|
+
topUpSidePanel.value = true
|
|
37
42
|
}
|
|
38
43
|
</script>
|
|
39
44
|
|
|
@@ -127,8 +127,8 @@ const closeMessage = () => {
|
|
|
127
127
|
v-if="!isOpenNotification || !systemMessage"
|
|
128
128
|
class="hidden min-h-10 bg-gray-50 dark:bg-gray-950 lg:block"
|
|
129
129
|
>
|
|
130
|
-
<div class="a-container flex justify-between py-2 text-sm">
|
|
131
|
-
<div class="flex items-center">
|
|
130
|
+
<div class="a-container flex justify-between py-2 items-center text-sm">
|
|
131
|
+
<div class="flex items-center leading-[24px]">
|
|
132
132
|
<div v-for="currency in currencies" :key="currency.currency" class="mr-4 flex gap-2">
|
|
133
133
|
<div class="flex items-center">
|
|
134
134
|
<component
|
|
@@ -7,6 +7,7 @@ import ProfileMenu from '#adata-ui/components/navigation/header/ProfileMenu.vue'
|
|
|
7
7
|
import type { ProjectKeys } from '#adata-ui/components/navigation/header/types'
|
|
8
8
|
import { useCurrentModule } from '#adata-ui/composables/projectState'
|
|
9
9
|
import AModal from "#adata-ui/components/overlays/modal/AModal.vue";
|
|
10
|
+
import { useUrls } from '#adata-ui/composables/useUrls'
|
|
10
11
|
|
|
11
12
|
interface Props {
|
|
12
13
|
replenish?: string
|
|
@@ -31,8 +32,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
31
32
|
})
|
|
32
33
|
const emit = defineEmits(['logout'])
|
|
33
34
|
useCurrentModule().value = props.module
|
|
34
|
-
const
|
|
35
|
-
const landingUrl = appConfig.myLayer.landingUrl
|
|
35
|
+
const { landing } = useUrls()
|
|
36
36
|
const activeModule = ref<string | null>(null)
|
|
37
37
|
const isMain = ref(false)
|
|
38
38
|
const isContacts = ref(false)
|
|
@@ -62,7 +62,7 @@ watch(activeModule, (e) => {
|
|
|
62
62
|
} else if (e === 'profile') {
|
|
63
63
|
isProfile.value = true
|
|
64
64
|
} else if (e === 'tariff') {
|
|
65
|
-
navigateTo(`${
|
|
65
|
+
navigateTo(`${landing}/tariffs`, { external: true })
|
|
66
66
|
}
|
|
67
67
|
activeModule.value = ''
|
|
68
68
|
})
|
|
@@ -2,8 +2,12 @@
|
|
|
2
2
|
<div
|
|
3
3
|
ref="tabs"
|
|
4
4
|
class="scroll-container overflow-auto whitespace-nowrap"
|
|
5
|
-
:class="
|
|
5
|
+
:class="[
|
|
6
|
+
props.wrapper === 'row' ? 'flex gap-1' : 'flex flex-col gap-1',
|
|
7
|
+
isSegmented ? 'rounded-[12px] bg-gray-50 p-1 shadow-[inset_2px_2px_4px_0_#00000014] dark:bg-gray-800' : ''
|
|
8
|
+
]"
|
|
6
9
|
>
|
|
10
|
+
|
|
7
11
|
<button
|
|
8
12
|
v-for="option in options"
|
|
9
13
|
:key="option.key"
|
|
@@ -48,8 +52,9 @@ const emit = defineEmits(['selectOption', 'prevent'])
|
|
|
48
52
|
|
|
49
53
|
interface Props {
|
|
50
54
|
options: Tab[]
|
|
51
|
-
|
|
52
|
-
|
|
55
|
+
// TODO: переименовать segmented
|
|
56
|
+
view?: 'transparent' | 'main' | 'gray' | 'blue' | 'mobile' | 'segmented'
|
|
57
|
+
size?: 'lg' | 'md' | 'sm' | 'xs' | 'ss'
|
|
53
58
|
badgeSize?: 'sm' | 'md' | 'lg'
|
|
54
59
|
align?: 'left' | 'center'
|
|
55
60
|
block?: boolean
|
|
@@ -60,7 +65,7 @@ interface Props {
|
|
|
60
65
|
|
|
61
66
|
const props = withDefaults(defineProps<Props>(), {
|
|
62
67
|
view: 'main',
|
|
63
|
-
size: '
|
|
68
|
+
size: 'md',
|
|
64
69
|
align: 'center',
|
|
65
70
|
badgeSize: 'lg',
|
|
66
71
|
block: false,
|
|
@@ -71,6 +76,10 @@ const tabs = ref<HTMLDivElement | null>(null)
|
|
|
71
76
|
const activeTab = defineModel<any>({ default: 1 })
|
|
72
77
|
const { t } = useI18n()
|
|
73
78
|
|
|
79
|
+
|
|
80
|
+
// todo: вынести в пропc
|
|
81
|
+
const isSegmented = computed(() => props.view === 'segmented')
|
|
82
|
+
|
|
74
83
|
const viewTypeValues: ViewType = {
|
|
75
84
|
main: {
|
|
76
85
|
default:
|
|
@@ -95,6 +104,10 @@ const viewTypeValues: ViewType = {
|
|
|
95
104
|
default:
|
|
96
105
|
'bg-white dark:text-gray-200 font-semibold dark:bg-gray-900 dark:hover:bg-gray-500 hover:bg-deepblue-100 ',
|
|
97
106
|
selected: 'text-white dark:text-gray-900 font-semibold dark:bg-white bg-deepblue-900'
|
|
107
|
+
},
|
|
108
|
+
segmented: {
|
|
109
|
+
default: 'text-deepblue-900 bg-transparent hover:bg-black/5 dark:hover:bg-white/10 dark:text-gray-200',
|
|
110
|
+
selected: 'bg-white text-deepblue-900 font-semibold shadow dark:bg-gray-900 dark:text-gray-200 shadow-[2px_2px_4px_0_#00000014]'
|
|
98
111
|
}
|
|
99
112
|
}
|
|
100
113
|
|
|
@@ -114,6 +127,7 @@ const selectedClasses = () => [
|
|
|
114
127
|
const sizeOptions = {
|
|
115
128
|
lg: 'px-4 py-2.5',
|
|
116
129
|
sm: 'px-4 py-[7.5px]',
|
|
130
|
+
md: 'px-4 py-2',
|
|
117
131
|
ss: 'px-3 py-1.5',
|
|
118
132
|
xs: 'px-3 py-[4px]'
|
|
119
133
|
}
|