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
|
@@ -47,28 +47,28 @@ function onBack() {
|
|
|
47
47
|
<div class="flex items-center gap-2">
|
|
48
48
|
<button
|
|
49
49
|
type="button"
|
|
50
|
-
class="rounded-md p-1 transition-colors hover:bg-
|
|
50
|
+
class="rounded-md p-1 transition-colors hover:bg-badge"
|
|
51
51
|
data-test-id="payment-method-back-button"
|
|
52
52
|
@click="onBack"
|
|
53
53
|
>
|
|
54
54
|
<a-icon-chevron-left class="size-6" />
|
|
55
55
|
</button>
|
|
56
|
-
<p class="text-
|
|
56
|
+
<p class="text-h3 text-primary">
|
|
57
57
|
{{ t('payment.method.title') }}
|
|
58
58
|
</p>
|
|
59
59
|
</div>
|
|
60
60
|
</template>
|
|
61
61
|
|
|
62
62
|
<div class="flex flex-col gap-6">
|
|
63
|
-
<div class="flex flex-col items-center gap-4 rounded-xl bg-
|
|
63
|
+
<div class="flex flex-col items-center gap-4 rounded-xl bg-muted p-6 text-center">
|
|
64
64
|
<a-ill-phone-check class="size-[120px]" />
|
|
65
|
-
<p class="text-
|
|
65
|
+
<p class="text-body-md-medium text-quaternary">
|
|
66
66
|
{{ t('payment.method.description') }}
|
|
67
67
|
</p>
|
|
68
68
|
</div>
|
|
69
69
|
|
|
70
70
|
<div class="flex flex-col gap-2">
|
|
71
|
-
<p class="text-
|
|
71
|
+
<p class="text-body-md-strong text-primary">
|
|
72
72
|
{{ t('payment.method.note') }}
|
|
73
73
|
</p>
|
|
74
74
|
|
|
@@ -79,8 +79,8 @@ function onBack() {
|
|
|
79
79
|
class="flex items-center gap-3 rounded-xl border p-4 text-left transition-colors"
|
|
80
80
|
:data-test-id="item.dataTestId"
|
|
81
81
|
:class="selected === item.id
|
|
82
|
-
? 'border-
|
|
83
|
-
: 'border-
|
|
82
|
+
? 'border-brand bg-brand-50/60'
|
|
83
|
+
: 'border-default bg-main hover:border-strong hover:bg-action-secondary-hover'"
|
|
84
84
|
@click="selected = item.id"
|
|
85
85
|
>
|
|
86
86
|
<component
|
|
@@ -88,22 +88,22 @@ function onBack() {
|
|
|
88
88
|
class="h-7 w-auto shrink-0"
|
|
89
89
|
/>
|
|
90
90
|
<div class="flex min-w-0 flex-1 items-center justify-between gap-2">
|
|
91
|
-
<span class="text-
|
|
91
|
+
<span class="text-body-md-strong text-primary">
|
|
92
92
|
{{ t(item.name) }}
|
|
93
93
|
</span>
|
|
94
|
-
<span class="text-
|
|
94
|
+
<span class="text-body-md-strong text-quaternary">
|
|
95
95
|
{{ formattedSum }} ₸
|
|
96
96
|
</span>
|
|
97
97
|
</div>
|
|
98
98
|
<span
|
|
99
99
|
class="flex size-5 shrink-0 items-center justify-center rounded-full border-2 transition-colors"
|
|
100
100
|
:class="selected === item.id
|
|
101
|
-
? 'border-
|
|
102
|
-
: 'border-
|
|
101
|
+
? 'border-brand'
|
|
102
|
+
: 'border-strong'"
|
|
103
103
|
>
|
|
104
104
|
<span
|
|
105
105
|
v-if="selected === item.id"
|
|
106
|
-
class="size-2.5 rounded-full bg-
|
|
106
|
+
class="size-2.5 rounded-full bg-brand"
|
|
107
107
|
/>
|
|
108
108
|
</span>
|
|
109
109
|
</button>
|
|
@@ -48,15 +48,15 @@ function handlePayment() {
|
|
|
48
48
|
data-test-id="topup-balance-modal"
|
|
49
49
|
>
|
|
50
50
|
<template #header>
|
|
51
|
-
<div class="text-
|
|
51
|
+
<div class="text-h3 text-primary">
|
|
52
52
|
{{ t('payment.topUp.title') }}
|
|
53
53
|
</div>
|
|
54
54
|
</template>
|
|
55
55
|
|
|
56
56
|
<div class="flex flex-col gap-6">
|
|
57
|
-
<div class="flex flex-col items-center gap-4 rounded-xl bg-
|
|
57
|
+
<div class="flex flex-col items-center gap-4 rounded-xl bg-muted p-6 text-center">
|
|
58
58
|
<a-ill-bill class="size-[120px]" />
|
|
59
|
-
<p class="text-
|
|
59
|
+
<p class="text-body-md-medium text-quaternary">
|
|
60
60
|
{{ t('payment.topUp.info') }}
|
|
61
61
|
</p>
|
|
62
62
|
</div>
|
|
@@ -77,11 +77,11 @@ function handlePayment() {
|
|
|
77
77
|
v-for="item in sumArr"
|
|
78
78
|
:key="item.id"
|
|
79
79
|
type="button"
|
|
80
|
-
class="rounded-lg border px-3 py-2.5 text-
|
|
80
|
+
class="rounded-lg border px-3 py-2.5 text-body-md-strong transition-colors"
|
|
81
81
|
:data-test-id="item.dataTestId"
|
|
82
82
|
:class="amount === item.value
|
|
83
|
-
? 'border-
|
|
84
|
-
: 'border-
|
|
83
|
+
? 'border-brand bg-brand-subtle text-brand'
|
|
84
|
+
: 'border-default bg-main text-primary hover:border-strong hover:bg-action-secondary-hover'"
|
|
85
85
|
@click.stop="onSelectAmount(item.value)"
|
|
86
86
|
>
|
|
87
87
|
{{ item.label }}
|
|
@@ -31,8 +31,8 @@ const blockStyles = [
|
|
|
31
31
|
<div
|
|
32
32
|
class="size-10 p-2 rounded-md"
|
|
33
33
|
:class="[
|
|
34
|
-
'bg-
|
|
35
|
-
{'!bg-
|
|
34
|
+
'bg-muted',
|
|
35
|
+
{ '!bg-action-primary text-action-primary-fg': isActiveService(service.to) }
|
|
36
36
|
]"
|
|
37
37
|
>
|
|
38
38
|
<component
|
|
@@ -40,7 +40,7 @@ const blockStyles = [
|
|
|
40
40
|
class="size-6 shrink-0"
|
|
41
41
|
/>
|
|
42
42
|
</div>
|
|
43
|
-
<p class="text-
|
|
43
|
+
<p class="text-body-sm text-center">
|
|
44
44
|
{{ service.title }}
|
|
45
45
|
</p>
|
|
46
46
|
</component>
|
|
@@ -48,89 +48,60 @@ const blockStyles = [
|
|
|
48
48
|
</template>
|
|
49
49
|
|
|
50
50
|
<style lang="scss" scoped>
|
|
51
|
+
/* Градиенты бордеров на токенах (main → muted) — сами переключаются в тёмной теме,
|
|
52
|
+
ручной .dark-блок не нужен */
|
|
51
53
|
.first-border-gradient {
|
|
52
54
|
border-width: 0 1px 1px 0;
|
|
53
55
|
border-style: solid;
|
|
54
|
-
border-image-source: linear-gradient(180deg,
|
|
56
|
+
border-image-source: linear-gradient(180deg, var(--background-color-main) 0%, var(--background-color-muted) 100%);
|
|
55
57
|
border-image-slice: 1;
|
|
56
58
|
}
|
|
57
59
|
.second-border-gradient {
|
|
58
60
|
border-width: 0 1px 1px 1px;
|
|
59
61
|
border-style: solid;
|
|
60
|
-
border-image-source: linear-gradient(180deg,
|
|
62
|
+
border-image-source: linear-gradient(180deg, var(--background-color-main) 0%, var(--background-color-muted) 100%);
|
|
61
63
|
border-image-slice: 1;
|
|
62
64
|
}
|
|
63
65
|
.third-border-gradient {
|
|
64
66
|
border-width: 0 0 1px 1px;
|
|
65
67
|
border-style: solid;
|
|
66
|
-
border-image-source: linear-gradient(218.84deg,
|
|
68
|
+
border-image-source: linear-gradient(218.84deg, var(--background-color-main) 41.56%, var(--background-color-muted) 98.73%);
|
|
67
69
|
border-image-slice: 1;
|
|
68
70
|
}
|
|
69
71
|
.fourth-border-gradient {
|
|
70
72
|
border-width: 1px 1px 1px 0;
|
|
71
73
|
border-style: solid;
|
|
72
|
-
border-image-source: linear-gradient(125.34deg,
|
|
74
|
+
border-image-source: linear-gradient(125.34deg, var(--background-color-main) 7.49%, var(--background-color-muted) 86.67%);
|
|
73
75
|
border-image-slice: 1;
|
|
74
76
|
}
|
|
75
77
|
.fifth-border-gradient {
|
|
76
78
|
border-width: 1px;
|
|
77
79
|
border-style: solid;
|
|
78
|
-
border-color: var(--
|
|
80
|
+
border-color: var(--background-color-muted);
|
|
79
81
|
border-image-slice: 1;
|
|
80
82
|
}
|
|
81
83
|
.sixth-border-gradient {
|
|
82
84
|
border-width: 1px 0 1px 1px;
|
|
83
85
|
border-style: solid;
|
|
84
|
-
border-image-source: linear-gradient(261.06deg,
|
|
86
|
+
border-image-source: linear-gradient(261.06deg, var(--background-color-main) -6.98%, var(--background-color-muted) 99.74%);
|
|
85
87
|
border-image-slice: 1;
|
|
86
88
|
}
|
|
87
89
|
.seventh-border-gradient {
|
|
88
90
|
border-width: 1px 1px 0 0;
|
|
89
91
|
border-style: solid;
|
|
90
|
-
border-image-source: linear-gradient(58.51deg,
|
|
92
|
+
border-image-source: linear-gradient(58.51deg, var(--background-color-main) 35.88%, var(--background-color-muted) 85.8%);
|
|
91
93
|
border-image-slice: 1;
|
|
92
94
|
}
|
|
93
95
|
.eighth-border-gradient {
|
|
94
96
|
border-width: 1px 1px 0 1px;
|
|
95
97
|
border-style: solid;
|
|
96
|
-
border-image-source: linear-gradient(0deg,
|
|
98
|
+
border-image-source: linear-gradient(0deg, var(--background-color-main) 0%, var(--background-color-muted) 100%);
|
|
97
99
|
border-image-slice: 1;
|
|
98
100
|
}
|
|
99
101
|
.ninth-border-gradient {
|
|
100
102
|
border-width: 1px 0 0 1px;
|
|
101
103
|
border-style: solid;
|
|
102
|
-
border-image-source: linear-gradient(41.08deg,
|
|
104
|
+
border-image-source: linear-gradient(41.08deg, var(--background-color-main) 6.74%, var(--background-color-muted) 63.33%, var(--background-color-main) 91.03%);
|
|
103
105
|
border-image-slice: 1;
|
|
104
106
|
}
|
|
105
|
-
|
|
106
|
-
.dark {
|
|
107
|
-
.first-border-gradient {
|
|
108
|
-
border-image-source: linear-gradient(180deg, #26282b 0%, #393d40 100%);
|
|
109
|
-
}
|
|
110
|
-
.second-border-gradient {
|
|
111
|
-
border-image-source: linear-gradient(180deg, #26282b 0%, #393d40 100%);
|
|
112
|
-
}
|
|
113
|
-
.third-border-gradient {
|
|
114
|
-
border-image-source: linear-gradient(218.84deg, #26282b 41.56%, #393d40 98.73%);
|
|
115
|
-
}
|
|
116
|
-
.fourth-border-gradient {
|
|
117
|
-
border-image-source: linear-gradient(125.34deg, #26282b 7.49%, #393d40 86.67%);
|
|
118
|
-
}
|
|
119
|
-
.fifth-border-gradient {
|
|
120
|
-
border-color: #393d40;
|
|
121
|
-
}
|
|
122
|
-
.sixth-border-gradient {
|
|
123
|
-
border-image-source: linear-gradient(261.06deg, #26282b -6.98%, #393d40 99.74%);
|
|
124
|
-
}
|
|
125
|
-
.seventh-border-gradient {
|
|
126
|
-
border-image-source: linear-gradient(58.51deg, #26282b 35.88%, #393d40 85.8%);
|
|
127
|
-
}
|
|
128
|
-
.eighth-border-gradient {
|
|
129
|
-
border-image-source: linear-gradient(0deg, #26282b 0%, #393d40 100%);
|
|
130
|
-
}
|
|
131
|
-
.ninth-border-gradient {
|
|
132
|
-
border-image-source: linear-gradient(41.08deg, #26282b 6.74%, #393d40 63.33%, #26282b 91.03%);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
107
|
</style>
|
|
136
|
-
|
|
@@ -10,7 +10,7 @@ const { t } = useI18n()
|
|
|
10
10
|
<nuxt-link
|
|
11
11
|
:to="url"
|
|
12
12
|
target="_blank"
|
|
13
|
-
class="flex cursor-pointer items-center justify-center gap-1 rounded-sm bg-
|
|
13
|
+
class="flex cursor-pointer items-center justify-center gap-1 rounded-sm bg-brand-subtle px-3 py-2 text-brand transition-colors duration-150 hover:bg-blue-subtle"
|
|
14
14
|
>
|
|
15
15
|
<span class="text-body-md">{{ t('header.oldVersion') }}</span>
|
|
16
16
|
<a-icon-arrow-bottom-left-on-square class="rotate-180" />
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<label
|
|
16
16
|
v-if="viewType === 'checkbox'"
|
|
17
17
|
:for="name"
|
|
18
|
-
class="flex items-center text-
|
|
18
|
+
class="flex items-center text-primary"
|
|
19
19
|
:class="twMerge(textSizeOptions[size], disabled ? 'cursor-default': 'cursor-pointer', labelClass)"
|
|
20
20
|
>
|
|
21
21
|
<span
|
|
@@ -27,17 +27,17 @@
|
|
|
27
27
|
<a-icon-checkbox-intermediate
|
|
28
28
|
v-if="isIntermediate"
|
|
29
29
|
class="w-full h-full"
|
|
30
|
-
:class="twMerge('text-
|
|
30
|
+
:class="twMerge('text-brand', intermediateCheckboxClass)"
|
|
31
31
|
/>
|
|
32
32
|
<a-icon-checkbox-active
|
|
33
33
|
v-else-if="isChecked"
|
|
34
34
|
class="w-full h-full"
|
|
35
|
-
:class="twMerge('text-
|
|
35
|
+
:class="twMerge('text-brand', checkboxClass)"
|
|
36
36
|
/>
|
|
37
37
|
<a-icon-checkbox-empty
|
|
38
38
|
v-else
|
|
39
39
|
class="w-full h-full"
|
|
40
|
-
:class="twMerge('text-
|
|
40
|
+
:class="twMerge('text-primary', emptyCheckboxClass)"
|
|
41
41
|
/>
|
|
42
42
|
</span>
|
|
43
43
|
<span
|
|
@@ -49,8 +49,8 @@
|
|
|
49
49
|
<label
|
|
50
50
|
v-else-if="viewType === 'chip'"
|
|
51
51
|
:for="name"
|
|
52
|
-
class="px-[10px] py-[3.5px] text-
|
|
53
|
-
:class="[{'bg-
|
|
52
|
+
class="px-[10px] py-[3.5px] text-primary border border-strong rounded-full text-body-sm"
|
|
53
|
+
:class="[{ 'bg-action-primary text-action-primary-fg font-medium': isChecked }]"
|
|
54
54
|
>
|
|
55
55
|
<slot/>
|
|
56
56
|
</label>
|
|
@@ -134,8 +134,8 @@ const sizeOptions = {
|
|
|
134
134
|
sm: 'min-w-4 min-h-4 max-w-4 max-h-4'
|
|
135
135
|
}
|
|
136
136
|
const textSizeOptions = {
|
|
137
|
-
lg: 'text-
|
|
138
|
-
sm: 'text-
|
|
137
|
+
lg: 'text-body-md gap-2.5',
|
|
138
|
+
sm: 'text-body-sm gap-2'
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
|
|
@@ -87,12 +87,12 @@ const squareClass = computed(() => {
|
|
|
87
87
|
]
|
|
88
88
|
|
|
89
89
|
if (isActive.value) {
|
|
90
|
-
base.push('border-transparent bg-
|
|
90
|
+
base.push('border-transparent bg-action-primary text-action-primary-fg')
|
|
91
91
|
}
|
|
92
92
|
else {
|
|
93
|
-
base.push('border-
|
|
93
|
+
base.push('border-strong bg-main text-transparent')
|
|
94
94
|
if (!props.disabled) {
|
|
95
|
-
base.push('group-hover/cb:border-
|
|
95
|
+
base.push('group-hover/cb:border-brand')
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
|
|
@@ -105,23 +105,23 @@ const chipClass = computed(() => {
|
|
|
105
105
|
]
|
|
106
106
|
|
|
107
107
|
if (isActive.value) {
|
|
108
|
-
base.push('border-transparent bg-
|
|
108
|
+
base.push('border-transparent bg-action-primary text-action-primary-fg')
|
|
109
109
|
}
|
|
110
110
|
else {
|
|
111
|
-
base.push('border-
|
|
111
|
+
base.push('border-strong bg-transparent text-quaternary')
|
|
112
112
|
if (!props.disabled) {
|
|
113
|
-
base.push('group-hover/cb:border-
|
|
113
|
+
base.push('group-hover/cb:border-strong')
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
return base.join(' ')
|
|
118
118
|
})
|
|
119
119
|
|
|
120
|
-
const labelClass = computed(() => `${textClass.value} leading-none text-
|
|
120
|
+
const labelClass = computed(() => `${textClass.value} leading-none text-primary`)
|
|
121
121
|
|
|
122
122
|
const rootClass = computed(() => {
|
|
123
123
|
const base = [
|
|
124
|
-
'checkbox-v2 group/cb inline-flex items-center select-none rounded transition focus-visible:outline-
|
|
124
|
+
'checkbox-v2 group/cb inline-flex items-center select-none rounded transition focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-brand-500 focus-visible:ring-offset-2',
|
|
125
125
|
]
|
|
126
126
|
|
|
127
127
|
if (props.view === 'checkbox') {
|
|
@@ -82,12 +82,12 @@ onMounted(() => {
|
|
|
82
82
|
</script>
|
|
83
83
|
|
|
84
84
|
<template>
|
|
85
|
-
<section class="flex flex-col gap-4 bg-
|
|
85
|
+
<section class="flex flex-col gap-4 bg-main p-8 sm:gap-8 sm:rounded-[20px]">
|
|
86
86
|
<div class="flex flex-col gap-2">
|
|
87
|
-
<h2 class="
|
|
87
|
+
<h2 class="text-display-sm">
|
|
88
88
|
{{ formType === 'feedback' ? t('forms.feedback.title') : t('forms.demo.t') }}
|
|
89
89
|
</h2>
|
|
90
|
-
<p class="
|
|
90
|
+
<p class="text-body-md text-quaternary">
|
|
91
91
|
{{ formType === 'feedback' ? t('forms.feedback.subtitle') : t('forms.demo.st') }}
|
|
92
92
|
</p>
|
|
93
93
|
</div>
|
|
@@ -100,7 +100,7 @@ onMounted(() => {
|
|
|
100
100
|
v-if="formType === 'feedback'"
|
|
101
101
|
v-model="mail"
|
|
102
102
|
type="email"
|
|
103
|
-
color-classes="bg-
|
|
103
|
+
color-classes="bg-muted"
|
|
104
104
|
:error="feedbackValidation.getError('mail')"
|
|
105
105
|
:label="t('forms.feedback.email')"
|
|
106
106
|
required
|
|
@@ -120,7 +120,7 @@ onMounted(() => {
|
|
|
120
120
|
v-model="phone"
|
|
121
121
|
v-maska
|
|
122
122
|
type="tel"
|
|
123
|
-
color-classes="bg-
|
|
123
|
+
color-classes="bg-muted"
|
|
124
124
|
:error="formType === 'feedback' ? feedbackValidation.getError('phone') : getDemoValidation.getError('phone')"
|
|
125
125
|
:label="t('forms.feedback.phone')"
|
|
126
126
|
data-maska="8 (###) ###-##-##"
|
|
@@ -136,7 +136,7 @@ onMounted(() => {
|
|
|
136
136
|
:label="t('forms.feedback.comment')"
|
|
137
137
|
:resizeable="false"
|
|
138
138
|
class="min-h-[72px]"
|
|
139
|
-
color-classes="bg-
|
|
139
|
+
color-classes="bg-muted"
|
|
140
140
|
required
|
|
141
141
|
size="sm"
|
|
142
142
|
:disabled="isLoading"
|
|
@@ -159,10 +159,10 @@ onMounted(() => {
|
|
|
159
159
|
>
|
|
160
160
|
<div class="flex flex-col items-center gap-4 px-6 py-4">
|
|
161
161
|
<a-ill-mail />
|
|
162
|
-
<h4 class="text-
|
|
162
|
+
<h4 class="text-h4">
|
|
163
163
|
{{ t('forms.feedback.modalTitle') }}
|
|
164
164
|
</h4>
|
|
165
|
-
<p class="body-
|
|
165
|
+
<p class="text-body-md max-[352xp]">
|
|
166
166
|
{{ t('forms.feedback.modalSubtitle') }}
|
|
167
167
|
</p>
|
|
168
168
|
<a-button-v2
|
|
@@ -70,9 +70,10 @@ onMounted(() => {
|
|
|
70
70
|
|
|
71
71
|
<template>
|
|
72
72
|
<section class="feedback-v2">
|
|
73
|
-
|
|
73
|
+
<!-- градиент промо-карточки — осознанный литерал (§05 аудита), но флипается в тёмной теме -->
|
|
74
|
+
<div class="grid grid-cols-1 items-center gap-8 rounded-[28px] border border-default bg-linear-to-br from-[#f0f8ff] via-[#eef4ff] to-[#f0f8ff] p-4 md:gap-10 md:p-12 lg:grid-cols-2 dark:from-[#1a2231] dark:via-[#15191f] dark:to-[#121316]">
|
|
74
75
|
<div>
|
|
75
|
-
<div class="mb-4 inline-flex items-center gap-2 rounded-full border border-
|
|
76
|
+
<div class="mb-4 inline-flex items-center gap-2 rounded-full border border-default bg-main px-3 py-1.5 text-body-md text-brand">
|
|
76
77
|
<message-square class="size-3.5" />
|
|
77
78
|
{{ t('forms.feedback.value') }}
|
|
78
79
|
</div>
|
|
@@ -80,7 +81,7 @@ onMounted(() => {
|
|
|
80
81
|
<h2 class="text-h2 md:text-display-sm">
|
|
81
82
|
{{ title ?? t('forms.feedback.title') }}
|
|
82
83
|
</h2>
|
|
83
|
-
<p class="mt-3 max-w-[448px] text-body-sm md:text-body-lg
|
|
84
|
+
<p class="mt-3 max-w-[448px] text-body-sm text-quaternary md:text-body-lg">
|
|
84
85
|
{{ subtitle ?? t('forms.feedback.subtitle') }}
|
|
85
86
|
</p>
|
|
86
87
|
|
|
@@ -89,7 +90,7 @@ onMounted(() => {
|
|
|
89
90
|
</div>
|
|
90
91
|
</div>
|
|
91
92
|
|
|
92
|
-
<div class="rounded-[24px] border border-
|
|
93
|
+
<div class="rounded-[24px] border border-default bg-main p-4 shadow-xl shadow-brand-600/10 md:p-7">
|
|
93
94
|
<form
|
|
94
95
|
class="flex flex-col gap-3"
|
|
95
96
|
@submit.prevent="send"
|
|
@@ -146,9 +147,9 @@ onMounted(() => {
|
|
|
146
147
|
>
|
|
147
148
|
{{ t('forms.feedback.send') }}
|
|
148
149
|
</a-button-v2>
|
|
149
|
-
<p class="mt-1 text-center text-body-sm text-
|
|
150
|
+
<p class="mt-1 text-center text-body-sm text-disabled">
|
|
150
151
|
{{ t('forms.feedback.consent') }}
|
|
151
|
-
<span class="text-
|
|
152
|
+
<span class="text-brand">
|
|
152
153
|
{{ t('forms.feedback.consentAccent') }}
|
|
153
154
|
</span>
|
|
154
155
|
</p>
|
|
@@ -164,10 +165,10 @@ onMounted(() => {
|
|
|
164
165
|
>
|
|
165
166
|
<div class="flex flex-col items-center gap-4 px-6 py-4">
|
|
166
167
|
<a-ill-mail />
|
|
167
|
-
<h4 class="text-
|
|
168
|
+
<h4 class="text-h4">
|
|
168
169
|
{{ t('forms.feedback.modalTitle') }}
|
|
169
170
|
</h4>
|
|
170
|
-
<p class="
|
|
171
|
+
<p class="max-w-[352px] text-center text-body-md">
|
|
171
172
|
{{ t('forms.feedback.modalSubtitle') }}
|
|
172
173
|
</p>
|
|
173
174
|
<a-button-v2
|
|
@@ -43,12 +43,13 @@ interface Props {
|
|
|
43
43
|
disabled?: boolean
|
|
44
44
|
readonly?: boolean
|
|
45
45
|
clearable?: boolean
|
|
46
|
-
size?: 'sm' | 'md'
|
|
46
|
+
size?: 'sm' | 'md' | 'lg'
|
|
47
47
|
error?: string | string[]
|
|
48
48
|
startIcon?: Component
|
|
49
|
+
startIconClass?: string
|
|
49
50
|
endIcon?: Component
|
|
50
51
|
loading?: boolean
|
|
51
|
-
variant?: 'default' | 'gray' | 'blue'
|
|
52
|
+
variant?: 'default' | 'gray' | 'blue' | 'canvas'
|
|
52
53
|
mask?: string
|
|
53
54
|
inputId?: string
|
|
54
55
|
autocomplete?: string
|
|
@@ -255,13 +256,19 @@ defineExpose({ focus, blur, inputRef })
|
|
|
255
256
|
|
|
256
257
|
const layoutClass = computed(() => {
|
|
257
258
|
if (!props.label) {
|
|
259
|
+
if (props.size === 'lg') return 'h-11 py-2'
|
|
258
260
|
return props.size === 'md' ? 'h-10 py-1.5' : 'h-9 py-1.5'
|
|
259
261
|
}
|
|
262
|
+
if (props.size === 'lg') return 'h-11 pt-4 pb-1'
|
|
260
263
|
return props.size === 'md' ? 'h-10 pt-4 pb-0.5' : 'h-9 pt-3 pb-0.5'
|
|
261
264
|
})
|
|
262
265
|
|
|
266
|
+
/* Компенсация асимметричных паддингов поля с label: иконки возвращаются к
|
|
267
|
+
визуальному центру. Величина = (pt + контент/2) - h/2:
|
|
268
|
+
sm 12+11-18=5, md 16+11-20=7, lg 16+12-22=6. */
|
|
263
269
|
const iconOffsetClass = computed(() => {
|
|
264
270
|
if (!props.label) return ''
|
|
271
|
+
if (props.size === 'lg') return '-translate-y-[6px]'
|
|
265
272
|
return props.size === 'md' ? '-translate-y-[7px]' : '-translate-y-[5px]'
|
|
266
273
|
})
|
|
267
274
|
|
|
@@ -283,15 +290,20 @@ const inputAttrs = computed(() => {
|
|
|
283
290
|
|
|
284
291
|
const fieldClass = computed(() => {
|
|
285
292
|
if (props.disabled) {
|
|
286
|
-
return 'border-
|
|
293
|
+
return 'border-default bg-badge/70'
|
|
287
294
|
}
|
|
288
295
|
if (props.variant === 'gray') {
|
|
289
|
-
|
|
296
|
+
/* по макету ДС-2026 у залитого поля бордер видимый, а не прозрачный */
|
|
297
|
+
return 'border-default bg-muted'
|
|
290
298
|
}
|
|
291
299
|
if (props.variant === 'blue') {
|
|
292
|
-
return 'border-
|
|
300
|
+
return 'border-brand-200 bg-brand-subtle'
|
|
293
301
|
}
|
|
294
|
-
|
|
302
|
+
if (props.variant === 'canvas') {
|
|
303
|
+
/* «утопленная» зона ДС + hero-поиск лендинга: bg-canvas глубже bg-muted в дарке */
|
|
304
|
+
return 'border-default bg-canvas'
|
|
305
|
+
}
|
|
306
|
+
return 'border-default bg-main'
|
|
295
307
|
})
|
|
296
308
|
|
|
297
309
|
function rowDisplay(item: T): unknown {
|
|
@@ -308,7 +320,7 @@ function rowDisplay(item: T): unknown {
|
|
|
308
320
|
>
|
|
309
321
|
<div
|
|
310
322
|
ref="fieldRef"
|
|
311
|
-
class="input-v2__field
|
|
323
|
+
class="input-v2__field relative flex w-full cursor-text items-center gap-2 rounded-10 border border-solid text-primary transition-colors duration-200 focus-within:border-focus focus-within:ring-2 focus-within:ring-brand-500/20 hover:border-brand"
|
|
312
324
|
:class="[
|
|
313
325
|
layoutClass,
|
|
314
326
|
fieldClass,
|
|
@@ -321,21 +333,23 @@ function rowDisplay(item: T): unknown {
|
|
|
321
333
|
<label
|
|
322
334
|
v-if="label"
|
|
323
335
|
:for="inputId"
|
|
324
|
-
class="input-v2__label pointer-events-none absolute top-1/2 max-w-[calc(100%-32px)] truncate text-
|
|
336
|
+
class="input-v2__label pointer-events-none absolute top-1/2 max-w-[calc(100%-32px)] truncate text-secondary"
|
|
325
337
|
:data-size="size"
|
|
326
338
|
:class="[
|
|
327
339
|
startIcon ? 'left-9' : 'left-4',
|
|
328
340
|
{ 'input-v2__label--floated': isLabelFloated },
|
|
329
341
|
]"
|
|
330
342
|
>
|
|
331
|
-
{{ label }}<span v-if="required" class="text-
|
|
343
|
+
{{ label }}<span v-if="required" class="text-danger"> *</span>
|
|
332
344
|
</label>
|
|
333
345
|
|
|
346
|
+
<!-- startIconClass ЗАМЕНЯЕТ дефолтные размер+цвет, а не дописывается:
|
|
347
|
+
конфликт одинаковых утилит решается порядком в stylesheet, не в class -->
|
|
334
348
|
<component
|
|
335
349
|
:is="startIcon"
|
|
336
350
|
v-if="startIcon"
|
|
337
|
-
class="
|
|
338
|
-
:class="iconOffsetClass"
|
|
351
|
+
class="shrink-0"
|
|
352
|
+
:class="[startIconClass || 'size-4 text-icon-disabled', iconOffsetClass]"
|
|
339
353
|
/>
|
|
340
354
|
|
|
341
355
|
<input
|
|
@@ -348,7 +362,7 @@ function rowDisplay(item: T): unknown {
|
|
|
348
362
|
:readonly="readonly"
|
|
349
363
|
:autocomplete="autocomplete"
|
|
350
364
|
:tabindex="disabled ? -1 : 0"
|
|
351
|
-
class="input-v2__input
|
|
365
|
+
class="input-v2__input w-full min-w-0 bg-transparent leading-tight text-primary outline-hidden placeholder:text-secondary disabled:cursor-not-allowed"
|
|
352
366
|
v-bind="inputAttrs"
|
|
353
367
|
@input="onInput"
|
|
354
368
|
@focus="onFocus"
|
|
@@ -358,7 +372,7 @@ function rowDisplay(item: T): unknown {
|
|
|
358
372
|
|
|
359
373
|
<a-icon-loader-circle
|
|
360
374
|
v-if="loading"
|
|
361
|
-
class="size-4 shrink-0 animate-spin text-
|
|
375
|
+
class="size-4 shrink-0 animate-spin text-icon-disabled"
|
|
362
376
|
:class="iconOffsetClass"
|
|
363
377
|
/>
|
|
364
378
|
|
|
@@ -366,18 +380,18 @@ function rowDisplay(item: T): unknown {
|
|
|
366
380
|
v-else-if="showClearButton"
|
|
367
381
|
type="button"
|
|
368
382
|
tabindex="-1"
|
|
369
|
-
class="flex shrink-0 items-center justify-center rounded-full p-0.5 transition-colors hover:bg-
|
|
383
|
+
class="flex shrink-0 items-center justify-center rounded-full p-0.5 transition-colors hover:bg-badge"
|
|
370
384
|
:class="iconOffsetClass"
|
|
371
385
|
@mousedown.prevent
|
|
372
386
|
@click.stop="onClear"
|
|
373
387
|
>
|
|
374
|
-
<a-icon-x-mark class="
|
|
388
|
+
<a-icon-x-mark class="m-0! size-3.5" />
|
|
375
389
|
</button>
|
|
376
390
|
|
|
377
391
|
<component
|
|
378
392
|
:is="endIcon"
|
|
379
393
|
v-else-if="endIcon"
|
|
380
|
-
class="size-4 shrink-0 text-
|
|
394
|
+
class="size-4 shrink-0 text-icon-disabled"
|
|
381
395
|
:class="iconOffsetClass"
|
|
382
396
|
/>
|
|
383
397
|
|
|
@@ -395,7 +409,7 @@ function rowDisplay(item: T): unknown {
|
|
|
395
409
|
<div
|
|
396
410
|
v-if="isDropdownOpen"
|
|
397
411
|
ref="floatingRef"
|
|
398
|
-
class="input-v2__dropdown z-
|
|
412
|
+
class="input-v2__dropdown z-10000 flex flex-col gap-2 rounded-xl border border-default bg-main p-1.5 shadow-[0_24px_50px_-24px] shadow-brand-500/50"
|
|
399
413
|
:style="{
|
|
400
414
|
position: strategy,
|
|
401
415
|
left: x != null ? `${x}px` : '',
|
|
@@ -406,7 +420,7 @@ function rowDisplay(item: T): unknown {
|
|
|
406
420
|
<li
|
|
407
421
|
v-for="(item, idx) in autocompleteList"
|
|
408
422
|
:key="idx"
|
|
409
|
-
class="cursor-pointer rounded-
|
|
423
|
+
class="cursor-pointer rounded-lg px-3.5 py-2.5 text-body-md transition-colors duration-100 hover:bg-brand-subtle"
|
|
410
424
|
:class="{ 'input-v2__option--active': currentItemIndex === idx }"
|
|
411
425
|
@mousedown.prevent="onSelectOption(item)"
|
|
412
426
|
@touchend.prevent="onTouchEndOption(item)"
|
|
@@ -430,7 +444,7 @@ function rowDisplay(item: T): unknown {
|
|
|
430
444
|
leave-from-class="input-v2__error-leave-from"
|
|
431
445
|
leave-to-class="input-v2__error-leave-to"
|
|
432
446
|
>
|
|
433
|
-
<p v-if="hasError" class="mt-1 flex flex-col text-body-sm text-
|
|
447
|
+
<p v-if="hasError" class="mt-1 flex flex-col text-body-sm text-danger">
|
|
434
448
|
<span v-for="(err, idx) in errorMessages" :key="idx">{{ err }}</span>
|
|
435
449
|
</p>
|
|
436
450
|
</transition>
|
|
@@ -439,7 +453,7 @@ function rowDisplay(item: T): unknown {
|
|
|
439
453
|
|
|
440
454
|
<style scoped>
|
|
441
455
|
.input-v2__field--error {
|
|
442
|
-
border-color:
|
|
456
|
+
border-color: var(--border-color-danger);
|
|
443
457
|
}
|
|
444
458
|
|
|
445
459
|
.input-v2__field--disabled {
|
|
@@ -471,6 +485,10 @@ function rowDisplay(item: T): unknown {
|
|
|
471
485
|
transform: translateY(-14px);
|
|
472
486
|
}
|
|
473
487
|
|
|
488
|
+
.input-v2__label--floated[data-size="lg"] {
|
|
489
|
+
transform: translateY(-19px);
|
|
490
|
+
}
|
|
491
|
+
|
|
474
492
|
.input-v2__dropdown-enter-active,
|
|
475
493
|
.input-v2__dropdown-leave-active {
|
|
476
494
|
transition:
|
|
@@ -505,11 +523,7 @@ function rowDisplay(item: T): unknown {
|
|
|
505
523
|
}
|
|
506
524
|
|
|
507
525
|
.input-v2__option--active {
|
|
508
|
-
background-color:
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
:is(.dark) .input-v2__option--active {
|
|
512
|
-
background-color: rgb(30 64 175 / 0.18);
|
|
526
|
+
background-color: var(--background-color-brand-subtle);
|
|
513
527
|
}
|
|
514
528
|
|
|
515
529
|
.input-v2__error-enter-active {
|
|
@@ -34,7 +34,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
34
34
|
v-bind.prop="props"
|
|
35
35
|
>
|
|
36
36
|
<template #endButton>
|
|
37
|
-
<div class="pointer-events-click absolute right-1 top-1/2 translate-y-[-50%] transform fill-
|
|
37
|
+
<div class="pointer-events-click absolute right-1 top-1/2 translate-y-[-50%] transform fill-icon-secondary text-secondary hover:opacity-80 disabled:pointer-events-none">
|
|
38
38
|
<a-button
|
|
39
39
|
:class="size === 'sm' ? 'h-6 pt-px' : 'h-8'"
|
|
40
40
|
:loading="loading"
|