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
|
@@ -39,22 +39,22 @@ const usageLevel = computed<'normal' | 'warning' | 'critical'>(() => {
|
|
|
39
39
|
const barColorClass = computed(() => {
|
|
40
40
|
switch (usageLevel.value) {
|
|
41
41
|
case 'critical':
|
|
42
|
-
return 'bg-
|
|
42
|
+
return 'bg-danger'
|
|
43
43
|
case 'warning':
|
|
44
|
-
return 'bg-
|
|
44
|
+
return 'bg-warning'
|
|
45
45
|
default:
|
|
46
|
-
return 'bg-
|
|
46
|
+
return 'bg-brand'
|
|
47
47
|
}
|
|
48
48
|
})
|
|
49
49
|
|
|
50
50
|
const valueColorClass = computed(() => {
|
|
51
51
|
switch (usageLevel.value) {
|
|
52
52
|
case 'critical':
|
|
53
|
-
return 'text-
|
|
53
|
+
return 'text-icon-danger'
|
|
54
54
|
case 'warning':
|
|
55
|
-
return 'text-
|
|
55
|
+
return 'text-warning'
|
|
56
56
|
default:
|
|
57
|
-
return 'text-
|
|
57
|
+
return 'text-primary'
|
|
58
58
|
}
|
|
59
59
|
})
|
|
60
60
|
</script>
|
|
@@ -72,9 +72,9 @@ const valueColorClass = computed(() => {
|
|
|
72
72
|
:z-index="10001"
|
|
73
73
|
content-class="py-0.5"
|
|
74
74
|
>
|
|
75
|
-
<gauge class="size-4 shrink-0 text-
|
|
75
|
+
<gauge class="size-4 shrink-0 text-quaternary" />
|
|
76
76
|
|
|
77
|
-
<div class="h-1.5 w-20 rounded-full bg-
|
|
77
|
+
<div class="h-1.5 w-20 rounded-full bg-badge">
|
|
78
78
|
<div
|
|
79
79
|
class="usage-bar h-full rounded-full"
|
|
80
80
|
:class="barColorClass"
|
|
@@ -89,17 +89,17 @@ const valueColorClass = computed(() => {
|
|
|
89
89
|
<span
|
|
90
90
|
class="font-bold transition-colors duration-300"
|
|
91
91
|
:class="valueColorClass"
|
|
92
|
-
>{{ limitRemaining }}</span><span class="font-medium text-
|
|
92
|
+
>{{ limitRemaining }}</span><span class="font-medium text-quaternary">/{{ maxLimit }}</span>
|
|
93
93
|
</span>
|
|
94
94
|
|
|
95
95
|
<template #content>
|
|
96
|
-
<span class="whitespace-nowrap text-body-sm leading-none text-
|
|
96
|
+
<span class="whitespace-nowrap text-body-sm leading-none text-primary">
|
|
97
97
|
Лимит запросов: {{ limitRemaining }}
|
|
98
98
|
</span>
|
|
99
99
|
</template>
|
|
100
100
|
</a-tooltip-v2>
|
|
101
101
|
|
|
102
|
-
<span class="h-4 w-px shrink-0 bg-
|
|
102
|
+
<span class="h-4 w-px shrink-0 bg-(--border-color-default)" />
|
|
103
103
|
|
|
104
104
|
<a-tooltip-v2
|
|
105
105
|
class="shrink-0"
|
|
@@ -112,12 +112,12 @@ const valueColorClass = computed(() => {
|
|
|
112
112
|
class="flex shrink-0 items-center gap-1.5"
|
|
113
113
|
data-test-id="header-usage-days"
|
|
114
114
|
>
|
|
115
|
-
<calendar class="size-4 shrink-0 text-
|
|
116
|
-
<span class="text-body-md font-bold tabular-nums text-
|
|
115
|
+
<calendar class="size-4 shrink-0 text-quaternary" />
|
|
116
|
+
<span class="text-body-md font-bold tabular-nums text-primary">{{ daysRemaining }}</span>
|
|
117
117
|
</div>
|
|
118
118
|
|
|
119
119
|
<template #content>
|
|
120
|
-
<span class="whitespace-nowrap text-body-sm leading-none text-
|
|
120
|
+
<span class="whitespace-nowrap text-body-sm leading-none text-primary">
|
|
121
121
|
Остаток дней: {{ daysRemaining }}
|
|
122
122
|
</span>
|
|
123
123
|
</template>
|
|
@@ -4,15 +4,16 @@
|
|
|
4
4
|
@mouseenter="hover = true"
|
|
5
5
|
@mouseleave="hover = false"
|
|
6
6
|
:class="{'opacity-30' : !hover && someHovered}"
|
|
7
|
-
class="flex items-center gap-4 px-2.5 py-2 hover:bg-
|
|
7
|
+
class="flex items-center gap-4 px-2.5 py-2 hover:bg-action-secondary-hover rounded-md normal-case transition-all "
|
|
8
8
|
>
|
|
9
|
-
|
|
9
|
+
<!-- осознанно константный: белая иконка на брендовом градиенте bg-gradient-blue -->
|
|
10
|
+
<div class="min-w-8 h-8 rounded-md flex items-center justify-center text-white bg-gradient-blue">
|
|
10
11
|
<component
|
|
11
12
|
:is="item.icon"
|
|
12
13
|
class="h-5 w-5"
|
|
13
14
|
/>
|
|
14
15
|
</div>
|
|
15
|
-
<span class="text-
|
|
16
|
+
<span class="text-body-md text-primary">{{ item.title }}</span>
|
|
16
17
|
</nuxt-link-locale>
|
|
17
18
|
</template>
|
|
18
19
|
|
|
@@ -12,24 +12,25 @@ const hover = ref(false)
|
|
|
12
12
|
<template>
|
|
13
13
|
<nuxt-link-locale
|
|
14
14
|
:to="item.to"
|
|
15
|
-
class="flex h-full justify-between xl:gap-4 rounded-[0.5rem] bg-
|
|
15
|
+
class="flex h-full justify-between xl:gap-4 rounded-[0.5rem] bg-muted p-4 transition-all"
|
|
16
16
|
:class="{'opacity-30': !hover && someHovered}"
|
|
17
17
|
@mouseenter="hover = true"
|
|
18
18
|
@mouseleave="hover = false"
|
|
19
19
|
>
|
|
20
20
|
<div class="normal-case">
|
|
21
21
|
<h4
|
|
22
|
-
class="mb-2
|
|
23
|
-
:class="{'
|
|
22
|
+
class="mb-2 text-primary"
|
|
23
|
+
:class="{'text-h5' : size==='lg', 'text-body-md-strong' : size === 'sm'}"
|
|
24
24
|
>
|
|
25
25
|
{{ item.title }}
|
|
26
26
|
</h4>
|
|
27
|
-
<p class="text-
|
|
27
|
+
<p class="text-quaternary text-body-md">
|
|
28
28
|
{{ item.subtitle ? item.subtitle : '' }}
|
|
29
29
|
</p>
|
|
30
30
|
</div>
|
|
31
|
+
<!-- осознанно константный: белая иконка на брендовом градиенте bg-gradient-blue -->
|
|
31
32
|
<div
|
|
32
|
-
class="flex items-center justify-center self-end rounded-md bg-gradient-blue
|
|
33
|
+
class="flex items-center justify-center self-end rounded-md bg-gradient-blue text-white"
|
|
33
34
|
:class="{'h-8 min-w-8' : size==='sm', 'h-16 min-w-16' : size==='lg'}"
|
|
34
35
|
>
|
|
35
36
|
<component
|
|
@@ -31,10 +31,11 @@ function isActive(itemPath: string) {
|
|
|
31
31
|
<div class="mb-3 flex items-start justify-between gap-2">
|
|
32
32
|
<nuxt-link-locale
|
|
33
33
|
:to="link"
|
|
34
|
-
class="group/title flex min-w-0 items-center gap-2 text-
|
|
34
|
+
class="group/title flex min-w-0 items-center gap-2 text-body-lg-strong text-primary transition-colors hover:text-link-hover"
|
|
35
35
|
>
|
|
36
|
+
<!-- осознанно константный: белая иконка на брендовом ховер-фоне -->
|
|
36
37
|
<span
|
|
37
|
-
class="flex size-8 shrink-0 items-center justify-center rounded-md bg-
|
|
38
|
+
class="flex size-8 shrink-0 items-center justify-center rounded-md bg-brand-subtle text-brand transition-colors group-hover/title:bg-action-primary-hover group-hover/title:text-white">
|
|
38
39
|
<component
|
|
39
40
|
:is="icon"
|
|
40
41
|
class="size-4"
|
|
@@ -53,15 +54,15 @@ function isActive(itemPath: string) {
|
|
|
53
54
|
v-if="item.to"
|
|
54
55
|
:to="item.to"
|
|
55
56
|
itemprop="name"
|
|
56
|
-
class="group/item flex items-center gap-2 rounded-md px-2 py-1.5 transition-colors hover:bg-
|
|
57
|
-
:class="{ 'bg-blue-
|
|
57
|
+
class="group/item flex items-center gap-2 rounded-md px-2 py-1.5 transition-colors hover:bg-action-secondary-hover"
|
|
58
|
+
:class="{ 'bg-blue-subtle': isActive(item.to) }"
|
|
58
59
|
>
|
|
59
|
-
<a-icon-chevron-right class="size-[14px] shrink-0 text-
|
|
60
|
+
<a-icon-chevron-right class="size-[14px] shrink-0 text-icon-disabled group-hover/item:text-brand" />
|
|
60
61
|
<span
|
|
61
|
-
class="min-w-0 text-
|
|
62
|
+
class="min-w-0 text-body-md normal-case transition-colors group-hover/item:text-primary group-hover/item:font-semibold"
|
|
62
63
|
:class="isActive(item.to)
|
|
63
|
-
? 'text-
|
|
64
|
-
: 'text-
|
|
64
|
+
? 'text-brand'
|
|
65
|
+
: 'text-quaternary'"
|
|
65
66
|
>{{ item.title }}</span>
|
|
66
67
|
</nuxt-link-locale>
|
|
67
68
|
</li>
|
|
@@ -14,37 +14,37 @@ defineProps<{
|
|
|
14
14
|
}>()
|
|
15
15
|
</script>
|
|
16
16
|
<template>
|
|
17
|
-
<div class="flex w-[423px] flex-col gap-4 rounded-md bg-
|
|
17
|
+
<div class="flex w-[423px] flex-col gap-4 rounded-md bg-main p-4">
|
|
18
18
|
<div class="flex items-center justify-between">
|
|
19
|
-
<h4 class="
|
|
19
|
+
<h4 class="text-h5">Уведомления</h4>
|
|
20
20
|
<ADigitBadge :value="`${notifications?.length} новых`" size="lg" />
|
|
21
21
|
</div>
|
|
22
|
-
<hr class="border-
|
|
22
|
+
<hr class="border-default" />
|
|
23
23
|
|
|
24
24
|
<ul v-if="notifications?.length" class="flex flex-col gap-2">
|
|
25
25
|
<li
|
|
26
26
|
v-for="(notification, idx) in notifications"
|
|
27
27
|
:key="idx"
|
|
28
|
-
class="flex items-center justify-between gap-2.5 rounded-sm bg-
|
|
28
|
+
class="flex items-center justify-between gap-2.5 rounded-sm bg-muted px-4 py-2"
|
|
29
29
|
>
|
|
30
|
-
<div class="rounded-full bg-
|
|
30
|
+
<div class="rounded-full bg-brand p-2">
|
|
31
31
|
<icon-user />
|
|
32
32
|
</div>
|
|
33
33
|
<div class="flex flex-col items-start gap-1 break-all">
|
|
34
|
-
<p class="body-
|
|
34
|
+
<p class="text-body-md">
|
|
35
35
|
{{ notification.message + ' ' }}
|
|
36
|
-
<a class="
|
|
36
|
+
<a class="text-body-md text-link" href="#">{{ notification.email }}</a>
|
|
37
37
|
</p>
|
|
38
|
-
<p class="text-
|
|
38
|
+
<p class="text-body-sm">{{ notification.date }}</p>
|
|
39
39
|
</div>
|
|
40
40
|
</li>
|
|
41
41
|
</ul>
|
|
42
42
|
|
|
43
43
|
<div v-else class="flex flex-col items-center gap-4 py-8">
|
|
44
|
-
<p class="body-
|
|
44
|
+
<p class="text-body-md">Новых уведомлений нет</p>
|
|
45
45
|
</div>
|
|
46
46
|
|
|
47
|
-
<hr class="border-
|
|
47
|
+
<hr class="border-default" />
|
|
48
48
|
<AButton block>Посмотреть все уведомления</AButton>
|
|
49
49
|
</div>
|
|
50
50
|
</template>
|
|
@@ -35,7 +35,7 @@ function handleExportClick() {
|
|
|
35
35
|
|
|
36
36
|
<template>
|
|
37
37
|
<div class="capitalize">
|
|
38
|
-
<div class="relative bg-
|
|
38
|
+
<div class="relative bg-main">
|
|
39
39
|
<div class="a-container max-h-[calc(100dvh-4rem)] overflow-y-auto overscroll-contain py-8">
|
|
40
40
|
<div class="flex justify-between gap-5">
|
|
41
41
|
<div class="grid min-w-0 flex-1 grid-cols-5 gap-3">
|
|
@@ -43,7 +43,7 @@ function handleExportClick() {
|
|
|
43
43
|
v-for="(column, index) in catalogColumns"
|
|
44
44
|
:key="index"
|
|
45
45
|
class="flex flex-col gap-[22px]"
|
|
46
|
-
:class="index > 0 ? 'border-l border-
|
|
46
|
+
:class="index > 0 ? 'border-l border-default pl-3' : ''"
|
|
47
47
|
>
|
|
48
48
|
<nav-list
|
|
49
49
|
v-for="module in column"
|
|
@@ -62,29 +62,30 @@ function handleExportClick() {
|
|
|
62
62
|
v-if="module.key === 'edo'"
|
|
63
63
|
#bottom
|
|
64
64
|
>
|
|
65
|
-
|
|
65
|
+
<!-- осознанно константный: белый текст на брендовой solid-карточке bg-brand -->
|
|
66
|
+
<div class="mt-4 flex flex-col gap-4 rounded-lg bg-brand p-4 normal-case text-white">
|
|
66
67
|
<div class="flex items-center gap-3">
|
|
67
|
-
<span class="rounded-[10px] bg-
|
|
68
|
-
<a-icon-download-rounded class="size-5 text-
|
|
68
|
+
<span class="rounded-[10px] bg-main p-[10px]">
|
|
69
|
+
<a-icon-download-rounded class="size-5 text-brand" />
|
|
69
70
|
</span>
|
|
70
|
-
<span class="font-semibold text-white
|
|
71
|
+
<span class="font-semibold text-white">
|
|
71
72
|
{{ t('header.products.exportCard.title') }}
|
|
72
73
|
</span>
|
|
73
74
|
</div>
|
|
74
75
|
|
|
75
|
-
<div class="text-
|
|
76
|
+
<div class="text-body-sm text-white">
|
|
76
77
|
{{ t('header.products.exportCard.subTitle') }}
|
|
77
78
|
</div>
|
|
78
79
|
|
|
79
80
|
<a-button-v2
|
|
80
81
|
view="soft"
|
|
81
|
-
class="!h-9 w-fit !bg-
|
|
82
|
+
class="!h-9 w-fit !bg-main text-brand"
|
|
82
83
|
size="sm"
|
|
83
84
|
:icon="AIconArrowRight"
|
|
84
85
|
icon-right
|
|
85
86
|
@click="handleExportClick"
|
|
86
87
|
>
|
|
87
|
-
<span class="text-
|
|
88
|
+
<span class="text-body-md-strong">
|
|
88
89
|
{{ t('header.products.exportCard.receive') }}
|
|
89
90
|
</span>
|
|
90
91
|
</a-button-v2>
|
|
@@ -39,9 +39,10 @@ function onReplenish() {
|
|
|
39
39
|
</script>
|
|
40
40
|
|
|
41
41
|
<template>
|
|
42
|
-
<div class="w-full overflow-hidden bg-
|
|
42
|
+
<div class="w-full overflow-hidden bg-main text-primary lg:w-[320px] lg:rounded-lg lg:border lg:border-default">
|
|
43
43
|
<div class="p-2">
|
|
44
|
-
|
|
44
|
+
<!-- осознанно константный брендовый баннер: белое/тинты на цветном градиенте -->
|
|
45
|
+
<div class="relative overflow-hidden rounded-lg bg-linear-to-br from-brand-600/95 to-brand-500/85 p-3 text-white">
|
|
45
46
|
<div class="pointer-events-none absolute -right-8 -top-10 size-28 rounded-full bg-white/20 blur-2xl" aria-hidden="true" />
|
|
46
47
|
|
|
47
48
|
<div class="relative">
|
|
@@ -54,8 +55,8 @@ function onReplenish() {
|
|
|
54
55
|
</p>
|
|
55
56
|
<span class="inline-flex shrink-0 items-center gap-1.5 rounded-full px-2 py-0.5 text-body-sm-medium text-white ring-1 ring-inset ring-white/20">
|
|
56
57
|
<span class="relative flex size-1.5 items-center justify-center">
|
|
57
|
-
<span class="absolute inline-flex size-full animate-ping rounded-full bg-
|
|
58
|
-
<span class="relative inline-flex size-1.5 rounded-full bg-
|
|
58
|
+
<span class="absolute inline-flex size-full animate-ping rounded-full bg-icon-success/80" />
|
|
59
|
+
<span class="relative inline-flex size-1.5 rounded-full bg-icon-success" />
|
|
59
60
|
</span>
|
|
60
61
|
{{ t('header.profile.connected') }}
|
|
61
62
|
</span>
|
|
@@ -103,11 +104,11 @@ function onReplenish() {
|
|
|
103
104
|
|
|
104
105
|
<button
|
|
105
106
|
type="button"
|
|
106
|
-
class="mt-2.5 inline-flex h-8 w-full cursor-pointer items-center justify-center gap-1.5 rounded-full bg-white px-3 text-body-md-strong text-
|
|
107
|
+
class="mt-2.5 inline-flex h-8 w-full cursor-pointer items-center justify-center gap-1.5 rounded-full bg-white px-3 text-body-md-strong text-brand shadow-xs transition-all duration-150 hover:shadow-md focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-white/70 focus-visible:ring-offset-2 focus-visible:ring-offset-brand-500 active:scale-[0.98]"
|
|
107
108
|
@click="onReplenish"
|
|
108
109
|
>
|
|
109
110
|
<a-icon-plus-circle class="size-4" />
|
|
110
|
-
<span class="bg-
|
|
111
|
+
<span class="bg-linear-to-r from-brand-600 to-brand-500 bg-clip-text text-transparent">
|
|
111
112
|
{{ t('header.profile.addBalance') }}
|
|
112
113
|
</span>
|
|
113
114
|
</button>
|
|
@@ -119,26 +120,26 @@ function onReplenish() {
|
|
|
119
120
|
<nuxt-link-locale
|
|
120
121
|
v-for="item in items"
|
|
121
122
|
:key="item.title"
|
|
122
|
-
class="group flex items-center gap-3 rounded-md px-2.5 py-2 text-body-md transition-colors hover:bg-
|
|
123
|
+
class="group flex items-center gap-3 rounded-md px-2.5 py-2 text-body-md transition-colors hover:bg-action-secondary-hover"
|
|
123
124
|
:to="item.to"
|
|
124
125
|
:data-test-id="item?.dataTestId"
|
|
125
126
|
target="_blank"
|
|
126
127
|
>
|
|
127
128
|
<!-- <span -->
|
|
128
|
-
<!-- class="flex size-8 shrink-0 items-center justify-center rounded-md border border-
|
|
129
|
+
<!-- class="flex size-8 shrink-0 items-center justify-center rounded-md border border-brand-100 bg-brand-subtle text-brand" -->
|
|
129
130
|
<!-- > -->
|
|
130
131
|
<!-- <component -->
|
|
131
132
|
<!-- :is="item.icon" -->
|
|
132
133
|
<!-- class="size-4" -->
|
|
133
134
|
<!-- /> -->
|
|
134
135
|
<!-- </span> -->
|
|
135
|
-
<span class="truncate text-
|
|
136
|
+
<span class="truncate text-primary group-hover:text-link-hover">
|
|
136
137
|
{{ item.title }}
|
|
137
138
|
</span>
|
|
138
139
|
</nuxt-link-locale>
|
|
139
140
|
</nav>
|
|
140
141
|
|
|
141
|
-
<div class="border-t border-
|
|
142
|
+
<div class="border-t border-default p-2">
|
|
142
143
|
<a-change-version
|
|
143
144
|
v-if="oldVersion"
|
|
144
145
|
:url="oldVersion"
|
|
@@ -147,7 +148,7 @@ function onReplenish() {
|
|
|
147
148
|
|
|
148
149
|
<div
|
|
149
150
|
v-if="!isLargeScreen"
|
|
150
|
-
class="flex items-center justify-between rounded-md px-2.5 py-2 text-body-md text-
|
|
151
|
+
class="flex items-center justify-between rounded-md px-2.5 py-2 text-body-md text-primary"
|
|
151
152
|
>
|
|
152
153
|
<span>{{ t('header.profile.colorScheme') }}</span>
|
|
153
154
|
<a-color-mode />
|
|
@@ -155,7 +156,7 @@ function onReplenish() {
|
|
|
155
156
|
|
|
156
157
|
<button
|
|
157
158
|
type="button"
|
|
158
|
-
class="flex w-full cursor-pointer items-center gap-3 rounded-md px-2.5 py-2 text-body-md-medium text-
|
|
159
|
+
class="flex w-full cursor-pointer items-center gap-3 rounded-md px-2.5 py-2 text-body-md-medium text-action-danger transition-colors hover:bg-danger-subtle"
|
|
159
160
|
data-test-id="logout-button"
|
|
160
161
|
@click="$emit('logout')"
|
|
161
162
|
>
|
|
@@ -65,17 +65,17 @@ onMounted(fetchNotification)
|
|
|
65
65
|
<transition name="system-notification">
|
|
66
66
|
<div
|
|
67
67
|
v-if="isOpen && systemMessage"
|
|
68
|
-
class="bg-
|
|
68
|
+
class="bg-warning-subtle px-2 py-3 md:px-0"
|
|
69
69
|
>
|
|
70
70
|
<div class="a-container flex items-center justify-between gap-4">
|
|
71
71
|
<div class="flex items-center gap-2">
|
|
72
72
|
<a-icon-info-circle
|
|
73
|
-
class="max-h-[16px] w-full max-w-[16px] shrink-0 stroke-
|
|
73
|
+
class="max-h-[16px] w-full max-w-[16px] shrink-0 stroke-icon-amber"
|
|
74
74
|
/>
|
|
75
|
-
<span class="text-body-md-strong text-
|
|
75
|
+
<span class="text-body-md-strong text-warning">{{ systemMessage }}</span>
|
|
76
76
|
</div>
|
|
77
77
|
<a-icon-x-mark
|
|
78
|
-
class="max-h-[16px] w-full max-w-[16px] shrink-0 cursor-pointer stroke-
|
|
78
|
+
class="max-h-[16px] w-full max-w-[16px] shrink-0 cursor-pointer stroke-icon-amber"
|
|
79
79
|
@click="close"
|
|
80
80
|
/>
|
|
81
81
|
</div>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
</a-digit-badge>
|
|
31
31
|
<a-icon-warning-circle
|
|
32
32
|
v-if="option.warning"
|
|
33
|
-
class="
|
|
33
|
+
class="justify-self-end text-primary"
|
|
34
34
|
/>
|
|
35
35
|
</span>
|
|
36
36
|
</slot>
|
|
@@ -67,25 +67,26 @@ const activeTab = defineModel<any>({
|
|
|
67
67
|
|
|
68
68
|
const viewTypeValues: ViewType = {
|
|
69
69
|
bottom: {
|
|
70
|
-
default: 'border-b-2 border-
|
|
71
|
-
selected: 'border-b-2 border-
|
|
70
|
+
default: 'border-b-2 border-transparent pt-[3px]',
|
|
71
|
+
selected: 'border-b-2 border-brand pt-[3px]'
|
|
72
72
|
},
|
|
73
73
|
right: {
|
|
74
|
-
default: 'text-
|
|
75
|
-
selected: 'border-r-2 border-
|
|
74
|
+
default: 'text-primary bg-transparent',
|
|
75
|
+
selected: 'border-r-2 border-brand'
|
|
76
76
|
},
|
|
77
77
|
left: {
|
|
78
|
-
default: 'text-
|
|
79
|
-
selected: 'border-l-2 border-
|
|
78
|
+
default: 'text-primary bg-transparent',
|
|
79
|
+
selected: 'border-l-2 border-brand'
|
|
80
80
|
},
|
|
81
81
|
};
|
|
82
82
|
|
|
83
83
|
|
|
84
84
|
|
|
85
85
|
|
|
86
|
+
/* осознанно константный focus-shadow #1B64B3: документированное исключение */
|
|
86
87
|
const defaultClasses = () =>
|
|
87
88
|
[
|
|
88
|
-
'
|
|
89
|
+
'cursor-pointer select-none bg-transparent text-primary hover:bg-action-secondary-hover hover:disabled:bg-transparent disabled:cursor-not-allowed disabled:text-disabled focus-visible:shadow-[0_0_0_4px#1B64B3]',
|
|
89
90
|
viewTypeValues[props.view]['default'],
|
|
90
91
|
props.size == 'sm'? 'px-4 py-[7.5px]' : 'px-4 py-[11.5px]',
|
|
91
92
|
props.block ? 'w-full' : '',
|
|
@@ -93,7 +94,7 @@ const defaultClasses = () =>
|
|
|
93
94
|
|
|
94
95
|
const selectedClasses = () =>
|
|
95
96
|
[
|
|
96
|
-
'body-
|
|
97
|
+
'text-body-md-strong cursor-pointer transition duration-200 select-none focus-visible:shadow-[0_0_0_4px#1B64B3]',
|
|
97
98
|
viewTypeValues[props.view]['selected'],
|
|
98
99
|
props.size == 'sm'? 'px-4 py-[7.5px]' : 'px-4 py-[11.5px]',
|
|
99
100
|
props.block ? 'w-full' : '',
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
class="scroll-container overflow-auto whitespace-nowrap"
|
|
5
5
|
:class="[
|
|
6
6
|
props.wrapper === 'row' ? 'flex gap-1' : 'flex flex-col gap-1',
|
|
7
|
-
isSegmented ? 'rounded-[12px] bg-
|
|
7
|
+
isSegmented ? 'rounded-[12px] bg-muted p-1 shadow-[inset_2px_2px_4px_0] shadow-surface-dark/8' : ''
|
|
8
8
|
]"
|
|
9
9
|
>
|
|
10
10
|
|
|
@@ -86,43 +86,45 @@ const isSegmented = computed(() => props.view === 'segmented')
|
|
|
86
86
|
const viewTypeValues: ViewType = {
|
|
87
87
|
main: {
|
|
88
88
|
default:
|
|
89
|
-
'text-
|
|
90
|
-
selected: '
|
|
89
|
+
'text-body-md bg-muted text-primary hover:bg-action-secondary-hover',
|
|
90
|
+
selected: 'text-body-md-strong bg-action-primary text-action-primary-fg'
|
|
91
91
|
},
|
|
92
92
|
transparent: {
|
|
93
|
-
default: 'text-
|
|
94
|
-
selected: '
|
|
93
|
+
default: 'text-body-md bg-transparent text-primary hover:bg-action-secondary-hover',
|
|
94
|
+
selected: 'text-body-md-strong bg-main text-primary '
|
|
95
95
|
},
|
|
96
|
+
/* осознанно константный selected-инверт (gray/mobile): белый текст на bg-secondary-500 */
|
|
96
97
|
gray: {
|
|
97
98
|
default:
|
|
98
|
-
'
|
|
99
|
-
selected: 'text-
|
|
99
|
+
'text-body-md bg-muted hover:bg-action-secondary-hover',
|
|
100
|
+
selected: 'text-body-md text-white bg-secondary-500'
|
|
100
101
|
},
|
|
101
102
|
blue: {
|
|
102
103
|
default:
|
|
103
|
-
'text-
|
|
104
|
-
selected: '
|
|
104
|
+
'text-body-md-strong bg-main text-primary hover:bg-action-secondary-hover',
|
|
105
|
+
selected: 'text-body-md-strong bg-action-primary text-action-primary-fg'
|
|
105
106
|
},
|
|
106
107
|
mobile: {
|
|
107
108
|
default:
|
|
108
|
-
'
|
|
109
|
-
selected: 'text-
|
|
109
|
+
'text-body-md-strong bg-main hover:bg-action-secondary-hover',
|
|
110
|
+
selected: 'text-body-md-strong text-white bg-secondary-500'
|
|
110
111
|
},
|
|
111
112
|
segmented: {
|
|
112
|
-
default: 'text-
|
|
113
|
-
selected: '
|
|
113
|
+
default: 'text-body-md bg-transparent text-primary hover:bg-action-secondary-hover',
|
|
114
|
+
selected: 'text-body-md-strong bg-main text-primary shadow-[2px_2px_4px_0] shadow-surface-dark/8'
|
|
114
115
|
}
|
|
115
116
|
}
|
|
116
117
|
|
|
118
|
+
/* осознанно константный focus-shadow #1B64B3: документированное исключение */
|
|
117
119
|
const defaultClasses = (isDisabled: boolean) => [
|
|
118
|
-
'
|
|
119
|
-
isDisabled ? 'bg-
|
|
120
|
+
'rounded-sm outline-hidden select-none focus-visible:shadow-[0_0_0_4px#1B64B3]',
|
|
121
|
+
isDisabled ? 'bg-action-disabled text-action-disabled-fg' : '',
|
|
120
122
|
props.view === 'transparent' && isDisabled ? 'bg-transparent' : '',
|
|
121
123
|
viewTypeValues[props.view]['default'],
|
|
122
124
|
props.block ? 'w-full' : ''
|
|
123
125
|
]
|
|
124
126
|
const selectedClasses = () => [
|
|
125
|
-
'
|
|
127
|
+
'rounded-sm select-none focus-visible:shadow-[0_0_0_4px#1B64B3]',
|
|
126
128
|
viewTypeValues[props.view]['selected'],
|
|
127
129
|
props.block ? 'w-full' : ''
|
|
128
130
|
]
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
2
|
type CountColor = 'gray' | 'blue' | 'yellow' | 'red' | 'green' | 'neutral'
|
|
3
|
-
|
|
3
|
+
/* pill-round — полностью округлый переключатель-«тумблер» (ДС-2026, тарифы):
|
|
4
|
+
меняется не только радиус, но и поверхность трека, плотность и цвет активного
|
|
5
|
+
таба, поэтому это отдельная шкура, а не проп радиуса. */
|
|
6
|
+
type PillTabsType = 'pill' | 'pill-round' | 'underline'
|
|
4
7
|
|
|
5
8
|
export interface PillTab {
|
|
6
9
|
key: string
|
|
@@ -44,17 +47,18 @@ const SIZE_CLASS: Record<'sm' | 'md', string> = {
|
|
|
44
47
|
}
|
|
45
48
|
|
|
46
49
|
const COUNT_COLOR_CLASS: Record<CountColor, string> = {
|
|
47
|
-
gray: 'bg-
|
|
48
|
-
blue: 'bg-blue-
|
|
49
|
-
yellow: 'bg-yellow-
|
|
50
|
-
red: 'bg-
|
|
51
|
-
green: 'bg-
|
|
52
|
-
neutral: 'bg-
|
|
50
|
+
gray: 'bg-badge/70 text-quaternary',
|
|
51
|
+
blue: 'bg-blue-subtle text-brand',
|
|
52
|
+
yellow: 'bg-yellow-subtle text-warning',
|
|
53
|
+
red: 'bg-danger-subtle text-danger',
|
|
54
|
+
green: 'bg-success-subtle text-success',
|
|
55
|
+
neutral: 'bg-badge text-secondary',
|
|
53
56
|
}
|
|
54
57
|
|
|
55
58
|
const { t, te } = useI18n()
|
|
56
59
|
|
|
57
60
|
const isUnderline = computed(() => props.type === 'underline')
|
|
61
|
+
const isPillRound = computed(() => props.type === 'pill-round')
|
|
58
62
|
|
|
59
63
|
function hasCount(option: PillTab) {
|
|
60
64
|
if (typeof option.count === 'string') {
|
|
@@ -142,11 +146,13 @@ onBeforeUnmount(() => {
|
|
|
142
146
|
|
|
143
147
|
<template>
|
|
144
148
|
<div
|
|
145
|
-
class="pill-tabs-v2
|
|
149
|
+
class="pill-tabs-v2 max-w-full min-w-0"
|
|
146
150
|
:class="[
|
|
147
151
|
isUnderline
|
|
148
|
-
? 'border-b border-
|
|
149
|
-
:
|
|
152
|
+
? 'border-b border-default'
|
|
153
|
+
: isPillRound
|
|
154
|
+
? 'rounded-full border border-default bg-canvas p-0.5'
|
|
155
|
+
: 'rounded-lg border border-default bg-muted p-1',
|
|
150
156
|
block ? 'w-full' : 'w-fit',
|
|
151
157
|
disabled ? 'pill-tabs-v2--disabled opacity-60' : '',
|
|
152
158
|
]"
|
|
@@ -168,26 +174,35 @@ onBeforeUnmount(() => {
|
|
|
168
174
|
:aria-disabled="isDisabled(option) || undefined"
|
|
169
175
|
:disabled="isDisabled(option)"
|
|
170
176
|
:tabindex="modelValue === option.key ? 0 : -1"
|
|
171
|
-
class="inline-flex items-center gap-1.5 whitespace-nowrap
|
|
177
|
+
class="inline-flex items-center gap-1.5 whitespace-nowrap transition-colors duration-150"
|
|
172
178
|
:class="[
|
|
173
179
|
SIZE_CLASS[size],
|
|
174
180
|
isUnderline
|
|
175
181
|
? [
|
|
176
|
-
'px-4 py-2',
|
|
182
|
+
'px-4 py-2 font-medium',
|
|
177
183
|
isDisabled(option)
|
|
178
|
-
? 'cursor-not-allowed text-
|
|
184
|
+
? 'cursor-not-allowed text-icon-disabled'
|
|
179
185
|
: modelValue === option.key
|
|
180
|
-
? 'text-
|
|
181
|
-
: 'text-
|
|
186
|
+
? 'text-brand'
|
|
187
|
+
: 'text-quaternary hover:text-primary',
|
|
182
188
|
]
|
|
183
|
-
:
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
189
|
+
: isPillRound
|
|
190
|
+
? [
|
|
191
|
+
'rounded-full px-3.5 py-1 font-semibold',
|
|
192
|
+
isDisabled(option)
|
|
193
|
+
? 'cursor-not-allowed text-icon-disabled'
|
|
194
|
+
: modelValue === option.key
|
|
195
|
+
? 'bg-main text-brand shadow-xs dark:shadow-none dark:ring-1 dark:ring-white/10 dark:ring-inset'
|
|
196
|
+
: 'text-secondary hover:text-primary',
|
|
197
|
+
]
|
|
198
|
+
: [
|
|
199
|
+
'rounded-md px-3 py-1.5 font-medium',
|
|
200
|
+
isDisabled(option)
|
|
201
|
+
? 'cursor-not-allowed text-icon-disabled'
|
|
202
|
+
: modelValue === option.key
|
|
203
|
+
? 'bg-main text-primary shadow-xs dark:shadow-none dark:ring-1 dark:ring-white/10 dark:ring-inset'
|
|
204
|
+
: 'text-quaternary hover:bg-action-secondary-hover hover:text-primary',
|
|
205
|
+
],
|
|
191
206
|
block ? 'flex-1 basis-0 justify-center' : 'shrink-0',
|
|
192
207
|
]"
|
|
193
208
|
@click="select(option)"
|
|
@@ -197,7 +212,7 @@ onBeforeUnmount(() => {
|
|
|
197
212
|
|
|
198
213
|
<span
|
|
199
214
|
v-if="showCount && !option.hideCount"
|
|
200
|
-
class="inline-flex min-w-5 shrink-0 items-center justify-center rounded-full px-1.5 text-body-sm font-semibold
|
|
215
|
+
class="inline-flex min-w-5 shrink-0 items-center justify-center rounded-full px-1.5 text-body-sm leading-5 font-semibold"
|
|
201
216
|
:class="COUNT_COLOR_CLASS[resolveCountColor(option)]"
|
|
202
217
|
>
|
|
203
218
|
{{ formatCount(option) }}
|
|
@@ -208,7 +223,7 @@ onBeforeUnmount(() => {
|
|
|
208
223
|
<span
|
|
209
224
|
v-if="isUnderline"
|
|
210
225
|
aria-hidden="true"
|
|
211
|
-
class="pill-tabs-v2__indicator pointer-events-none absolute -bottom-px left-0 h-0.5 rounded-full bg-
|
|
226
|
+
class="pill-tabs-v2__indicator pointer-events-none absolute -bottom-px left-0 h-0.5 rounded-full bg-brand"
|
|
212
227
|
:class="indicatorAnimate ? 'transition-[transform,width,opacity] duration-300 ease-out' : ''"
|
|
213
228
|
:style="indicatorStyle"
|
|
214
229
|
/>
|