adata-ui 2.1.40 → 2.1.41-beta.1
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/-error.vue +2 -2
- package/.playground/app.vue +13 -13
- package/.playground/nuxt.config.ts +1 -1
- package/CLAUDE.md +63 -0
- package/assets/styles/main.css +12 -0
- package/assets/styles/theme.css +583 -0
- package/assets/styles/ui.css +247 -0
- package/components/elements/a-select-row/ASelectRowV2.vue +13 -17
- package/components/elements/a-select-row/index.vue +13 -12
- package/components/elements/accordion/AAccordion.vue +2 -2
- package/components/elements/accordion/AAccordionGroup/AAccordionGroup.vue +1 -1
- package/components/elements/accordion/AAccordionGroup/ui.config.ts +4 -4
- package/components/elements/accordion/ui.config.ts +4 -4
- package/components/elements/alert/AAlert.vue +5 -5
- package/components/elements/bg-block/ABgBlock.vue +1 -1
- package/components/elements/button/AButton.vue +48 -45
- package/components/elements/button/AButtonV2.vue +74 -30
- package/components/elements/button-login/index.vue +2 -1
- package/components/elements/carousel/config.ui.ts +2 -2
- package/components/elements/chip-wrapper/AChipWrapper.vue +4 -3
- package/components/elements/chips/AChips.vue +4 -3
- package/components/elements/companies/AOurClients.vue +1 -1
- package/components/elements/count-up/ACountUp.vue +54 -0
- package/components/elements/curve-block/ACurveBlock.vue +15 -48
- package/components/elements/curve-block-v2/ACurveBlockV2.vue +60 -25
- package/components/elements/digit-badge/ADigitBadge.vue +17 -16
- package/components/elements/empty-box/empty-box-V2.vue +92 -0
- package/components/elements/error-template/index.vue +99 -31
- package/components/elements/feature-description/AFeatureDescription.vue +8 -8
- package/components/elements/illustrations/noAccess.vue +1 -1
- package/components/elements/infinite-carousel/AInfiniteCarousel.vue +44 -16
- package/components/elements/leave-note/ALeaveNote.vue +2 -2
- package/components/elements/pagination/APagination.vue +8 -8
- package/components/elements/section-heading/ASectionHeading.vue +35 -0
- package/components/elements/segmented/ASegmentedV2.vue +24 -21
- package/components/elements/select/ASelect.vue +28 -27
- package/components/elements/select/ASelectMobile.vue +5 -5
- package/components/elements/select/ASelectV2.vue +20 -28
- package/components/elements/select/ui/select-button.vue +8 -8
- package/components/elements/select/ui/select-list.vue +2 -2
- package/components/elements/show-more/AShowMore.vue +2 -2
- package/components/elements/show-more/AShowMoreV2.vue +3 -3
- package/components/elements/skeleton/ASkeleton.vue +1 -1
- package/components/elements/slider/ASlider.vue +3 -2
- package/components/elements/slider/ASliderV2.vue +182 -0
- package/components/elements/star-rating/AStarRating.vue +2 -2
- package/components/elements/status-badge/AStatusBadge.vue +40 -36
- package/components/elements/step-slider/AStepSliderColCard.vue +77 -39
- package/components/elements/step-slider/AStepSliderColNumber.vue +74 -53
- package/components/elements/table/table.config.ts +8 -8
- package/components/elements/tree-select/components/ATreeSelectNode.vue +4 -4
- package/components/elements/tree-select-mobile/components/ATreeSelectNodesMobile.vue +3 -3
- package/components/elements/tree-select-modal/ATreeSelectModal.vue +4 -4
- package/components/features/color-mode/AColorMode.client.vue +2 -24
- package/components/features/dropdown/ADropdownV2.vue +1 -1
- package/components/features/lang-switcher/lang-switcher.vue +6 -6
- package/components/features/payment/banner/BasicPlusLimitBanner.vue +3 -23
- package/components/features/payment/banner/PaymentBanner.vue +3 -23
- package/components/features/payment/banner/UpSellBanner.vue +1 -21
- package/components/features/payment/process/PaymentKaspiQrSidePanel.vue +8 -7
- package/components/features/payment/process/PaymentKaspiRedirectSidePanel.vue +5 -5
- package/components/features/payment/process/PaymentMethodSidePanel.vue +12 -12
- package/components/features/payment/process/PaymentTopUpSidePanel.vue +6 -6
- package/components/features/pk-mobile-services/APkMobileServices.vue +14 -43
- package/components/features//321/201hange-version/AChangeVersion.vue +1 -1
- package/components/forms/checkbox/ACheckbox.vue +8 -8
- package/components/forms/checkbox/ACheckboxV2.vue +8 -8
- package/components/forms/feedback-form/FeedbackForm.vue +8 -8
- package/components/forms/feedback-form/FeedbackFormV2.vue +9 -8
- package/components/forms/input/AInputV2.vue +39 -25
- package/components/forms/input/button/AInputButton.vue +1 -1
- package/components/forms/input/date/AInputDate.vue +13 -9
- package/components/forms/input/password/AInputPassword.vue +1 -1
- package/components/forms/input/standard/AInputStandard.vue +23 -14
- package/components/forms/input/textarea/ATextarea.vue +15 -11
- package/components/forms/input/textarea/ATextareaV2.vue +18 -13
- package/components/forms/radio-button/ARadioButton.vue +4 -4
- package/components/forms/request-demo/ARequestDemo.vue +5 -5
- package/components/forms/toggle/AToggle.vue +8 -7
- package/components/forms/toggle/AToggleV2.vue +7 -6
- package/components/modals/AConfirmationEmail.vue +3 -3
- package/components/modals/AboutTariffModal.vue +10 -9
- package/components/modals/AnotherDeviceModal.vue +11 -10
- package/components/modals/ApplicationAcceptedModal.vue +3 -2
- package/components/modals/ConnectingTariffModal.vue +1 -1
- package/components/modals/ContactsMobileModel.vue +5 -5
- package/components/modals/ContentNavigationModal.vue +8 -7
- package/components/modals/Insufficient-funds-modal.vue +4 -4
- package/components/modals/LimitReachedModal.vue +18 -7
- package/components/modals/NoAccessModal.vue +7 -3
- package/components/modals/PaymentMethodModal.vue +4 -4
- package/components/modals/RedirectsBanksModal.vue +4 -4
- package/components/modals/ReplenishModal.vue +2 -2
- package/components/modals/ReportBugConfirmModal.vue +2 -2
- package/components/modals/ReportBugModal.vue +2 -2
- package/components/modals/Resend.vue +4 -4
- package/components/modals/SubmitApplicationModal.vue +1 -5
- package/components/modals/id/AuthModal.vue +27 -47
- package/components/modals/id/IdAutoLogoutModal.vue +23 -24
- package/components/modals/id/IdBanner.vue +4 -24
- package/components/modals/id/IdConfirmAccountOtpModal.vue +5 -4
- package/components/modals/id/IdConfirmSuccessfulModal.vue +3 -3
- package/components/modals/id/IdLoginModal.vue +8 -8
- package/components/modals/id/IdModals.vue +1 -3
- package/components/modals/id/IdNewPasswordModal.vue +3 -3
- package/components/modals/id/IdOtpInput.vue +3 -3
- package/components/modals/id/IdPasswordSuccessfulModal.vue +3 -3
- package/components/modals/id/IdRecoveryModal.vue +3 -3
- package/components/modals/id/IdRegistrationModal.vue +4 -4
- package/components/modals/id/IdResetPasswordOtpModal.vue +5 -4
- package/components/modals/id/IdTwoFactorModal.vue +3 -2
- package/components/navigation/bottom-navigation/ABottomNavigation.vue +7 -7
- package/components/navigation/breadcrumbs/ABreadcrumbs.vue +4 -4
- package/components/navigation/footer/AFooter.vue +2 -2
- package/components/navigation/footer/ui/a-footer-accordion.vue +1 -1
- package/components/navigation/header/AHeader.vue +11 -11
- package/components/navigation/header/AlmatyContacts.vue +7 -7
- package/components/navigation/header/AstanaContacts.vue +4 -4
- package/components/navigation/header/CardGallery.vue +8 -7
- package/components/navigation/header/ContactMenu.vue +1 -1
- package/components/navigation/header/HeaderLink.vue +5 -5
- package/components/navigation/header/HeaderUsage.vue +14 -14
- package/components/navigation/header/ListItem.vue +4 -3
- package/components/navigation/header/NavCard.vue +6 -5
- package/components/navigation/header/NavList.vue +9 -8
- package/components/navigation/header/NotificationsMenu.vue +10 -10
- package/components/navigation/header/ProductMenu.vue +10 -9
- package/components/navigation/header/ProfileMenu.vue +13 -12
- package/components/navigation/header/SystemNotification.vue +4 -4
- package/components/navigation/line-tabs/ALineTabs.vue +10 -9
- package/components/navigation/pill-tabs/APillTabs.vue +18 -16
- package/components/navigation/pill-tabs/APillTabsV2.vue +40 -25
- package/components/navigation/side-navigation/ASideNavigation.vue +3 -3
- package/components/overlays/drawer/ADrawerV2.vue +12 -11
- package/components/overlays/modal/AModal.vue +4 -4
- package/components/overlays/modal/AModalV2.vue +17 -13
- package/components/overlays/side-panel/ASidePanel.vue +7 -7
- package/components/overlays/sideover/ASlideover.vue +4 -4
- package/components/overlays/tooltip/ATooltip.vue +3 -2
- package/components/overlays/tooltip/ATooltipV2.vue +2 -2
- package/composables/highlight.ts +2 -1
- package/eslint.config.mjs +14 -1
- package/icons/arrow/arrow-left.vue +14 -0
- 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/bar-chart-3.vue +3 -0
- package/icons/book-open.vue +3 -0
- package/icons/bookmark/bookmark-filled.vue +1 -0
- package/icons/braces.vue +3 -0
- package/icons/check/check-outline.vue +3 -0
- package/icons/chevron/chevron-down-outline.vue +3 -0
- package/icons/clipboard-list.vue +3 -0
- package/icons/clock-outline.vue +3 -0
- package/icons/company-egov-small.vue +1 -1
- package/icons/database.vue +3 -0
- package/icons/download-outline.vue +3 -0
- package/icons/download.vue +1 -1
- package/icons/egov.vue +1 -1
- package/icons/elicense.vue +1 -1
- package/icons/file-json.vue +3 -0
- package/icons/file-search.vue +3 -0
- package/icons/file-text.vue +3 -0
- package/icons/flask-conical.vue +3 -0
- package/icons/folder-open.vue +3 -0
- package/icons/gift-outline.vue +3 -0
- package/icons/globe-2.vue +3 -0
- package/icons/graph-loading.vue +2 -2
- package/icons/hand/hand-thumb-up-filled.vue +1 -1
- package/icons/home.vue +14 -0
- package/icons/invoice.vue +1 -0
- package/icons/key-round.vue +3 -0
- package/icons/letter/letter-a.vue +4 -2
- package/icons/letter/letter-b.vue +2 -2
- package/icons/letter/letter-c.vue +2 -2
- package/icons/letter/letter-d.vue +2 -2
- package/icons/letter/letter-e.vue +2 -2
- package/icons/logo.vue +1 -1
- package/icons/main-filter.vue +1 -1
- package/icons/menu.vue +4 -4
- package/icons/message/message.vue +1 -1
- package/icons/messages-square.vue +3 -0
- package/icons/more.vue +1 -1
- package/icons/payment/payment-card.vue +2 -2
- package/icons/radio/radio-check.vue +1 -1
- package/icons/robot-outline.vue +3 -0
- package/icons/scales/scale-outline.vue +3 -0
- package/icons/search-outline.vue +3 -0
- package/icons/send.vue +3 -0
- package/icons/star/star-filled.vue +1 -0
- package/icons/star/star-half-filled.vue +1 -0
- package/icons/sun.vue +1 -0
- package/icons/terminal.vue +3 -0
- package/icons/toasts/warning-triangle-toast.vue +1 -0
- package/icons/triangle-alert.vue +3 -0
- package/icons/users-outline.vue +3 -0
- package/icons/webhook.vue +3 -0
- package/icons/x-outline.vue +3 -0
- package/icons/yandex.vue +2 -1
- package/illustrations/address-location.vue +2 -2
- package/illustrations/award-badge.vue +105 -0
- package/illustrations/ball-with-chain.vue +7 -7
- package/illustrations/bill.vue +5 -5
- package/illustrations/buildings.vue +4 -4
- package/illustrations/calendar.vue +11 -11
- package/illustrations/chains.vue +12 -12
- package/illustrations/coin-percent.vue +3 -3
- package/illustrations/coins-stack.vue +4 -4
- package/illustrations/delete-dark.vue +1 -0
- package/illustrations/delete.vue +1 -0
- package/illustrations/doc-with-stamp.vue +5 -5
- package/illustrations/document.vue +3 -3
- package/illustrations/door.vue +79 -68
- package/illustrations/empty-badge-check.vue +20 -0
- package/illustrations/empty-ban.vue +18 -0
- package/illustrations/empty-box.vue +5 -5
- package/illustrations/empty-filter.vue +20 -0
- package/illustrations/empty-inbox.vue +19 -0
- package/illustrations/empty-scale.vue +22 -0
- package/illustrations/empty-search-x.vue +21 -0
- package/illustrations/empty-shopping-cart.vue +21 -0
- package/illustrations/empty-users-round.vue +20 -0
- package/illustrations/empty-wallet.vue +121 -155
- package/illustrations/graph-in-coin.vue +2 -2
- package/illustrations/hammer.vue +5 -5
- package/illustrations/hand-cash.vue +1 -1
- package/illustrations/info.vue +49 -36
- package/illustrations/mail-active.vue +86 -0
- package/illustrations/mail.vue +4 -4
- package/illustrations/no-access.vue +92 -0
- package/illustrations/ok.vue +86 -58
- package/illustrations/people-group.vue +1 -1
- package/illustrations/person-with-phone.vue +5 -5
- package/illustrations/person.vue +3 -3
- package/illustrations/phone-check.vue +104 -84
- package/illustrations/phone-payment-method.vue +1 -1
- package/illustrations/shield-user.vue +94 -0
- package/illustrations/stop-hand.vue +78 -71
- package/illustrations/stop-sign.vue +1 -1
- package/illustrations/suit.vue +93 -107
- package/illustrations/suitcase.vue +6 -6
- package/illustrations/terminal.vue +94 -228
- package/illustrations/trash-can.vue +60 -102
- package/illustrations/turn-on-tariff.vue +2 -2
- package/illustrations/two-persons.vue +2 -2
- package/lang/en.ts +25 -29
- package/lang/kk.ts +24 -28
- package/lang/ru.ts +24 -29
- package/nuxt.config.ts +11 -4
- package/package.json +7 -12
- package/assets/styles/index.scss +0 -166
- package/assets/styles/modules/_base.scss +0 -5
- package/assets/styles/modules/_typography.scss +0 -152
- package/components/elements/error-template/types.ts +0 -23
- package/illustrations/terminal-dark.vue +0 -48
- package/tailwind.config.ts +0 -194
- package/tests/AButton.test.ts +0 -81
|
@@ -223,10 +223,10 @@ onBeforeUnmount(() => {
|
|
|
223
223
|
|
|
224
224
|
<template>
|
|
225
225
|
<div class="flex flex-col gap-5">
|
|
226
|
-
<h1 class="
|
|
226
|
+
<h1 class="text-h2 text-center" data-test-id="login-form-title">
|
|
227
227
|
{{ t('modals.id.login.title') }}
|
|
228
228
|
</h1>
|
|
229
|
-
<p class="body-
|
|
229
|
+
<p class="text-body-md text-center" data-test-id="login-form-subtitle">
|
|
230
230
|
{{ t('modals.id.login.subtitle') }}
|
|
231
231
|
</p>
|
|
232
232
|
<div class="flex flex-col gap-4">
|
|
@@ -244,7 +244,7 @@ onBeforeUnmount(() => {
|
|
|
244
244
|
:error="getError('password')"
|
|
245
245
|
/>
|
|
246
246
|
<div class="flex items-center justify-between">
|
|
247
|
-
<div class="body-
|
|
247
|
+
<div class="text-body-md flex gap-2" data-test-id="login-form-remember-me-checkbox">
|
|
248
248
|
<a-checkbox
|
|
249
249
|
v-model="rememberMe"
|
|
250
250
|
name="remember_me"
|
|
@@ -257,7 +257,7 @@ onBeforeUnmount(() => {
|
|
|
257
257
|
}}</label>
|
|
258
258
|
</div>
|
|
259
259
|
<button
|
|
260
|
-
class="
|
|
260
|
+
class="text-body-md text-link"
|
|
261
261
|
data-test-id="login-form-forgot-password-button"
|
|
262
262
|
@click="onForgotPassword"
|
|
263
263
|
>
|
|
@@ -266,7 +266,7 @@ onBeforeUnmount(() => {
|
|
|
266
266
|
</div>
|
|
267
267
|
</div>
|
|
268
268
|
<div class="flex items-center gap-4">
|
|
269
|
-
<div class="h-px w-full bg-
|
|
269
|
+
<div class="h-px w-full bg-(--border-color-default)" />
|
|
270
270
|
<div class="flex shrink-0 gap-4">
|
|
271
271
|
<span
|
|
272
272
|
class="cursor-pointer"
|
|
@@ -290,7 +290,7 @@ onBeforeUnmount(() => {
|
|
|
290
290
|
<a-icon-mailru />
|
|
291
291
|
</span>
|
|
292
292
|
</div>
|
|
293
|
-
<div class="h-px w-full bg-
|
|
293
|
+
<div class="h-px w-full bg-(--border-color-default)" />
|
|
294
294
|
</div>
|
|
295
295
|
<a-button
|
|
296
296
|
:loading="loading"
|
|
@@ -300,7 +300,7 @@ onBeforeUnmount(() => {
|
|
|
300
300
|
>
|
|
301
301
|
{{ t('actions.login') }}
|
|
302
302
|
</a-button>
|
|
303
|
-
<p class="body-
|
|
303
|
+
<p class="text-body-md text-center">
|
|
304
304
|
{{ t('modals.id.login.first_time') }}
|
|
305
305
|
</p>
|
|
306
306
|
|
|
@@ -325,7 +325,7 @@ onBeforeUnmount(() => {
|
|
|
325
325
|
</a-button>
|
|
326
326
|
|
|
327
327
|
<a-alert
|
|
328
|
-
class="max-w-screen-sm !text-
|
|
328
|
+
class="max-w-screen-sm !text-body-sm"
|
|
329
329
|
size="xs"
|
|
330
330
|
>
|
|
331
331
|
{{ t('info.userAgreement') }}
|
|
@@ -119,9 +119,7 @@ const autoLoginClose = () => {
|
|
|
119
119
|
<id-password-successful-modal v-if="passwordSuccessfulModal" />
|
|
120
120
|
</a-modal>
|
|
121
121
|
|
|
122
|
-
<
|
|
123
|
-
<id-auto-logout-modal v-if="autoLogoutModal" @closed="autoLoginClose" />
|
|
124
|
-
</a-modal>
|
|
122
|
+
<id-auto-logout-modal v-if="autoLogoutModal" @closed="autoLoginClose" />
|
|
125
123
|
</template>
|
|
126
124
|
|
|
127
125
|
<style scoped></style>
|
|
@@ -85,10 +85,10 @@ async function onSubmit() {
|
|
|
85
85
|
novalidate
|
|
86
86
|
@submit.prevent="onSubmit"
|
|
87
87
|
>
|
|
88
|
-
<h2 class="text-center text-
|
|
88
|
+
<h2 class="text-center text-h2">
|
|
89
89
|
{{ t('modals.id.newPassword.title') }}
|
|
90
90
|
</h2>
|
|
91
|
-
<p class="text-center text-
|
|
91
|
+
<p class="text-center text-body-md">
|
|
92
92
|
{{ t('modals.id.newPassword.content') }}
|
|
93
93
|
</p>
|
|
94
94
|
|
|
@@ -114,7 +114,7 @@ async function onSubmit() {
|
|
|
114
114
|
{{ t('actions.set') }}
|
|
115
115
|
</a-button>
|
|
116
116
|
|
|
117
|
-
<p class="text-center text-
|
|
117
|
+
<p class="text-center text-body-md">
|
|
118
118
|
{{ t('reuse.or') }}
|
|
119
119
|
</p>
|
|
120
120
|
|
|
@@ -126,10 +126,10 @@ function moveFocus(index: number, to: string) {
|
|
|
126
126
|
type="text"
|
|
127
127
|
inputmode="numeric"
|
|
128
128
|
maxlength="1"
|
|
129
|
-
class="size-10 rounded bg-
|
|
129
|
+
class="size-10 rounded bg-muted text-center text-lg caret-transparent focus:outline-hidden"
|
|
130
130
|
:class="{
|
|
131
|
-
'border border-
|
|
132
|
-
'focus:border focus:border-
|
|
131
|
+
'border border-danger bg-danger/10': showError,
|
|
132
|
+
'focus:border focus:border-focus': !showError,
|
|
133
133
|
}"
|
|
134
134
|
@input="onInput($event, index)"
|
|
135
135
|
@keydown.backspace="onBackspace(index, $event)"
|
|
@@ -5,13 +5,13 @@ const { t } = useI18n()
|
|
|
5
5
|
|
|
6
6
|
<template>
|
|
7
7
|
<div class="flex flex-col gap-4 text-center">
|
|
8
|
-
<h2 class="text-
|
|
8
|
+
<h2 class="text-h2">
|
|
9
9
|
{{ t('modals.id.passwordSuccessful.title') }}
|
|
10
10
|
</h2>
|
|
11
|
-
<span class="mx-auto size-[100px] rounded-full bg-
|
|
11
|
+
<span class="mx-auto size-[100px] rounded-full bg-muted">
|
|
12
12
|
<a-ill-ok />
|
|
13
13
|
</span>
|
|
14
|
-
<p class="text-
|
|
14
|
+
<p class="text-body-md">
|
|
15
15
|
{{ t('modals.id.passwordSuccessful.content') }}
|
|
16
16
|
</p>
|
|
17
17
|
<a-button @click="passwordSuccessfulModal = false">
|
|
@@ -87,10 +87,10 @@ onBeforeUnmount(() => {
|
|
|
87
87
|
novalidate
|
|
88
88
|
@submit.prevent="onSubmit"
|
|
89
89
|
>
|
|
90
|
-
<h2 class="text-center text-
|
|
90
|
+
<h2 class="text-center text-h2">
|
|
91
91
|
{{ t('modals.id.recovery.title') }}
|
|
92
92
|
</h2>
|
|
93
|
-
<p class="text-center text-
|
|
93
|
+
<p class="text-center text-body-md">
|
|
94
94
|
{{ t('modals.id.recovery.content') }}
|
|
95
95
|
</p>
|
|
96
96
|
<a-input-standard
|
|
@@ -101,7 +101,7 @@ onBeforeUnmount(() => {
|
|
|
101
101
|
<a-button :loading="loading">
|
|
102
102
|
{{ t('actions.recover') }}
|
|
103
103
|
</a-button>
|
|
104
|
-
<p class="text-center text-
|
|
104
|
+
<p class="text-center text-body-md">
|
|
105
105
|
{{ t('reuse.or') }}
|
|
106
106
|
</p>
|
|
107
107
|
<a-button
|
|
@@ -149,10 +149,10 @@ onBeforeUnmount(() => {
|
|
|
149
149
|
novalidate
|
|
150
150
|
@submit.prevent="onSubmit"
|
|
151
151
|
>
|
|
152
|
-
<h2 class="text-center text-
|
|
152
|
+
<h2 class="text-center text-h2">
|
|
153
153
|
{{ t('modals.id.register.title') }}
|
|
154
154
|
</h2>
|
|
155
|
-
<p class="text-center text-
|
|
155
|
+
<p class="text-center text-body-md">
|
|
156
156
|
{{ t('modals.id.register.subtitle') }}
|
|
157
157
|
</p>
|
|
158
158
|
<a-input-standard
|
|
@@ -187,7 +187,7 @@ onBeforeUnmount(() => {
|
|
|
187
187
|
<i18n-t keypath="modals.id.register.agreement.text">
|
|
188
188
|
<template #link>
|
|
189
189
|
<nuxt-link-locale
|
|
190
|
-
class="text-
|
|
190
|
+
class="text-brand"
|
|
191
191
|
@click="getUrl"
|
|
192
192
|
>
|
|
193
193
|
{{ t('modals.id.register.agreement.link') }}
|
|
@@ -201,7 +201,7 @@ onBeforeUnmount(() => {
|
|
|
201
201
|
>
|
|
202
202
|
{{ t('modals.id.register.continue') }}
|
|
203
203
|
</a-button>
|
|
204
|
-
<p class="text-center text-
|
|
204
|
+
<p class="text-center text-body-md">
|
|
205
205
|
{{ t('modals.id.register.haveAcc') }}
|
|
206
206
|
</p>
|
|
207
207
|
<a-button
|
|
@@ -108,24 +108,25 @@ onBeforeUnmount(() => {
|
|
|
108
108
|
|
|
109
109
|
<template>
|
|
110
110
|
<div class="flex flex-col items-center gap-4 text-center">
|
|
111
|
-
<h2 class="text-
|
|
111
|
+
<h2 class="text-h2">
|
|
112
112
|
{{ t('modals.id.resetPasswordOtp.title') }}
|
|
113
113
|
</h2>
|
|
114
114
|
|
|
115
|
+
<!-- осознанно константный: пара light/dark-ассетов, тема переключается dark:-классами -->
|
|
115
116
|
<a-icon-hand-with-phone-light class="size-32 dark:hidden" />
|
|
116
117
|
<a-icon-hand-with-phone-dark class="hidden size-32 dark:block" />
|
|
117
118
|
|
|
118
|
-
<div class="text-
|
|
119
|
+
<div class="text-body-md">
|
|
119
120
|
<p class="mb-1">
|
|
120
121
|
{{ t('modals.id.resetPasswordOtp.content') }}
|
|
121
122
|
</p>
|
|
122
123
|
|
|
123
|
-
<div v-if="timer > 0" class="text-
|
|
124
|
+
<div v-if="timer > 0" class="text-h2">
|
|
124
125
|
{{ timer }} {{ t('modals.id.resetPasswordOtp.seconds') }}
|
|
125
126
|
</div>
|
|
126
127
|
<button
|
|
127
128
|
v-else
|
|
128
|
-
class="text-
|
|
129
|
+
class="text-brand flex items-center gap-2 mx-auto"
|
|
129
130
|
@click="onResend"
|
|
130
131
|
:disabled="isResendLoading"
|
|
131
132
|
>
|
|
@@ -96,9 +96,10 @@ onBeforeUnmount(() => {
|
|
|
96
96
|
|
|
97
97
|
<template>
|
|
98
98
|
<div class="flex flex-col items-center gap-4">
|
|
99
|
-
<p class="
|
|
99
|
+
<p class="text-h2 text-center">
|
|
100
100
|
{{ t('modals.id.twoFactor.title') }}
|
|
101
101
|
</p>
|
|
102
|
+
<!-- осознанно константный: пара light/dark-ассетов, тема переключается dark:-классами -->
|
|
102
103
|
<a-icon-hand-with-phone-light class="size-32 dark:hidden" />
|
|
103
104
|
<a-icon-hand-with-phone-dark class="hidden size-32 dark:block" />
|
|
104
105
|
<id-otp-input
|
|
@@ -106,7 +107,7 @@ onBeforeUnmount(() => {
|
|
|
106
107
|
v-model:error="showError"
|
|
107
108
|
@on-completed="onConfirm"
|
|
108
109
|
/>
|
|
109
|
-
<p class="body-
|
|
110
|
+
<p class="text-body-md text-center">
|
|
110
111
|
{{ t('modals.id.twoFactor.code') }}
|
|
111
112
|
</p>
|
|
112
113
|
|
|
@@ -56,17 +56,17 @@ const profile: string = 'modals.mobile_navigation.type_profile'
|
|
|
56
56
|
</script>
|
|
57
57
|
|
|
58
58
|
<template>
|
|
59
|
-
<header class="mx-3 mb-3 overflow-hidden rounded-full border border-
|
|
59
|
+
<header class="mx-3 mb-3 overflow-hidden rounded-full border border-default bg-subtle shadow-lg backdrop-blur-lg">
|
|
60
60
|
<div class="grid w-full grid-cols-3 justify-items-center">
|
|
61
61
|
<slot>
|
|
62
62
|
<button
|
|
63
63
|
v-for="(item, index) in items"
|
|
64
64
|
:key="index"
|
|
65
|
-
class="h-16 w-auto min-w-16 max-w-[168px] lg:hover:bg-
|
|
66
|
-
:class="{ grow, 'text-
|
|
65
|
+
class="h-16 w-auto min-w-16 max-w-[168px] lg:hover:bg-brand-subtle lg:hover:text-link-hover"
|
|
66
|
+
:class="{ grow, 'text-brand': modelValue === item.value }"
|
|
67
67
|
@click="onClick(item.value)"
|
|
68
68
|
>
|
|
69
|
-
<span class="flex flex-col items-center justify-center text-
|
|
69
|
+
<span class="flex flex-col items-center justify-center text-body-sm lg:text-body-md">
|
|
70
70
|
<template v-if="Object.prototype.hasOwnProperty.call(item, 'icon')">
|
|
71
71
|
<component
|
|
72
72
|
:is="item.icon"
|
|
@@ -81,9 +81,9 @@ const profile: string = 'modals.mobile_navigation.type_profile'
|
|
|
81
81
|
class="h-16 w-auto min-w-16 max-w-[168px]"
|
|
82
82
|
@click="onClick('profile')"
|
|
83
83
|
>
|
|
84
|
-
<span class="flex flex-col items-center justify-center text-
|
|
84
|
+
<span class="flex flex-col items-center justify-center text-body-sm lg:text-body-md">
|
|
85
85
|
<avatar
|
|
86
|
-
class="
|
|
86
|
+
class="size-6 rounded-full bg-muted outline-(--border-color-focus)"
|
|
87
87
|
/>
|
|
88
88
|
{{ t(profile) }}
|
|
89
89
|
</span>
|
|
@@ -93,7 +93,7 @@ const profile: string = 'modals.mobile_navigation.type_profile'
|
|
|
93
93
|
class="h-16 w-auto min-w-16 max-w-[168px]"
|
|
94
94
|
@click="goAuth"
|
|
95
95
|
>
|
|
96
|
-
<span class="flex flex-col items-center justify-center text-
|
|
96
|
+
<span class="flex flex-col items-center justify-center text-body-sm lg:text-body-md">
|
|
97
97
|
<icon-logout class="lg:size-6" />
|
|
98
98
|
{{ t(login) }}
|
|
99
99
|
</span>
|
|
@@ -46,12 +46,12 @@ const items = computed<Item[]>(() => {
|
|
|
46
46
|
v-if="item.kind === 'ellipsis'"
|
|
47
47
|
class="flex items-center gap-2"
|
|
48
48
|
>
|
|
49
|
-
<span class="text-
|
|
49
|
+
<span class="text-icon-disabled">
|
|
50
50
|
<a-icon-chevron-right class="size-4" />
|
|
51
51
|
</span>
|
|
52
52
|
<button
|
|
53
53
|
type="button"
|
|
54
|
-
class="flex size-[18px] items-center justify-center rounded text-
|
|
54
|
+
class="flex size-[18px] items-center justify-center rounded text-quaternary transition-colors hover:text-primary"
|
|
55
55
|
:aria-label="t('actions.showMore')"
|
|
56
56
|
@click="expanded = true"
|
|
57
57
|
>
|
|
@@ -62,7 +62,7 @@ const items = computed<Item[]>(() => {
|
|
|
62
62
|
v-else
|
|
63
63
|
:class="
|
|
64
64
|
twMerge(
|
|
65
|
-
'flex items-center gap-2 text-body-md text-
|
|
65
|
+
'flex items-center gap-2 text-body-md text-quaternary underline-offset-2 last-of-type:font-semibold last-of-type:text-primary hover:underline',
|
|
66
66
|
customClasses,
|
|
67
67
|
)
|
|
68
68
|
"
|
|
@@ -81,7 +81,7 @@ const items = computed<Item[]>(() => {
|
|
|
81
81
|
>
|
|
82
82
|
<span
|
|
83
83
|
v-if="idx !== 0"
|
|
84
|
-
class="text-
|
|
84
|
+
class="text-icon-disabled"
|
|
85
85
|
>
|
|
86
86
|
<a-icon-chevron-right class="size-4" />
|
|
87
87
|
</span>
|
|
@@ -166,7 +166,7 @@ const contactLinks = computed(() => ({
|
|
|
166
166
|
<template>
|
|
167
167
|
<footer
|
|
168
168
|
id="footer"
|
|
169
|
-
class="rounded-t-
|
|
169
|
+
class="rounded-t-[32px] bg-secondary-500 py-4 lg:py-5 dark:bg-black"
|
|
170
170
|
>
|
|
171
171
|
<div class="a-container mobile-padding flex flex-col justify-between gap-8 py-5 text-white lg:flex-row">
|
|
172
172
|
<div class="flex flex-col justify-between gap-8">
|
|
@@ -221,7 +221,7 @@ const contactLinks = computed(() => ({
|
|
|
221
221
|
<!-- noindex -->
|
|
222
222
|
<div class="flex flex-col items-start gap-2" data-nosnippet>
|
|
223
223
|
<nuxt-link
|
|
224
|
-
class="cursor-pointer border-b-[0.5px] border-
|
|
224
|
+
class="cursor-pointer border-b-[0.5px] border-current pr-4 pb-3 text-body-md-strong"
|
|
225
225
|
:to="contactLinks.link?.replace(/\/$/, '')"
|
|
226
226
|
>
|
|
227
227
|
{{ contactLinks.title }}
|
|
@@ -40,7 +40,7 @@ const filterCheck = computed(() => {
|
|
|
40
40
|
<div class="flex flex-col items-start gap-2">
|
|
41
41
|
<div class="flex w-full justify-between gap-2">
|
|
42
42
|
<nuxt-link
|
|
43
|
-
class="cursor-default text-body-md-strong lg:border-b-[0.5px] lg:border-
|
|
43
|
+
class="cursor-default text-body-md-strong lg:border-b-[0.5px] lg:border-current lg:pb-3 lg:pr-4"
|
|
44
44
|
:class="{ 'cursor-pointer': link }"
|
|
45
45
|
:to="link?.replace(/\/$/, '')"
|
|
46
46
|
>
|
|
@@ -107,7 +107,7 @@ onMounted(() => {
|
|
|
107
107
|
<system-notification />
|
|
108
108
|
<header
|
|
109
109
|
ref="headerRef"
|
|
110
|
-
class="relative h-16 border-b border-
|
|
110
|
+
class="relative h-16 border-b border-default bg-main/72 backdrop-blur-[14px] backdrop-saturate-140"
|
|
111
111
|
>
|
|
112
112
|
<div class="a-container mobile-padding flex h-full items-center justify-between gap-2">
|
|
113
113
|
<!-- Desktop hidden -->
|
|
@@ -117,7 +117,7 @@ onMounted(() => {
|
|
|
117
117
|
>
|
|
118
118
|
<div
|
|
119
119
|
v-if="mobileHeaderType === 'default'"
|
|
120
|
-
class="text-
|
|
120
|
+
class="text-primary"
|
|
121
121
|
@click="goToAnotherModule"
|
|
122
122
|
>
|
|
123
123
|
<span class="visually-hidden"> Сервисы Adata.kz</span>
|
|
@@ -132,15 +132,15 @@ onMounted(() => {
|
|
|
132
132
|
class="flex w-full items-center gap-2 lg:hidden"
|
|
133
133
|
>
|
|
134
134
|
<logo
|
|
135
|
-
class="
|
|
135
|
+
class=""
|
|
136
136
|
@click="goToAnotherModule"
|
|
137
137
|
/>
|
|
138
138
|
<button
|
|
139
|
-
class="flex w-full items-center gap-2 rounded-full border border-
|
|
139
|
+
class="flex w-full items-center gap-2 rounded-full border border-strong/50 bg-main/30 px-4 py-1.5 backdrop-blur-sm"
|
|
140
140
|
@click="$emit('search')"
|
|
141
141
|
>
|
|
142
|
-
<a-icon-search class="text-
|
|
143
|
-
<span class="text-body-md text-
|
|
142
|
+
<a-icon-search class="text-icon-disabled" />
|
|
143
|
+
<span class="text-body-md text-secondary">{{ t('header.search') }}</span>
|
|
144
144
|
</button>
|
|
145
145
|
</div>
|
|
146
146
|
</section>
|
|
@@ -161,7 +161,7 @@ onMounted(() => {
|
|
|
161
161
|
<nuxt-link-locale
|
|
162
162
|
aria-label="Adata-logo"
|
|
163
163
|
:to="buildLocalizedUrl(locale, urls.landing)"
|
|
164
|
-
class="
|
|
164
|
+
class="cursor-pointer text-primary"
|
|
165
165
|
data-test-id="header-main-adata-logo"
|
|
166
166
|
@click="goToAnotherModule"
|
|
167
167
|
>
|
|
@@ -172,7 +172,7 @@ onMounted(() => {
|
|
|
172
172
|
</nuxt-link-locale>
|
|
173
173
|
<header-link :menu-top="headerBottom || 64" />
|
|
174
174
|
</nav>
|
|
175
|
-
<div class="
|
|
175
|
+
<div class="hidden items-center gap-4 text-primary lg:flex">
|
|
176
176
|
<header-usage
|
|
177
177
|
v-if="isAuthenticated"
|
|
178
178
|
:limit-remaining="limitRemaining"
|
|
@@ -197,10 +197,10 @@ onMounted(() => {
|
|
|
197
197
|
<template #default="{ toggle, isOpen }">
|
|
198
198
|
<button
|
|
199
199
|
type="button"
|
|
200
|
-
class="hidden h-8 cursor-pointer items-center gap-1.5 rounded-full px-3 text-body-md-medium transition-colors duration-150 hover:bg-
|
|
200
|
+
class="hidden h-8 cursor-pointer items-center gap-1.5 rounded-full px-3 text-body-md-medium transition-colors duration-150 hover:bg-action-secondary-hover focus-visible:ring-2 focus-visible:ring-brand-500/50 focus-visible:ring-offset-1 focus-visible:outline-hidden lg:inline-flex"
|
|
201
201
|
:class="isOpen
|
|
202
|
-
? 'bg-
|
|
203
|
-
: 'text-
|
|
202
|
+
? 'bg-action-secondary-hover text-primary'
|
|
203
|
+
: 'text-primary'"
|
|
204
204
|
data-test-id="header-email-text"
|
|
205
205
|
:aria-label="email"
|
|
206
206
|
@click.stop="toggle"
|
|
@@ -62,7 +62,7 @@ const newContacts = computed(() => contacts.value.map(item => ({
|
|
|
62
62
|
{{ item.title }}
|
|
63
63
|
</div>
|
|
64
64
|
<a
|
|
65
|
-
class="flex items-center gap-1 text-
|
|
65
|
+
class="flex items-center gap-1 text-primary"
|
|
66
66
|
:href="item.to"
|
|
67
67
|
>
|
|
68
68
|
<component
|
|
@@ -85,7 +85,7 @@ const newContacts = computed(() => contacts.value.map(item => ({
|
|
|
85
85
|
<a
|
|
86
86
|
v-for="link in newContacts"
|
|
87
87
|
:key="link.subtitle"
|
|
88
|
-
class="flex gap-1 text-
|
|
88
|
+
class="flex gap-1 text-primary 2xl:items-center"
|
|
89
89
|
:href="link.to"
|
|
90
90
|
:target="link.icon === Whatsapp ? '_blank' : '_self'"
|
|
91
91
|
>
|
|
@@ -104,16 +104,16 @@ const newContacts = computed(() => contacts.value.map(item => ({
|
|
|
104
104
|
<a
|
|
105
105
|
v-for="link in technicalSupport"
|
|
106
106
|
:key="link.subtitle"
|
|
107
|
-
class="flex gap-1 text-
|
|
107
|
+
class="flex gap-1 text-primary 2xl:items-center"
|
|
108
108
|
:href="link.to"
|
|
109
109
|
target="_blank"
|
|
110
110
|
>
|
|
111
|
-
<div class="line-clamp-1 text-body-md text-
|
|
111
|
+
<div class="line-clamp-1 text-body-md text-brand">
|
|
112
112
|
{{ link.subtitle }}
|
|
113
113
|
</div>
|
|
114
114
|
<component
|
|
115
115
|
:is="link.icon"
|
|
116
|
-
class="stroke-
|
|
116
|
+
class="stroke-icon-brand"
|
|
117
117
|
/>
|
|
118
118
|
</a>
|
|
119
119
|
</div>
|
|
@@ -130,10 +130,10 @@ const newContacts = computed(() => contacts.value.map(item => ({
|
|
|
130
130
|
<!-- to="https://api.whatsapp.com/send?phone=77713954561" -->
|
|
131
131
|
<!-- target="_blank" -->
|
|
132
132
|
<!-- > -->
|
|
133
|
-
<!-- <div class="body-400 line-clamp-1 text-
|
|
133
|
+
<!-- <div class="body-400 line-clamp-1 text-brand"> -->
|
|
134
134
|
<!-- {{ t('header.contacts.almaty.financeDep.linkTitle') }} -->
|
|
135
135
|
<!-- </div> -->
|
|
136
|
-
<!-- <a-icon-expand-window class="stroke-
|
|
136
|
+
<!-- <a-icon-expand-window class="stroke-icon-brand"/> -->
|
|
137
137
|
<!-- </nuxt-link> -->
|
|
138
138
|
<!-- </div> -->
|
|
139
139
|
</div>
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<!--noindex-->
|
|
3
3
|
<div class="h-[272px]" data-nosnippet>
|
|
4
|
-
<h2 class="
|
|
4
|
+
<h2 class="text-h2 mb-4">
|
|
5
5
|
{{ t('header.contacts.astana.title') }}
|
|
6
6
|
</h2>
|
|
7
7
|
<div class="grid grid-cols-2 gap-5 ">
|
|
8
8
|
<div class="xl:grid grid-cols-2 grid-rows-3 flex flex-wrap gap-4 ">
|
|
9
9
|
<div v-for="(item, index) in AstanaItems" class="flex flex-col gap-2 " :class="{'col-span-2':index===0 }">
|
|
10
|
-
<div class="
|
|
10
|
+
<div class="text-h5">
|
|
11
11
|
{{ item.title }}
|
|
12
12
|
</div>
|
|
13
13
|
<a
|
|
14
|
-
class="flex items-center gap-1 text-
|
|
14
|
+
class="flex items-center gap-1 text-primary"
|
|
15
15
|
:href="item?.to"
|
|
16
16
|
:target="item.icon === Whatsapp ? '_blank' : '_self'"
|
|
17
17
|
>
|
|
18
18
|
<component :is="item.icon"/>
|
|
19
|
-
<div class=" body-
|
|
19
|
+
<div class=" text-body-md">
|
|
20
20
|
{{ item.subtitle }}
|
|
21
21
|
</div>
|
|
22
22
|
</a>
|
|
@@ -122,27 +122,28 @@ onUnmounted(() => clearTimer())
|
|
|
122
122
|
:src="items[currentIndex].image"
|
|
123
123
|
class="size-full object-cover rounded-xl"
|
|
124
124
|
/>
|
|
125
|
+
<!-- осознанно константный: белый текст/иконки и bg-white/50-точки на брендовом оверлее поверх изображения -->
|
|
125
126
|
<nuxt-link-locale :to="items[currentIndex].to">
|
|
126
|
-
<div class="absolute bottom-0
|
|
127
|
+
<div class="absolute bottom-0 flex w-full flex-col gap-6 rounded-xl bg-brand/80 px-4 pb-12 pt-4 shadow-[0_-2px_4px_0] shadow-surface-dark/25 backdrop-blur-md">
|
|
127
128
|
<div class="flex flex-col gap-2">
|
|
128
129
|
<div class="flex items-center justify-between">
|
|
129
130
|
<div class="flex items-center gap-2">
|
|
130
|
-
<div class="flex items-center justify-center bg-
|
|
131
|
+
<div class="flex items-center justify-center bg-main text-brand size-8 rounded-md">
|
|
131
132
|
<component
|
|
132
133
|
:is="items[currentIndex].icon"
|
|
133
134
|
class="size-6"
|
|
134
135
|
/>
|
|
135
136
|
</div>
|
|
136
|
-
<p class="normal-case text-white
|
|
137
|
+
<p class="normal-case text-white text-h3">
|
|
137
138
|
{{ t(items[currentIndex].title) }}
|
|
138
139
|
</p>
|
|
139
140
|
</div>
|
|
140
141
|
<a-icon-arrow-side-up
|
|
141
|
-
class="icon-link size-6 text-white
|
|
142
|
+
class="icon-link size-6 text-white"
|
|
142
143
|
:class="{ 'visible': isHovered }"
|
|
143
144
|
/>
|
|
144
145
|
</div>
|
|
145
|
-
<p class="normal-case text-white font-semibold
|
|
146
|
+
<p class="normal-case text-white font-semibold">
|
|
146
147
|
{{ t(items[currentIndex].subtitle) }}
|
|
147
148
|
</p>
|
|
148
149
|
</div>
|
|
@@ -155,13 +156,13 @@ onUnmounted(() => clearTimer())
|
|
|
155
156
|
<div
|
|
156
157
|
v-for="(item, index) in items"
|
|
157
158
|
:key="index"
|
|
158
|
-
class="relative bg-white/50
|
|
159
|
+
class="relative bg-white/50 rounded-full overflow-hidden cursor-pointer h-2 w-2 transition-[width] duration-500 ease-[cubic-bezier(0.22,1,0.36,1)]"
|
|
159
160
|
:class="{ 'w-[52px]': currentIndex === index }"
|
|
160
161
|
@click="setCurrentIndex(index)"
|
|
161
162
|
>
|
|
162
163
|
<div
|
|
163
164
|
v-if="currentIndex === index"
|
|
164
|
-
class="absolute inset-0 bg-
|
|
165
|
+
class="absolute inset-0 bg-main progress-bar"
|
|
165
166
|
:style="{ animationPlayState: isHovered ? 'paused' : 'running' }"
|
|
166
167
|
/>
|
|
167
168
|
</div>
|
|
@@ -131,7 +131,7 @@ onBeforeUnmount(() => {
|
|
|
131
131
|
<li
|
|
132
132
|
v-for="(nav, index) in navs"
|
|
133
133
|
:key="nav.label"
|
|
134
|
-
class="relative after:absolute after:right-0 after:top-1/2 after:h-6 after:w-px after:-translate-y-1/2 after:bg-
|
|
134
|
+
class="relative after:absolute after:right-0 after:top-1/2 after:h-6 after:w-px after:-translate-y-1/2 after:bg-(--border-color-strong) last:after:hidden"
|
|
135
135
|
:data-test-id="nav.dataAttribute"
|
|
136
136
|
role="listitem"
|
|
137
137
|
>
|
|
@@ -139,15 +139,15 @@ onBeforeUnmount(() => {
|
|
|
139
139
|
type="button"
|
|
140
140
|
class="group relative cursor-pointer px-3 py-2 font-bold uppercase tracking-tight transition-colors duration-150"
|
|
141
141
|
:class="isActive(index)
|
|
142
|
-
? 'text-
|
|
143
|
-
: 'text-
|
|
142
|
+
? 'text-brand'
|
|
143
|
+
: 'text-primary hover:text-link-hover'"
|
|
144
144
|
@mouseenter="scheduleOpen(index)"
|
|
145
145
|
@mouseleave="clearHoverTimer"
|
|
146
146
|
@click="toggleMenu(index)"
|
|
147
147
|
>
|
|
148
148
|
{{ t(nav.label) }}
|
|
149
149
|
<span
|
|
150
|
-
class="absolute inset-x-3 -bottom-0.5 h-0.5 origin-left rounded-full bg-
|
|
150
|
+
class="absolute inset-x-3 -bottom-0.5 h-0.5 origin-left rounded-full bg-brand transition-transform duration-200"
|
|
151
151
|
:class="isActive(index) ? 'scale-x-100' : 'scale-x-0 group-hover:scale-x-100'"
|
|
152
152
|
/>
|
|
153
153
|
</button>
|
|
@@ -162,7 +162,7 @@ onBeforeUnmount(() => {
|
|
|
162
162
|
:style="{ top: `${menuTop}px`, height: `calc(100dvh - ${menuTop}px)` }"
|
|
163
163
|
>
|
|
164
164
|
<div
|
|
165
|
-
class="absolute inset-0 bg-
|
|
165
|
+
class="absolute inset-0 bg-overlay backdrop-blur"
|
|
166
166
|
@click="closeMenu"
|
|
167
167
|
@mouseover="onOverlayHover"
|
|
168
168
|
/>
|