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
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
// Заголовок блока лендинга: Display/Small → Display/Large + подзаголовок.
|
|
3
|
+
// Бейджи-eyebrow в блоках не используются — они живут только в hero и форме обратной связи.
|
|
4
|
+
withDefaults(defineProps<{
|
|
5
|
+
title?: string
|
|
6
|
+
subtitle?: string
|
|
7
|
+
center?: boolean
|
|
8
|
+
}>(), {
|
|
9
|
+
title: '',
|
|
10
|
+
subtitle: '',
|
|
11
|
+
center: false,
|
|
12
|
+
})
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<template>
|
|
16
|
+
<div
|
|
17
|
+
class="flex flex-col gap-2.5"
|
|
18
|
+
:class="center ? 'items-center text-center' : 'text-left'"
|
|
19
|
+
>
|
|
20
|
+
<h2 class="text-display-sm text-primary md:text-display-lg">
|
|
21
|
+
<slot name="title">
|
|
22
|
+
{{ title }}
|
|
23
|
+
</slot>
|
|
24
|
+
</h2>
|
|
25
|
+
<p
|
|
26
|
+
v-if="subtitle || $slots.subtitle"
|
|
27
|
+
class="text-body-lg text-quaternary"
|
|
28
|
+
:class="{ 'max-w-2xl': center }"
|
|
29
|
+
>
|
|
30
|
+
<slot name="subtitle">
|
|
31
|
+
{{ subtitle }}
|
|
32
|
+
</slot>
|
|
33
|
+
</p>
|
|
34
|
+
</div>
|
|
35
|
+
</template>
|
|
@@ -37,40 +37,43 @@ const modelValue = defineModel<T | undefined | null>()
|
|
|
37
37
|
|
|
38
38
|
const CHIP_CLASS: Record<Color, Record<View | 'selected', string>> = {
|
|
39
39
|
gray: {
|
|
40
|
-
outline: 'border-
|
|
41
|
-
solid: 'border-transparent bg-
|
|
42
|
-
selected
|
|
40
|
+
outline: 'border-strong bg-action-secondary text-quaternary hover:bg-action-secondary-hover',
|
|
41
|
+
solid: 'border-transparent bg-muted text-quaternary hover:bg-gray-300 dark:hover:bg-gray-600',
|
|
42
|
+
/* осознанно константный серый selected (bg-gray-600 text-white): токена нет */
|
|
43
|
+
selected: 'border-transparent bg-gray-600 text-white',
|
|
43
44
|
},
|
|
45
|
+
/* пастельные border/hover: токенов нет — примитивы осознанно, dark:-компенсации */
|
|
44
46
|
blue: {
|
|
45
|
-
outline: 'border-
|
|
46
|
-
solid: 'border-transparent bg-
|
|
47
|
-
selected: 'border-transparent bg-
|
|
47
|
+
outline: 'border-brand-200 dark:border-brand-500/40 bg-action-secondary text-brand hover:bg-brand-subtle',
|
|
48
|
+
solid: 'border-transparent bg-brand-subtle text-brand hover:bg-brand-200 dark:hover:bg-blue-subtle',
|
|
49
|
+
selected: 'border-transparent bg-brand text-white',
|
|
48
50
|
},
|
|
49
51
|
green: {
|
|
50
|
-
outline: 'border-
|
|
51
|
-
solid: 'border-transparent bg-
|
|
52
|
-
selected: 'border-transparent bg-
|
|
52
|
+
outline: 'border-green-300 dark:border-green-600/40 bg-action-secondary text-success hover:bg-success-subtle',
|
|
53
|
+
solid: 'border-transparent bg-success-subtle text-success hover:bg-green-300 dark:hover:bg-green-subtle',
|
|
54
|
+
selected: 'border-transparent bg-success text-white',
|
|
53
55
|
},
|
|
54
56
|
yellow: {
|
|
55
|
-
outline: 'border-
|
|
56
|
-
solid: 'border-transparent bg-
|
|
57
|
-
selected: 'border-transparent bg-
|
|
57
|
+
outline: 'border-yellow-300 dark:border-amber-600/40 bg-action-secondary text-warning hover:bg-warning-subtle',
|
|
58
|
+
solid: 'border-transparent bg-warning-subtle text-warning hover:bg-yellow-300 dark:hover:bg-warning-subtle',
|
|
59
|
+
selected: 'border-transparent bg-warning text-white',
|
|
58
60
|
},
|
|
59
61
|
red: {
|
|
60
|
-
outline: 'border-
|
|
61
|
-
solid: 'border-transparent bg-
|
|
62
|
-
selected: 'border-transparent bg-
|
|
62
|
+
outline: 'border-red bg-action-secondary text-danger hover:bg-danger-subtle',
|
|
63
|
+
solid: 'border-transparent bg-danger-subtle text-danger hover:bg-red-300 dark:hover:bg-red-subtle',
|
|
64
|
+
selected: 'border-transparent bg-action-danger text-white',
|
|
63
65
|
},
|
|
64
66
|
}
|
|
65
67
|
|
|
66
68
|
const DOT_CLASS: Record<Color, Record<View, string>> = {
|
|
67
|
-
gray: { outline: 'bg-
|
|
68
|
-
blue: { outline: 'bg-
|
|
69
|
-
green: { outline: 'bg-
|
|
70
|
-
yellow: { outline: 'bg-
|
|
71
|
-
red: { outline: 'bg-
|
|
69
|
+
gray: { outline: 'bg-icon-default', solid: 'bg-icon-default' },
|
|
70
|
+
blue: { outline: 'bg-brand', solid: 'bg-brand' },
|
|
71
|
+
green: { outline: 'bg-success', solid: 'bg-success' },
|
|
72
|
+
yellow: { outline: 'bg-warning', solid: 'bg-warning' },
|
|
73
|
+
red: { outline: 'bg-action-danger', solid: 'bg-action-danger' },
|
|
72
74
|
}
|
|
73
75
|
|
|
76
|
+
/* белая точка на цветной выбранной пилюле — осознанно константный white */
|
|
74
77
|
const DOT_SELECTED_CLASS = 'bg-white'
|
|
75
78
|
|
|
76
79
|
function dotColorName(option: Option): Color {
|
|
@@ -118,7 +121,7 @@ function select(option: Option) {
|
|
|
118
121
|
:key="String(option.value)"
|
|
119
122
|
type="button"
|
|
120
123
|
:disabled="option.disabled"
|
|
121
|
-
class="inline-flex items-center gap-1.5 rounded-full border transition-colors duration-150 focus-visible:outline-
|
|
124
|
+
class="inline-flex items-center gap-1.5 rounded-full border transition-colors duration-150 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-brand-500 disabled:cursor-not-allowed disabled:opacity-50"
|
|
122
125
|
:class="[
|
|
123
126
|
size === 'sm' ? 'px-3 py-1 text-body-sm' : 'px-3.5 py-1.5 text-body-md',
|
|
124
127
|
chipClass(option),
|
|
@@ -61,7 +61,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
61
61
|
minimalWords: false,
|
|
62
62
|
canChipRemove: true,
|
|
63
63
|
showFirstItem: false,
|
|
64
|
-
buttonBg: 'border-
|
|
64
|
+
buttonBg: 'border-default bg-muted',
|
|
65
65
|
maxHeight: 320,
|
|
66
66
|
})
|
|
67
67
|
|
|
@@ -106,7 +106,7 @@ const valueToShow = ref<T | T[] | null>()
|
|
|
106
106
|
const countedVisibleItems = ref(0)
|
|
107
107
|
|
|
108
108
|
const disabledStyles =
|
|
109
|
-
'disabled:pointer-events-none disabled:opacity-40 disabled:bg-
|
|
109
|
+
'disabled:pointer-events-none disabled:opacity-40 disabled:bg-action-disabled disabled:text-action-disabled-fg'
|
|
110
110
|
|
|
111
111
|
const componentOptions = computed(() =>
|
|
112
112
|
props.options.filter((item: T) => {
|
|
@@ -279,84 +279,85 @@ watch(() => isOpen.value, (open) => {
|
|
|
279
279
|
onUnmounted(() => cleanup?.())
|
|
280
280
|
</script>
|
|
281
281
|
<template>
|
|
282
|
-
<div ref="wrapper" class="relative w-full rounded-sm text-
|
|
282
|
+
<div ref="wrapper" class="relative w-full rounded-sm text-body-md">
|
|
283
|
+
<!-- осознанно константная тень фокуса #1B64B3: документированное исключение -->
|
|
283
284
|
<button
|
|
284
285
|
ref="reference"
|
|
285
286
|
:class="[
|
|
286
287
|
clearable ? 'pr-16' : 'pr-9',
|
|
287
288
|
{
|
|
288
289
|
'pb-0.5 pt-2.5': valueToShow && !multiple && label,
|
|
289
|
-
'border-
|
|
290
|
+
'border-danger': error,
|
|
290
291
|
'!h-10': size === 'md'
|
|
291
292
|
},
|
|
292
293
|
disabledStyles,
|
|
293
294
|
buttonBg,
|
|
294
295
|
]"
|
|
295
296
|
:disabled="disabled"
|
|
296
|
-
class="
|
|
297
|
+
class="relative flex h-8 w-full items-center gap-2 rounded-sm border border-solid py-1.5 pl-4 hover:border-brand focus-visible:outline-(--border-color-focus) focus-visible:shadow-[0_0_0_4px#1B64B3]"
|
|
297
298
|
@click="toggleOpen()"
|
|
298
299
|
>
|
|
299
300
|
<span
|
|
300
301
|
v-if="valueToShow && !multiple && label"
|
|
301
|
-
class="ease pointer-events-none absolute left-4 top-[6px] text-[10px] leading-none text-
|
|
302
|
+
class="ease pointer-events-none absolute left-4 top-[6px] text-[10px] leading-none text-secondary transition-all duration-300"
|
|
302
303
|
>
|
|
303
304
|
{{ label }}
|
|
304
|
-
<span v-if="required" class="text-
|
|
305
|
+
<span v-if="required" class="text-danger">*</span>
|
|
305
306
|
</span>
|
|
306
307
|
<component :is="startIcon" v-if="startIcon" />
|
|
307
308
|
|
|
308
309
|
<span :class="{ 'py-1': size === 'md' }" class=" w-full text-start">
|
|
309
310
|
<span v-if="valueToShow">
|
|
310
|
-
<span v-if="!multiple" class="line-clamp-1 text-
|
|
311
|
+
<span v-if="!multiple" class="line-clamp-1 text-primary">
|
|
311
312
|
<slot name="single-selected" :value="valueToShow">{{ valueToShow[keyToShow] }}</slot>
|
|
312
313
|
</span>
|
|
313
314
|
<span
|
|
314
315
|
v-else-if="valueToShow"
|
|
315
316
|
:class="{ 'py-0': size === 'md' }"
|
|
316
|
-
class="flex gap-2 py-0.5 text-
|
|
317
|
+
class="flex gap-2 py-0.5 text-primary"
|
|
317
318
|
>
|
|
318
319
|
<a-chips
|
|
319
320
|
v-for="(item, index) in valueToShow.slice(0, countOfVisibleItems)"
|
|
320
321
|
:key="index"
|
|
321
322
|
:style="{ 'max-width': maxWidthOfChip }"
|
|
322
|
-
class="border-
|
|
323
|
+
class="border-strong text-primary"
|
|
323
324
|
view="standard"
|
|
324
325
|
@click.stop="canChipRemove ? onClearFromMulti(index) : (isOpen = true)"
|
|
325
326
|
>
|
|
326
327
|
<span class="truncate">{{ item[keyToShow] }}</span>
|
|
327
|
-
<button v-if="canChipRemove" class="rounded-full bg-
|
|
328
|
-
<a-icon-x-mark class="size-3
|
|
328
|
+
<button v-if="canChipRemove" class="rounded-full bg-badge">
|
|
329
|
+
<a-icon-x-mark class="size-3" />
|
|
329
330
|
</button>
|
|
330
331
|
</a-chips>
|
|
331
332
|
<a-chips
|
|
332
333
|
v-if="(valueToShow?.length || 0) > countOfVisibleItems"
|
|
333
|
-
class="
|
|
334
|
+
class="whitespace-nowrap border-brand text-brand"
|
|
334
335
|
>
|
|
335
336
|
+ {{ countOfInvisibleItems }}
|
|
336
337
|
</a-chips>
|
|
337
338
|
</span>
|
|
338
339
|
</span>
|
|
339
|
-
<span v-else class="body-
|
|
340
|
+
<span v-else class="text-body-md text-secondary">{{ label }}</span>
|
|
340
341
|
</span>
|
|
341
342
|
<button
|
|
342
343
|
v-if="((multiple && valueToShow?.length) || (!multiple && valueToShow)) && clearable"
|
|
343
|
-
class="absolute right-10 top-1/2 -translate-y-1/2 rounded-full bg-
|
|
344
|
+
class="absolute right-10 top-1/2 -translate-y-1/2 rounded-full bg-badge"
|
|
344
345
|
@click.stop="onClear"
|
|
345
346
|
>
|
|
346
|
-
<a-icon-x-mark class="!m-0 text-base
|
|
347
|
+
<a-icon-x-mark class="!m-0 text-base" />
|
|
347
348
|
</button>
|
|
348
349
|
<span
|
|
349
350
|
:class="{ 'rotate-180': isOpen }"
|
|
350
351
|
class="absolute right-4 top-1/2 -translate-y-1/2 text-base transition-transform"
|
|
351
352
|
>
|
|
352
|
-
<a-icon-chevron-down class="!m-0
|
|
353
|
+
<a-icon-chevron-down class="!m-0 text-secondary" />
|
|
353
354
|
</span>
|
|
354
355
|
</button>
|
|
355
356
|
<transition>
|
|
356
357
|
<div
|
|
357
358
|
v-if="isOpen"
|
|
358
359
|
ref="floating"
|
|
359
|
-
class="z-[10000] rounded-sm bg-
|
|
360
|
+
class="z-[10000] rounded-sm bg-main shadow-[0_1px_8px_0] shadow-surface-dark/10 dark:shadow-surface-dark/30"
|
|
360
361
|
:style="{
|
|
361
362
|
position: strategy,
|
|
362
363
|
left: x != null ? `${x}px` : '',
|
|
@@ -380,30 +381,30 @@ onUnmounted(() => cleanup?.())
|
|
|
380
381
|
<li v-for="(option, index) in componentOptions" :key="index">
|
|
381
382
|
<button
|
|
382
383
|
v-if="!multiple"
|
|
383
|
-
:class="{ '
|
|
384
|
+
:class="{ '': isEqual(valueToShow, option) }"
|
|
384
385
|
:disabled="isEqual(valueToShow, option)"
|
|
385
|
-
class="flex w-full items-center justify-between px-4 py-1.5 text-start hover:bg-
|
|
386
|
+
class="flex w-full items-center justify-between px-4 py-1.5 text-start hover:bg-action-secondary-hover"
|
|
386
387
|
@click="onSelect(option)"
|
|
387
388
|
>
|
|
388
389
|
<span>
|
|
389
390
|
<slot name="option" :option="option">{{ option[keyToShow] }}</slot>
|
|
390
391
|
</span>
|
|
391
392
|
<span v-if="isEqual(valueToShow, option)">
|
|
392
|
-
<a-icon-check
|
|
393
|
+
<a-icon-check class="text-brand" />
|
|
393
394
|
</span>
|
|
394
395
|
</button>
|
|
395
396
|
<button
|
|
396
397
|
v-else
|
|
397
398
|
:class="{
|
|
398
|
-
'
|
|
399
|
+
'':
|
|
399
400
|
valueToShow && valueToShow.some((item) => isEqual(option, item))
|
|
400
401
|
}"
|
|
401
|
-
class="flex w-full items-center justify-between px-4 py-1.5 text-start hover:bg-
|
|
402
|
+
class="flex w-full items-center justify-between px-4 py-1.5 text-start hover:bg-action-secondary-hover"
|
|
402
403
|
@click="onSelect(option)"
|
|
403
404
|
>
|
|
404
405
|
<span>{{ option[keyToShow] }}</span>
|
|
405
406
|
<span v-if="valueToShow && valueToShow.some((item) => isEqual(option, item))">
|
|
406
|
-
<a-icon-check
|
|
407
|
+
<a-icon-check class="text-brand" />
|
|
407
408
|
</span>
|
|
408
409
|
</button>
|
|
409
410
|
</li>
|
|
@@ -411,7 +412,7 @@ onUnmounted(() => cleanup?.())
|
|
|
411
412
|
</slot>
|
|
412
413
|
<div
|
|
413
414
|
v-if="props.hasButtons"
|
|
414
|
-
class="-mb-2 flex w-full flex-col gap-2 rounded-sm p-4 shadow-[0_-2px_8px_0
|
|
415
|
+
class="-mb-2 flex w-full flex-col gap-2 rounded-sm p-4 shadow-[0_-2px_8px_0] shadow-surface-dark/10 dark:shadow-surface-dark/30 xl:flex-row"
|
|
415
416
|
>
|
|
416
417
|
<slot name="buttons">
|
|
417
418
|
<a-button view="outline" variant="gray" block @click="onClear"> Сбросить </a-button>
|
|
@@ -432,12 +433,12 @@ onUnmounted(() => cleanup?.())
|
|
|
432
433
|
|
|
433
434
|
/* Track */
|
|
434
435
|
&::-webkit-scrollbar-track {
|
|
435
|
-
background:
|
|
436
|
+
background: var(--background-color-muted);
|
|
436
437
|
}
|
|
437
438
|
|
|
438
439
|
/* Handle */
|
|
439
440
|
&::-webkit-scrollbar-thumb {
|
|
440
|
-
background:
|
|
441
|
+
background: color-mix(in srgb, var(--text-color-primary) 45%, transparent);
|
|
441
442
|
}
|
|
442
443
|
button {
|
|
443
444
|
user-select: text !important;
|
|
@@ -44,7 +44,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
44
44
|
searchKey: 'name',
|
|
45
45
|
multiple: false,
|
|
46
46
|
showCount: true,
|
|
47
|
-
buttonClass: 'border-
|
|
47
|
+
buttonClass: 'border-default bg-muted'
|
|
48
48
|
})
|
|
49
49
|
|
|
50
50
|
const emits = defineEmits<Emits>()
|
|
@@ -113,10 +113,10 @@ defineExpose({
|
|
|
113
113
|
<template #header>
|
|
114
114
|
<div class="pt-4 px-2 flex flex-col justify-between gap-3">
|
|
115
115
|
<div class="flex items-center" :class="{'justify-center':!showCount, 'justify-between': showCount}">
|
|
116
|
-
<h4 class="
|
|
116
|
+
<h4 class="text-h5">
|
|
117
117
|
{{title}}
|
|
118
118
|
</h4>
|
|
119
|
-
<p v-if="showCount" class="text-
|
|
119
|
+
<p v-if="showCount" class="text-body-sm text-brand">
|
|
120
120
|
Выбрано: {{ selectedData?.length }}
|
|
121
121
|
</p>
|
|
122
122
|
</div>
|
|
@@ -130,7 +130,7 @@ defineExpose({
|
|
|
130
130
|
</template>
|
|
131
131
|
<div class="flex flex-col justify-between ">
|
|
132
132
|
<div
|
|
133
|
-
class="mt-1 w-full h-full bg-
|
|
133
|
+
class="mt-1 w-full h-full bg-main p-2 border rounded-sm overflow-y-auto"
|
|
134
134
|
>
|
|
135
135
|
<slot
|
|
136
136
|
name="options"
|
|
@@ -171,7 +171,7 @@ defineExpose({
|
|
|
171
171
|
</a-slideover>
|
|
172
172
|
<div
|
|
173
173
|
ref="wrapper"
|
|
174
|
-
class="relative w-full rounded-sm text-
|
|
174
|
+
class="relative w-full rounded-sm text-body-md"
|
|
175
175
|
>
|
|
176
176
|
<a-select-row
|
|
177
177
|
v-model:selected-items="selectedData"
|
|
@@ -304,19 +304,19 @@ const isDefaultSelection = computed(() => {
|
|
|
304
304
|
clearable ? 'pr-16' : 'pr-9',
|
|
305
305
|
{ 'select-v2__trigger--error': error },
|
|
306
306
|
disabled
|
|
307
|
-
? 'border-
|
|
308
|
-
: (buttonBg || 'border-
|
|
307
|
+
? 'border-default bg-badge/70'
|
|
308
|
+
: (buttonBg || 'border-default bg-main'),
|
|
309
309
|
]"
|
|
310
|
-
class="select-v2__trigger text-
|
|
310
|
+
class="select-v2__trigger text-primary relative flex w-full items-center gap-2 rounded-[10px] border border-solid pl-4 transition-colors duration-200 hover:border-brand focus-visible:border-focus focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-brand-500/20"
|
|
311
311
|
@click="toggleOpen()"
|
|
312
312
|
>
|
|
313
313
|
<span
|
|
314
314
|
v-if="showFloatingLabel"
|
|
315
315
|
:data-size="size"
|
|
316
|
-
class="select-v2__label pointer-events-none absolute left-4 top-1.5 text-[10px] leading-none text-
|
|
316
|
+
class="select-v2__label pointer-events-none absolute left-4 top-1.5 text-[10px] leading-none text-secondary"
|
|
317
317
|
:class="valueToShow ? 'select-v2__label--floated' : 'select-v2__label--placeholder'"
|
|
318
318
|
>
|
|
319
|
-
{{ label }}<span v-if="required" class="text-
|
|
319
|
+
{{ label }}<span v-if="required" class="text-danger"> *</span>
|
|
320
320
|
</span>
|
|
321
321
|
|
|
322
322
|
<component
|
|
@@ -330,7 +330,7 @@ const isDefaultSelection = computed(() => {
|
|
|
330
330
|
<span v-if="valueToShow" class="block truncate leading-tight">
|
|
331
331
|
<slot name="single-selected" :value="valueToShow">{{ (valueToShow as any)[keyToShow] }}</slot>
|
|
332
332
|
</span>
|
|
333
|
-
<span v-else class="text-
|
|
333
|
+
<span v-else class="text-secondary">​</span>
|
|
334
334
|
</template>
|
|
335
335
|
|
|
336
336
|
<template v-else>
|
|
@@ -339,20 +339,20 @@ const isDefaultSelection = computed(() => {
|
|
|
339
339
|
<span
|
|
340
340
|
v-for="(item, index) in (valueToShow as any[]).slice(0, visibleChipCount)"
|
|
341
341
|
:key="index"
|
|
342
|
-
class="select-v2__chip inline-flex min-w-0 items-center gap-1 rounded-sm bg-
|
|
342
|
+
class="select-v2__chip inline-flex min-w-0 items-center gap-1 rounded-sm bg-brand-subtle px-2 py-0.5 text-body-sm text-brand"
|
|
343
343
|
@click.stop="canChipRemove ? onClearFromMulti(item) : (isOpen = true)"
|
|
344
344
|
>
|
|
345
345
|
<span class="truncate">{{ item[keyToShow] }}</span>
|
|
346
346
|
<button
|
|
347
347
|
v-if="canChipRemove"
|
|
348
|
-
class="flex shrink-0 items-center justify-center rounded-full p-0.5 transition-colors hover:bg-blue-
|
|
348
|
+
class="flex shrink-0 items-center justify-center rounded-full p-0.5 transition-colors hover:bg-blue-subtle"
|
|
349
349
|
>
|
|
350
350
|
<a-icon-x-mark class="size-2.5" />
|
|
351
351
|
</button>
|
|
352
352
|
</span>
|
|
353
353
|
<span
|
|
354
354
|
v-if="hiddenChipCount > 0"
|
|
355
|
-
class="inline-flex shrink-0 items-center whitespace-nowrap rounded-sm bg-
|
|
355
|
+
class="inline-flex shrink-0 items-center whitespace-nowrap rounded-sm bg-blue-subtle px-2 py-0.5 text-body-sm-medium text-brand"
|
|
356
356
|
>
|
|
357
357
|
+{{ hiddenChipCount }}
|
|
358
358
|
</span>
|
|
@@ -366,7 +366,7 @@ const isDefaultSelection = computed(() => {
|
|
|
366
366
|
<span
|
|
367
367
|
v-for="(item, index) in (valueToShow as any[])"
|
|
368
368
|
:key="`measure-${index}`"
|
|
369
|
-
class="inline-flex items-center gap-1 whitespace-nowrap rounded-sm bg-
|
|
369
|
+
class="inline-flex items-center gap-1 whitespace-nowrap rounded-sm bg-muted px-2 py-0.5 text-body-sm"
|
|
370
370
|
>
|
|
371
371
|
<span>{{ item[keyToShow] }}</span>
|
|
372
372
|
<span
|
|
@@ -381,13 +381,13 @@ const isDefaultSelection = computed(() => {
|
|
|
381
381
|
</span>
|
|
382
382
|
</span>
|
|
383
383
|
</template>
|
|
384
|
-
<span v-else class="text-
|
|
384
|
+
<span v-else class="text-secondary">{{ label }}</span>
|
|
385
385
|
</template>
|
|
386
386
|
</span>
|
|
387
387
|
|
|
388
388
|
<button
|
|
389
389
|
v-if="valueToShow && clearable && !isDefaultSelection"
|
|
390
|
-
class="absolute right-9 top-1/2 flex -translate-y-1/2 items-center justify-center rounded-full p-0.5transition-colors hover:bg-
|
|
390
|
+
class="absolute right-9 top-1/2 flex -translate-y-1/2 items-center justify-center rounded-full p-0.5transition-colors hover:bg-badge"
|
|
391
391
|
@click.stop="onClear"
|
|
392
392
|
>
|
|
393
393
|
<a-icon-x-mark class="!m-0 size-3.5" />
|
|
@@ -397,7 +397,7 @@ const isDefaultSelection = computed(() => {
|
|
|
397
397
|
:class="{ 'rotate-180': isOpen }"
|
|
398
398
|
class="absolute right-3 top-1/2 -translate-y-1/2 transition-transform duration-200"
|
|
399
399
|
>
|
|
400
|
-
<a-icon-chevron-down class="!m-0 size-4 text-
|
|
400
|
+
<a-icon-chevron-down class="!m-0 size-4 text-icon-disabled" />
|
|
401
401
|
</span>
|
|
402
402
|
</button>
|
|
403
403
|
|
|
@@ -412,7 +412,7 @@ const isDefaultSelection = computed(() => {
|
|
|
412
412
|
<div
|
|
413
413
|
v-if="isOpen"
|
|
414
414
|
ref="floating"
|
|
415
|
-
class="select-v2__dropdown z-[10000] rounded-lg border border-
|
|
415
|
+
class="select-v2__dropdown z-[10000] rounded-lg border border-default bg-main shadow-lg shadow-surface-dark/10 dark:shadow-surface-dark/30"
|
|
416
416
|
:style="{
|
|
417
417
|
position: strategy,
|
|
418
418
|
left: x != null ? `${x}px` : '',
|
|
@@ -445,7 +445,7 @@ const isDefaultSelection = computed(() => {
|
|
|
445
445
|
<button
|
|
446
446
|
:disabled="!multiple && isItemSelected(option)"
|
|
447
447
|
:class="{ 'select-v2__option--selected': isItemSelected(option) }"
|
|
448
|
-
class="select-v2__option flex w-full items-center justify-between rounded-md px-3 py-2 text-start text-body-md transition-colors duration-100 hover:bg-
|
|
448
|
+
class="select-v2__option flex w-full items-center justify-between rounded-md px-3 py-2 text-start text-body-md transition-colors duration-100 hover:bg-action-secondary-hover"
|
|
449
449
|
@click="onSelect(option)"
|
|
450
450
|
>
|
|
451
451
|
<span>
|
|
@@ -453,7 +453,7 @@ const isDefaultSelection = computed(() => {
|
|
|
453
453
|
</span>
|
|
454
454
|
<a-icon-check
|
|
455
455
|
v-if="isItemSelected(option)"
|
|
456
|
-
class="size-4 shrink-0 text-
|
|
456
|
+
class="size-4 shrink-0 text-brand"
|
|
457
457
|
/>
|
|
458
458
|
</button>
|
|
459
459
|
</li>
|
|
@@ -462,7 +462,7 @@ const isDefaultSelection = computed(() => {
|
|
|
462
462
|
|
|
463
463
|
<div
|
|
464
464
|
v-if="props.hasButtons"
|
|
465
|
-
class="flex w-full flex-col gap-2 border-t border-
|
|
465
|
+
class="flex w-full flex-col gap-2 border-t border-default p-3 xl:flex-row"
|
|
466
466
|
>
|
|
467
467
|
<slot name="buttons">
|
|
468
468
|
<a-button
|
|
@@ -491,7 +491,7 @@ const isDefaultSelection = computed(() => {
|
|
|
491
491
|
}
|
|
492
492
|
|
|
493
493
|
.select-v2__trigger--error {
|
|
494
|
-
border-color:
|
|
494
|
+
border-color: var(--border-color-danger);
|
|
495
495
|
}
|
|
496
496
|
|
|
497
497
|
.select-v2__dropdown-enter-active,
|
|
@@ -528,25 +528,17 @@ const isDefaultSelection = computed(() => {
|
|
|
528
528
|
}
|
|
529
529
|
|
|
530
530
|
.select-v2__option--selected {
|
|
531
|
-
background-color:
|
|
531
|
+
background-color: var(--background-color-brand-subtle);
|
|
532
532
|
font-weight: 500;
|
|
533
533
|
}
|
|
534
534
|
|
|
535
|
-
:is(.dark) .select-v2__option--selected {
|
|
536
|
-
background-color: rgb(30 64 175 / 0.12);
|
|
537
|
-
}
|
|
538
|
-
|
|
539
535
|
.select-v2__chip {
|
|
540
536
|
cursor: pointer;
|
|
541
537
|
transition: background-color 150ms;
|
|
542
538
|
}
|
|
543
539
|
|
|
544
540
|
.select-v2__chip:hover {
|
|
545
|
-
background-color:
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
:is(.dark) .select-v2__chip:hover {
|
|
549
|
-
background-color: rgb(6 141 255 / 0.25);
|
|
541
|
+
background-color: var(--background-color-blue-subtle);
|
|
550
542
|
}
|
|
551
543
|
|
|
552
544
|
.select-v2__option {
|
|
@@ -27,7 +27,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
27
27
|
})
|
|
28
28
|
const emits = defineEmits<Emits>()
|
|
29
29
|
const disabledStyles =
|
|
30
|
-
'disabled:pointer-events-none disabled:bg-
|
|
30
|
+
'disabled:pointer-events-none disabled:bg-action-disabled disabled:text-action-disabled-fg'
|
|
31
31
|
const isOpen = defineModel<boolean>('isOpen')
|
|
32
32
|
|
|
33
33
|
|
|
@@ -60,9 +60,10 @@ const onClear = () => {
|
|
|
60
60
|
<template>
|
|
61
61
|
<div>
|
|
62
62
|
<!-- <pre>{{ items }} items</pre>-->
|
|
63
|
+
<!-- осознанно константная тень фокуса #1B64B3: документированное исключение -->
|
|
63
64
|
<button
|
|
64
65
|
ref="buttonElement"
|
|
65
|
-
class="
|
|
66
|
+
class="relative flex w-full items-center justify-between gap-2 rounded-sm border border-solid border-default bg-muted px-4 py-1.5 hover:border-brand focus-visible:outline-(--border-color-focus) focus-visible:shadow-[0_0_0_4px#1B64B3]"
|
|
66
67
|
:class="[disabledStyles]"
|
|
67
68
|
:disabled="disabled"
|
|
68
69
|
@click="isOpen = !isOpen"
|
|
@@ -79,8 +80,8 @@ const onClear = () => {
|
|
|
79
80
|
@click.stop="deleteItem( item)"
|
|
80
81
|
>
|
|
81
82
|
{{ item.name }}
|
|
82
|
-
<button class="rounded-full bg-
|
|
83
|
-
<a-icon-x-mark class="size-3
|
|
83
|
+
<button class="rounded-full bg-badge">
|
|
84
|
+
<a-icon-x-mark class="size-3" />
|
|
84
85
|
</button>
|
|
85
86
|
</a-chips>
|
|
86
87
|
<a-chips v-if="countOfUnvisibleItems">
|
|
@@ -93,15 +94,14 @@ const onClear = () => {
|
|
|
93
94
|
</div>
|
|
94
95
|
<button
|
|
95
96
|
v-if="visibleItems && countOfVisibleItems"
|
|
96
|
-
class="absolute right-10 top-1/2 -translate-y-1/2 rounded-full bg-
|
|
97
|
+
class="absolute right-10 top-1/2 -translate-y-1/2 rounded-full bg-badge"
|
|
97
98
|
@click.stop="onClear"
|
|
98
99
|
>
|
|
99
|
-
<a-icon-x-mark class="!m-0 text-base
|
|
100
|
+
<a-icon-x-mark class="!m-0 text-base" />
|
|
100
101
|
</button>
|
|
101
102
|
<a-icon-chevron-up
|
|
102
|
-
class="!m-0 transition-all "
|
|
103
|
+
class="!m-0 text-secondary transition-all "
|
|
103
104
|
:class="{'rotate-180': isOpen}"
|
|
104
|
-
style="color: #9da3ac"
|
|
105
105
|
/>
|
|
106
106
|
</button>
|
|
107
107
|
</div>
|
|
@@ -82,12 +82,12 @@ const formattedOptions = computed(() => {
|
|
|
82
82
|
:key="option.id"
|
|
83
83
|
>
|
|
84
84
|
<button
|
|
85
|
-
class="flex w-full items-center justify-between px-4 py-1.5 text-start hover:bg-
|
|
85
|
+
class="flex w-full items-center justify-between bg-action-secondary px-4 py-1.5 text-start hover:bg-action-secondary-hover"
|
|
86
86
|
@click="setData(option)"
|
|
87
87
|
>
|
|
88
88
|
{{ option.name }}
|
|
89
89
|
<span v-if="isSelected(option)">
|
|
90
|
-
<a-icon-check
|
|
90
|
+
<a-icon-check class="text-brand"/>
|
|
91
91
|
</span>
|
|
92
92
|
</button>
|
|
93
93
|
</template>
|
|
@@ -12,7 +12,7 @@ const { t } = useI18n()
|
|
|
12
12
|
|
|
13
13
|
<template>
|
|
14
14
|
<div class="flex items-center gap-4">
|
|
15
|
-
<hr class="h-[0.5px] w-full bg-
|
|
15
|
+
<hr class="h-[0.5px] w-full bg-(--border-color-default)">
|
|
16
16
|
<a-button
|
|
17
17
|
:loading="loading"
|
|
18
18
|
:disabled="loading"
|
|
@@ -26,7 +26,7 @@ const { t } = useI18n()
|
|
|
26
26
|
<a-icon-chevron-down />
|
|
27
27
|
</slot>
|
|
28
28
|
</a-button>
|
|
29
|
-
<hr class="h-[0.5px] w-full bg-
|
|
29
|
+
<hr class="h-[0.5px] w-full bg-(--border-color-default)">
|
|
30
30
|
</div>
|
|
31
31
|
</template>
|
|
32
32
|
|
|
@@ -8,11 +8,11 @@ const { t } = useI18n()
|
|
|
8
8
|
|
|
9
9
|
<template>
|
|
10
10
|
<div class="flex items-center gap-3">
|
|
11
|
-
<hr class="h-px flex-1 border-0 bg-
|
|
11
|
+
<hr class="h-px flex-1 border-0 bg-badge">
|
|
12
12
|
<button
|
|
13
13
|
type="button"
|
|
14
14
|
:disabled="loading"
|
|
15
|
-
class="inline-flex items-center gap-1.5 rounded-full border border-
|
|
15
|
+
class="inline-flex items-center gap-1.5 rounded-full border border-default bg-action-secondary px-4 py-1.5 text-body-md-medium text-quaternary transition-colors duration-150 hover:border-strong hover:bg-action-secondary-hover disabled:cursor-not-allowed disabled:opacity-60"
|
|
16
16
|
@click="emit('click')"
|
|
17
17
|
>
|
|
18
18
|
<a-icon-loader-circle v-if="loading" class="size-4 animate-spin" />
|
|
@@ -21,6 +21,6 @@ const { t } = useI18n()
|
|
|
21
21
|
<a-icon-chevron-down v-if="!loading" class="size-4" />
|
|
22
22
|
</slot>
|
|
23
23
|
</button>
|
|
24
|
-
<hr class="h-px flex-1 border-0 bg-
|
|
24
|
+
<hr class="h-px flex-1 border-0 bg-badge">
|
|
25
25
|
</div>
|
|
26
26
|
</template>
|