adata-ui 2.1.18 → 2.1.20
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 +170 -170
- package/.editorconfig +12 -12
- package/.gitlab-ci.yml +16 -16
- package/.nuxtrc +1 -1
- package/.nvmrc +1 -1
- package/.playground/app.config.ts +5 -5
- package/.playground/nuxt.config.ts +3 -3
- package/README.md +75 -75
- package/app.config.ts +28 -28
- package/app.vue +8 -8
- package/assets/styles/index.scss +104 -104
- package/assets/styles/modules/_base.scss +5 -5
- package/assets/styles/modules/_typography.scss +152 -152
- package/components/elements/README.md +1 -1
- package/components/elements/a-select-row/index.vue +140 -140
- package/components/elements/accordion/AAccordion.vue +197 -197
- package/components/elements/accordion/AAccordionGroup/AAccordionGroup.vue +145 -145
- package/components/elements/accordion/AAccordionGroup/types.ts +20 -20
- package/components/elements/accordion/AAccordionGroup/ui.config.ts +22 -22
- package/components/elements/accordion/types.ts +14 -14
- package/components/elements/accordion/ui.config.ts +22 -22
- package/components/elements/alert/AAlert.vue +65 -65
- package/components/elements/banner/ABanner.vue +49 -49
- package/components/elements/bg-block/ABgBlock.vue +11 -11
- package/components/elements/button/AButton.vue +188 -188
- package/components/elements/button/types.ts +24 -24
- package/components/elements/button-login/index.vue +21 -21
- package/components/elements/calendar/ACalendar.vue +83 -83
- package/components/elements/carousel/ACarousel.vue +159 -159
- package/components/elements/carousel/config.ui.ts +15 -15
- package/components/elements/carousel/types.ts +18 -18
- package/components/elements/chip-wrapper/AChipWrapper.vue +80 -80
- package/components/elements/chip-wrapper/types.ts +12 -12
- package/components/elements/chips/AChips.vue +32 -32
- package/components/elements/companies/AOurClients.vue +42 -42
- package/components/elements/curve-block/ACurveBlock.vue +291 -291
- package/components/elements/digit-badge/ADigitBadge.vue +83 -83
- package/components/elements/error-template/index.vue +48 -48
- package/components/elements/error-template/types.ts +23 -23
- package/components/elements/feature-description/AFeatureDescription.vue +112 -112
- package/components/elements/illustrations/noAccess.vue +71 -71
- package/components/elements/infinite-carousel/AInfiniteCarousel.vue +57 -57
- package/components/elements/infinite-scroll/AInfiniteScroll.vue +33 -33
- package/components/elements/leave-note/ALeaveNote.vue +78 -78
- package/components/elements/pagination/APagination.vue +110 -110
- package/components/elements/photos-animation/APhotosAnimation.vue +85 -85
- package/components/elements/select/ASelect.vue +445 -445
- package/components/elements/select/ASelectMobile.vue +186 -186
- package/components/elements/select/ui/select-button.vue +112 -112
- package/components/elements/select/ui/select-list.vue +99 -99
- package/components/elements/show-more/AShowMore.vue +35 -35
- package/components/elements/skeleton/ASkeleton.vue +44 -44
- package/components/elements/star-rating/AStarRating.vue +181 -181
- package/components/elements/star-rating/types.ts +7 -7
- package/components/elements/star-rating/ui/Star.vue +74 -74
- package/components/elements/status-badge/AStatusBadge.vue +74 -74
- package/components/elements/table/ATable.vue +93 -93
- package/components/elements/table/table.config.ts +32 -32
- package/components/elements/tree-select/ATreeSelect.vue +169 -169
- package/components/elements/tree-select/TreeService.ts +249 -249
- package/components/elements/tree-select/components/tree-select-nodes.vue +90 -90
- package/components/elements/tree-select/types.ts +34 -34
- package/components/elements/tree-select-mobile/ATreeSelectMobile.vue +79 -79
- package/components/elements/tree-select-mobile/components/ATreeSelectNodesMobile.vue +175 -175
- package/components/features/color-mode/AColorMode.client.vue +53 -53
- package/components/features/dropdown/ADropdown.vue +124 -124
- package/components/features/go-top/GoTop.vue +58 -58
- package/components/features/lang-switcher/lang-switcher.vue +63 -63
- package/components/features/payment/banner/BasicPlusLimitBanner.vue +104 -104
- package/components/features/payment/banner/PaymentBanner.vue +108 -108
- package/components/features/payment/banner/UpSellBanner.vue +125 -125
- package/components/features/payment/process/PaymentKaspiQrSidePanel.vue +158 -158
- package/components/features/payment/process/PaymentKaspiRedirectSidePanel.vue +112 -112
- package/components/features/payment/process/PaymentMethodSidePanel.vue +121 -121
- package/components/features/payment/process/PaymentProcess.vue +138 -138
- package/components/features/payment/process/PaymentTopUpSidePanel.vue +130 -130
- package/components/features/pk-mobile-services/APkMobileServices.vue +149 -149
- package/components/features//321/201hange-version/AChangeVersion.vue +20 -20
- package/components/forms/README.md +1 -1
- package/components/forms/checkbox/ACheckbox.vue +149 -149
- package/components/forms/feedback-form/FeedbackForm.vue +177 -177
- package/components/forms/input/button/AInputButton.vue +53 -53
- package/components/forms/input/date/AInputDate.vue +213 -213
- package/components/forms/input/password/AInputPassword.vue +53 -53
- package/components/forms/input/standard/AInputStandard.vue +412 -412
- package/components/forms/input/textarea/ATextarea.vue +200 -200
- package/components/forms/radio-button/ARadioButton.vue +95 -95
- package/components/forms/request-demo/ARequestDemo.vue +108 -108
- package/components/forms/toggle/AToggle.vue +157 -157
- package/components/forms/toggle/types.ts +16 -16
- package/components/modals/AConfirmationEmail.vue +40 -40
- package/components/modals/AboutTariffModal.vue +114 -114
- package/components/modals/AnotherDeviceModal.vue +60 -60
- package/components/modals/ApplicationAcceptedModal.vue +47 -47
- package/components/modals/ConnectingTariffModal.vue +67 -67
- package/components/modals/ContactsMobileModel.vue +182 -182
- package/components/modals/ContentNavigationModal.vue +355 -355
- package/components/modals/Insufficient-funds-modal.vue +77 -77
- package/components/modals/LimitReachedModal.vue +30 -30
- package/components/modals/NoAccessModal.vue +37 -37
- package/components/modals/PaymentMethodModal.vue +101 -101
- package/components/modals/RedirectsBanksModal.vue +69 -69
- package/components/modals/ReplenishModal.vue +132 -132
- package/components/modals/ReportBugConfirmModal.vue +30 -30
- package/components/modals/ReportBugModal.vue +156 -156
- package/components/modals/Resend.vue +82 -82
- package/components/modals/SubmitApplicationModal.vue +123 -123
- package/components/modals/id/AuthModal.vue +82 -82
- package/components/modals/id/IdAutoLogoutModal.vue +45 -45
- package/components/modals/id/IdBanner.vue +61 -61
- package/components/modals/id/IdConfirmAccountOtpModal.vue +186 -186
- package/components/modals/id/IdConfirmSuccessfulModal.vue +41 -41
- package/components/modals/id/IdLoginModal.vue +330 -326
- package/components/modals/id/IdModals.vue +114 -114
- package/components/modals/id/IdNewPasswordModal.vue +129 -129
- package/components/modals/id/IdOtpInput.vue +155 -155
- package/components/modals/id/IdPasswordSuccessfulModal.vue +25 -25
- package/components/modals/id/IdRecoveryModal.vue +117 -117
- package/components/modals/id/IdRegistrationModal.vue +215 -215
- package/components/modals/id/IdResetPasswordOtpModal.vue +158 -158
- package/components/modals/id/IdTwoFactorModal.vue +130 -130
- package/components/navigation/README.md +1 -1
- package/components/navigation/bottom-navigation/ABottomNavigation.vue +106 -106
- package/components/navigation/breadcrumbs/ABreadcrumbs.vue +66 -66
- package/components/navigation/breadcrumbs/types.ts +4 -4
- package/components/navigation/footer/AFooter.vue +279 -279
- package/components/navigation/footer/ui/a-footer-accordion.vue +118 -118
- package/components/navigation/header/AHeader.vue +217 -217
- package/components/navigation/header/AlmatyContacts.vue +145 -145
- package/components/navigation/header/AstanaContacts.vue +67 -67
- package/components/navigation/header/CardGallery.vue +249 -249
- package/components/navigation/header/ContactMenu.vue +114 -114
- package/components/navigation/header/HeaderLink.vue +267 -267
- package/components/navigation/header/ListItem.vue +31 -31
- package/components/navigation/header/NavCard.vue +41 -41
- package/components/navigation/header/NavList.vue +131 -131
- package/components/navigation/header/NotificationsMenu.vue +51 -51
- package/components/navigation/header/ProductMenu.vue +143 -143
- package/components/navigation/header/ProfileMenu.vue +194 -194
- package/components/navigation/header/TopHeader.vue +194 -194
- package/components/navigation/header/types.ts +28 -28
- package/components/navigation/line-tabs/ALineTabs.vue +111 -111
- package/components/navigation/line-tabs/types.ts +21 -21
- package/components/navigation/mobile-navigation/AMobileNavigation.vue +104 -104
- package/components/navigation/pill-tabs/APillTabs.vue +171 -171
- package/components/navigation/pill-tabs/types.ts +23 -23
- package/components/navigation/side-navigation/ASideNavigation.vue +406 -406
- package/components/overlays/README.md +1 -1
- package/components/overlays/modal/AModal.vue +332 -332
- package/components/overlays/side-panel/ASidePanel.vue +439 -439
- package/components/overlays/sideover/ASlideover.vue +351 -351
- package/components/overlays/tooltip/ATooltip.vue +237 -237
- package/components/transitions/ATransitionHeight.vue +67 -67
- package/components/utils/index.ts +19 -19
- package/components/utils/removeTrailingSlash.ts +7 -7
- package/composables/highlight.ts +18 -18
- package/composables/modalsState.ts +8 -8
- package/composables/projectState.ts +2 -2
- package/composables/useAdaptive.ts +46 -46
- package/composables/useBuyTariffs.ts +91 -91
- package/composables/useCarouselScroll.ts +49 -49
- package/composables/useHeaderNavigationLinks.ts +453 -453
- package/composables/useIdModals.ts +36 -36
- package/composables/usePayment.ts +74 -74
- package/composables/useUIValidation.ts +16 -16
- package/composables/useUrls.ts +21 -21
- package/eslint.config.mjs +45 -45
- package/i18n/i18n.config.ts +21 -21
- package/i18n.config.ts +21 -21
- package/icons/adata-logo.vue +17 -17
- package/icons/ai-assistant.vue +13 -13
- package/icons/akimat.vue +20 -20
- package/icons/arrow/arrow-bottom-left-on-square.vue +5 -5
- package/icons/arrow/arrow-circle-down.vue +16 -16
- package/icons/arrow/arrow-circle-reset.vue +16 -16
- package/icons/arrow/arrow-corner.vue +9 -9
- package/icons/arrow/arrow-graph-down.vue +13 -13
- package/icons/arrow/arrow-graph-up.vue +14 -14
- package/icons/arrow/arrow-square-down.vue +15 -15
- package/icons/arrow/arrow-top-right-on-square.vue +6 -6
- package/icons/arrow-currency-gray.vue +5 -5
- package/icons/arrow-currency-green.vue +5 -5
- package/icons/arrow-currency-red.vue +5 -5
- package/icons/arrow-side-up.vue +6 -6
- package/icons/avatar.vue +12 -12
- package/icons/bank.vue +5 -5
- package/icons/block.vue +16 -16
- package/icons/bookmark/bookmark-filled.vue +18 -18
- package/icons/bookmark/bookmark.vue +5 -5
- package/icons/browsers/browser-duck.vue +65 -65
- package/icons/browsers/browser-google.vue +30 -30
- package/icons/browsers/browser-yandex.vue +13 -13
- package/icons/building-vector.vue +7 -7
- package/icons/calculator.vue +7 -7
- package/icons/calendar.vue +24 -24
- package/icons/car.vue +7 -7
- package/icons/chart-bar.vue +5 -5
- package/icons/chart-pie.vue +16 -16
- package/icons/check/check-circle.vue +6 -6
- package/icons/check/check-shield.vue +14 -14
- package/icons/check/check.vue +17 -17
- package/icons/check/checkmark-circle.vue +6 -6
- package/icons/check-sb.vue +7 -7
- package/icons/checkbox/checkbox-active.vue +17 -17
- package/icons/checkbox/checkbox-empty.vue +10 -10
- package/icons/checkbox/checkbox-intermediate.vue +7 -7
- package/icons/chevron/chevron-down.vue +5 -5
- package/icons/chevron/chevron-left.vue +5 -5
- package/icons/chevron/chevron-right.vue +5 -5
- package/icons/chevron/chevron-up.vue +5 -5
- package/icons/chevron/double-chevron-right.vue +12 -12
- package/icons/clipboard-text.vue +7 -7
- package/icons/clock.vue +25 -25
- package/icons/close.vue +16 -16
- package/icons/company/company-bazis.vue +21 -21
- package/icons/company/company-bereke.vue +25 -25
- package/icons/company/company-bigroup.vue +16 -16
- package/icons/company/company-erg.vue +17 -17
- package/icons/company/company-forte.vue +21 -21
- package/icons/company/company-halyk.vue +15 -15
- package/icons/company/company-jusan.vue +31 -31
- package/icons/company/company-kaspi.vue +14 -14
- package/icons/company/company-mycar.vue +13 -13
- package/icons/company/company-samruk.vue +21 -21
- package/icons/company-egov-small.vue +15 -15
- package/icons/company.vue +8 -8
- package/icons/copy.vue +7 -7
- package/icons/currency/currency-dollar.vue +16 -16
- package/icons/currency/currency-down.vue +22 -22
- package/icons/currency/currency-eur.vue +57 -57
- package/icons/currency/currency-rub.vue +7 -7
- package/icons/currency/currency-tenge.vue +9 -9
- package/icons/currency/currency-usd.vue +221 -221
- package/icons/currency/currency-yuan.vue +25 -25
- package/icons/default-avatar.vue +20 -20
- package/icons/delete.vue +7 -7
- package/icons/document.vue +5 -5
- package/icons/download.vue +11 -11
- package/icons/edit.vue +7 -7
- package/icons/education.vue +16 -16
- package/icons/egov-small.vue +7 -7
- package/icons/excel-icon.vue +14 -14
- package/icons/expand-window.vue +7 -7
- package/icons/eye-closed.vue +26 -26
- package/icons/eye-open.vue +7 -7
- package/icons/eye-opened.vue +23 -23
- package/icons/file/file.vue +16 -16
- package/icons/file/files.vue +16 -16
- package/icons/filter.vue +5 -5
- package/icons/flag.vue +7 -7
- package/icons/gift.vue +8 -8
- package/icons/globe.vue +16 -16
- package/icons/google.vue +41 -41
- package/icons/graph-pie.vue +14 -14
- package/icons/hand/hand-thumb-up-filled.vue +5 -5
- package/icons/hand/hand-thumb-up.vue +5 -5
- package/icons/hand-with-phone/hand-with-phone-dark.vue +52 -52
- package/icons/hand-with-phone/hand-with-phone-light.vue +52 -52
- package/icons/handshake.vue +5 -5
- package/icons/hcheck.vue +14 -14
- package/icons/hdocument.vue +7 -7
- package/icons/history.vue +5 -5
- package/icons/horizontal-more.vue +13 -13
- package/icons/hot-line.vue +6 -6
- package/icons/hummer.vue +16 -16
- package/icons/id.vue +7 -7
- package/icons/info/info-circle.vue +29 -29
- package/icons/invoice.vue +7 -7
- package/icons/judge.vue +14 -14
- package/icons/kaspi-qr.vue +13 -13
- package/icons/link-chain.vue +28 -28
- package/icons/link.vue +7 -7
- package/icons/linkedin.vue +24 -24
- package/icons/loader-circle.vue +27 -27
- package/icons/location.vue +8 -8
- package/icons/lock.vue +5 -5
- package/icons/logo.vue +15 -15
- package/icons/logout.vue +16 -16
- package/icons/magnify/magnifying-glass-minus.vue +8 -8
- package/icons/magnify/magnifying-glass-plus.vue +9 -9
- package/icons/magnify/magnifying-glass.vue +9 -9
- package/icons/mail.vue +7 -7
- package/icons/mailru.vue +34 -34
- package/icons/main-filter.vue +5 -5
- package/icons/map/map-pin-filled.vue +7 -7
- package/icons/map/map-pin-rect.vue +15 -15
- package/icons/map/map-pin.vue +7 -7
- package/icons/map-marker-start.vue +7 -7
- package/icons/map-paper.vue +5 -5
- package/icons/medal.vue +7 -7
- package/icons/menu-filled.vue +20 -20
- package/icons/menu.vue +8 -8
- package/icons/message/message.vue +12 -12
- package/icons/minus/minus-circle.vue +10 -10
- package/icons/money.vue +5 -5
- package/icons/monitoring.vue +10 -10
- package/icons/moon.vue +8 -8
- package/icons/more.vue +29 -29
- package/icons/note-pencil.vue +14 -14
- package/icons/note.vue +14 -14
- package/icons/notification.vue +16 -16
- package/icons/paperclip.vue +7 -7
- package/icons/payment/payment-card.vue +6 -6
- package/icons/payment/payment-kaspi.vue +11 -11
- package/icons/person-vector.vue +7 -7
- package/icons/person-with-briefcase.vue +10 -10
- package/icons/phone-filled.vue +5 -5
- package/icons/phone.vue +7 -7
- package/icons/plus/plus-circle.vue +8 -8
- package/icons/plus/plus.vue +13 -13
- package/icons/profile.vue +5 -5
- package/icons/radio/radio-check.vue +8 -8
- package/icons/radio/radio-empty.vue +10 -10
- package/icons/receipt.vue +8 -8
- package/icons/robot.vue +14 -14
- package/icons/sanctions.vue +8 -8
- package/icons/scales/scale.vue +16 -16
- package/icons/scales/scales.vue +5 -5
- package/icons/scales/standing-scales.vue +15 -15
- package/icons/search.vue +27 -27
- package/icons/share/share-alt.vue +5 -5
- package/icons/share/share.vue +14 -14
- package/icons/ship.vue +8 -8
- package/icons/socials/face-book.vue +15 -15
- package/icons/socials/instagram.vue +19 -19
- package/icons/socials/telegram.vue +15 -15
- package/icons/socials/tik-tok.vue +15 -15
- package/icons/socials/youtube.vue +16 -16
- package/icons/sort/sort-asc.vue +15 -15
- package/icons/sort/sort-desc.vue +15 -15
- package/icons/splitting-arrows.vue +8 -8
- package/icons/star/star-filled.vue +40 -40
- package/icons/star/star-half-filled.vue +20 -20
- package/icons/star/star.vue +25 -25
- package/icons/sun.vue +14 -14
- package/icons/sviazi.vue +5 -5
- package/icons/tag.vue +30 -30
- package/icons/tasks.vue +10 -10
- package/icons/tender-search.vue +11 -11
- package/icons/toasts/check-circle-toast.vue +6 -6
- package/icons/toasts/warning-triangle-toast.vue +7 -7
- package/icons/trash.vue +13 -13
- package/icons/triangle.vue +10 -10
- package/icons/truck.vue +7 -7
- package/icons/user-square.vue +14 -14
- package/icons/user.vue +22 -22
- package/icons/users-focus.vue +8 -8
- package/icons/users-three.vue +7 -7
- package/icons/users.vue +8 -8
- package/icons/warning/warning-circle.vue +29 -29
- package/icons/warning/warning-triangle-filled.vue +12 -12
- package/icons/warning/warning-triangle.vue +28 -28
- package/icons/whatsapp.vue +8 -8
- package/icons/work-bag.vue +11 -11
- package/icons/work-case.vue +9 -9
- package/icons/work-search.vue +10 -10
- package/icons/work.vue +5 -5
- package/icons/x-mark.vue +15 -15
- package/icons/yandex.vue +28 -28
- package/illustrations/address-location.vue +38 -38
- package/illustrations/ball-with-chain.vue +120 -120
- package/illustrations/bill.vue +133 -133
- package/illustrations/buildings.vue +82 -82
- package/illustrations/calendar.vue +156 -156
- package/illustrations/chains.vue +152 -152
- package/illustrations/coin-percent.vue +126 -126
- package/illustrations/coins-stack.vue +202 -202
- package/illustrations/delete-dark.vue +31 -31
- package/illustrations/delete.vue +32 -32
- package/illustrations/doc-with-stamp.vue +126 -126
- package/illustrations/document.vue +64 -64
- package/illustrations/door.vue +74 -74
- package/illustrations/empty-box.vue +77 -77
- package/illustrations/empty-wallet.vue +161 -161
- package/illustrations/graph-in-coin.vue +119 -119
- package/illustrations/hammer.vue +156 -156
- package/illustrations/hand-cash.vue +108 -108
- package/illustrations/info.vue +39 -39
- package/illustrations/mail.vue +68 -68
- package/illustrations/ok.vue +62 -62
- package/illustrations/people-group.vue +237 -237
- package/illustrations/person-with-phone.vue +187 -187
- package/illustrations/person.vue +159 -159
- package/illustrations/phone-check.vue +90 -90
- package/illustrations/phone-payment-method.vue +223 -223
- package/illustrations/stop-hand.vue +77 -77
- package/illustrations/stop-sign.vue +34 -34
- package/illustrations/suit.vue +111 -111
- package/illustrations/suitcase.vue +105 -105
- package/illustrations/terminal-dark.vue +48 -48
- package/illustrations/terminal.vue +234 -234
- package/illustrations/trash-can.vue +108 -108
- package/illustrations/turn-on-tariff.vue +38 -38
- package/illustrations/two-persons.vue +169 -169
- package/lang/en.ts +834 -834
- package/lang/kk.ts +836 -836
- package/lang/ru.ts +837 -837
- package/layouts/default.vue +13 -13
- package/nuxt.config.ts +88 -88
- package/package.json +69 -69
- package/plugins/maska.ts +4 -4
- package/plugins/toast.client.ts +58 -58
- package/public/kaspi/logo.svg +4 -4
- package/shared/constans/pages.ts +89 -89
- package/tailwind.config.ts +163 -163
- package/tests/AButton.test.ts +81 -81
- package/tsconfig.json +6 -6
- package/utils/getMaxZindex.ts +25 -25
- package/utils/localizedNavigation.ts +36 -36
- package/vitest.config.ts +14 -14
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
const props = defineProps<{
|
|
3
|
-
location: 'vertical' | 'horizontal'
|
|
4
|
-
}>()
|
|
5
|
-
|
|
6
|
-
const bannerData = reactive({
|
|
7
|
-
redirect_url: '',
|
|
8
|
-
src: '',
|
|
9
|
-
})
|
|
10
|
-
|
|
11
|
-
async function fetchBanner() {
|
|
12
|
-
try {
|
|
13
|
-
const { data } = await $fetch<any>('https://users.adata.kz/api/v1/banners/active/single', {
|
|
14
|
-
params: {
|
|
15
|
-
location: props.location,
|
|
16
|
-
page: 'details'
|
|
17
|
-
},
|
|
18
|
-
})
|
|
19
|
-
if (data?.src) {
|
|
20
|
-
bannerData.redirect_url = data.redirect_url
|
|
21
|
-
bannerData.src = data.src
|
|
22
|
-
}
|
|
23
|
-
} catch (e) {
|
|
24
|
-
console.error(e.message)
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
onBeforeMount(() => {
|
|
29
|
-
fetchBanner()
|
|
30
|
-
})
|
|
31
|
-
</script>
|
|
32
|
-
|
|
33
|
-
<template>
|
|
34
|
-
<nuxt-link
|
|
35
|
-
v-if="bannerData?.src"
|
|
36
|
-
:to="bannerData.redirect_url"
|
|
37
|
-
target="_blank"
|
|
38
|
-
>
|
|
39
|
-
<img
|
|
40
|
-
class="w-full"
|
|
41
|
-
:src="bannerData.src"
|
|
42
|
-
alt="banner"
|
|
43
|
-
>
|
|
44
|
-
</nuxt-link>
|
|
45
|
-
</template>
|
|
46
|
-
|
|
47
|
-
<style scoped>
|
|
48
|
-
|
|
49
|
-
</style>
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
const props = defineProps<{
|
|
3
|
+
location: 'vertical' | 'horizontal'
|
|
4
|
+
}>()
|
|
5
|
+
|
|
6
|
+
const bannerData = reactive({
|
|
7
|
+
redirect_url: '',
|
|
8
|
+
src: '',
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
async function fetchBanner() {
|
|
12
|
+
try {
|
|
13
|
+
const { data } = await $fetch<any>('https://users.adata.kz/api/v1/banners/active/single', {
|
|
14
|
+
params: {
|
|
15
|
+
location: props.location,
|
|
16
|
+
page: 'details'
|
|
17
|
+
},
|
|
18
|
+
})
|
|
19
|
+
if (data?.src) {
|
|
20
|
+
bannerData.redirect_url = data.redirect_url
|
|
21
|
+
bannerData.src = data.src
|
|
22
|
+
}
|
|
23
|
+
} catch (e) {
|
|
24
|
+
console.error(e.message)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
onBeforeMount(() => {
|
|
29
|
+
fetchBanner()
|
|
30
|
+
})
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<template>
|
|
34
|
+
<nuxt-link
|
|
35
|
+
v-if="bannerData?.src"
|
|
36
|
+
:to="bannerData.redirect_url"
|
|
37
|
+
target="_blank"
|
|
38
|
+
>
|
|
39
|
+
<img
|
|
40
|
+
class="w-full"
|
|
41
|
+
:src="bannerData.src"
|
|
42
|
+
alt="banner"
|
|
43
|
+
>
|
|
44
|
+
</nuxt-link>
|
|
45
|
+
</template>
|
|
46
|
+
|
|
47
|
+
<style scoped>
|
|
48
|
+
|
|
49
|
+
</style>
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
<script setup lang="ts"></script>
|
|
2
|
-
|
|
3
|
-
<template>
|
|
4
|
-
<div class="md:rounded-lg p-4 bg-white dark:bg-gray-900">
|
|
5
|
-
<slot />
|
|
6
|
-
</div>
|
|
7
|
-
</template>
|
|
8
|
-
|
|
9
|
-
<style scoped>
|
|
10
|
-
|
|
11
|
-
</style>
|
|
1
|
+
<script setup lang="ts"></script>
|
|
2
|
+
|
|
3
|
+
<template>
|
|
4
|
+
<div class="md:rounded-lg p-4 bg-white dark:bg-gray-900">
|
|
5
|
+
<slot />
|
|
6
|
+
</div>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<style scoped>
|
|
10
|
+
|
|
11
|
+
</style>
|
|
@@ -1,188 +1,188 @@
|
|
|
1
|
-
<script lang="ts" setup>
|
|
2
|
-
// TODO: refactor Ilkham
|
|
3
|
-
import { twJoin, twMerge } from 'tailwind-merge'
|
|
4
|
-
import type { Component } from 'vue'
|
|
5
|
-
import type { DisabledViewSwitchValues, SizeSwitchValues, ViewSwitchValues } from './types'
|
|
6
|
-
import { NuxtLinkLocale} from '#components'
|
|
7
|
-
|
|
8
|
-
defineOptions({ name: 'AButton' })
|
|
9
|
-
|
|
10
|
-
interface Props {
|
|
11
|
-
variant?: 'primary' | 'success' | 'danger' | 'gray' | 'ghost'
|
|
12
|
-
view?: 'default' | 'outline' | 'transparent' | 'rounded'
|
|
13
|
-
size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl'
|
|
14
|
-
form?: 'icon' | 'button'
|
|
15
|
-
icon?: Component
|
|
16
|
-
iconClass?: string
|
|
17
|
-
loading?: boolean
|
|
18
|
-
disabled?: boolean
|
|
19
|
-
block?: boolean
|
|
20
|
-
active?: boolean
|
|
21
|
-
to?: string
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const props = withDefaults(defineProps<Props>(), {
|
|
25
|
-
variant: 'primary',
|
|
26
|
-
view: 'default',
|
|
27
|
-
size: 'lg',
|
|
28
|
-
form: 'button',
|
|
29
|
-
loading: false,
|
|
30
|
-
disabled: false,
|
|
31
|
-
block: false,
|
|
32
|
-
active: false,
|
|
33
|
-
iconClass: '',
|
|
34
|
-
to: ''
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
const classes = computed(() => [
|
|
38
|
-
'body-600 rounded-md cursor-pointer outline-none transition duration-200 select-none',
|
|
39
|
-
props.block ? 'w-full' : '',
|
|
40
|
-
typeSwitchValues[props.view][props.variant],
|
|
41
|
-
sizeSwitchValues[props.form][props.size]
|
|
42
|
-
])
|
|
43
|
-
const disabledClasses = computed(() => [
|
|
44
|
-
'body-600 rounded-md outline-none transition duration-200 select-none',
|
|
45
|
-
props.block ? 'w-full' : '',
|
|
46
|
-
disabledTypeSwitchValues[props.view],
|
|
47
|
-
sizeSwitchValues[props.form][props.size]
|
|
48
|
-
])
|
|
49
|
-
|
|
50
|
-
const typeSwitchActiveValues: ViewSwitchValues = {
|
|
51
|
-
default: {
|
|
52
|
-
primary: 'bg-deepblue-900 text-white dark:bg-gray-200',
|
|
53
|
-
success: 'bg-deepblue-900 text-white dark:bg-gray-200',
|
|
54
|
-
danger: 'bg-deepblue-900 text-white dark:bg-gray-200 ',
|
|
55
|
-
gray: 'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200',
|
|
56
|
-
ghost:
|
|
57
|
-
'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200'
|
|
58
|
-
},
|
|
59
|
-
transparent: {
|
|
60
|
-
primary: 'bg-blue-700 text-white dark:bg-blue-500 dark:text-gray-900',
|
|
61
|
-
success: 'bg-green-500 text-white dark:bg-green-400 dark:text-gray-900',
|
|
62
|
-
danger: 'bg-red-500 text-white dark:bg-red-400 dark:text-gray-900',
|
|
63
|
-
gray: 'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200',
|
|
64
|
-
ghost:
|
|
65
|
-
'bg-white text-deepblue-900 dark:bg-gray-900 dark:text-gray-200 hover:text-deepblue-900 dark:hover:text-gray-200'
|
|
66
|
-
},
|
|
67
|
-
outline: {
|
|
68
|
-
primary: 'bg-blue-700 text-white dark:bg-blue-500 dark:text-gray-900',
|
|
69
|
-
success: 'bg-green-500 text-white dark:bg-green-400 dark:text-gray-900',
|
|
70
|
-
danger: 'bg-red-500 text-white dark:bg-red-400 dark:text-gray-900',
|
|
71
|
-
gray: 'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200',
|
|
72
|
-
ghost:
|
|
73
|
-
'bg-gray-500 text-white dark:bg-gray-500 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200'
|
|
74
|
-
},
|
|
75
|
-
rounded: {
|
|
76
|
-
primary: 'bg-deepblue-900 text-white dark:bg-gray-200',
|
|
77
|
-
success: 'bg-deepblue-900 text-white dark:bg-gray-200',
|
|
78
|
-
danger: 'bg-deepblue-900 text-white dark:bg-gray-200 ',
|
|
79
|
-
gray: 'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200',
|
|
80
|
-
ghost:
|
|
81
|
-
'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200'
|
|
82
|
-
},
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
const typeSwitchValues: ViewSwitchValues = {
|
|
86
|
-
default: {
|
|
87
|
-
primary:
|
|
88
|
-
'bg-blue-700 text-white hover:bg-blue-900 active:bg-deepblue-900 active:text-white dark:bg-blue-500 dark:text-gray-900 dark:hover:bg-blue-700 dark:active:bg-gray-200',
|
|
89
|
-
success:
|
|
90
|
-
'bg-green-500 text-white hover:bg-green-900 active:bg-deepblue-900 active:text-white dark:bg-green dark:text-gray-900 dark:hover:bg-green-300 dark:active:bg-gray-200',
|
|
91
|
-
danger:
|
|
92
|
-
'bg-red-500 text-white hover:bg-red-700 active:bg-deepblue-900 active:text-white dark:bg-red-400 dark:text-gray-900 dark:hover:bg-red-300 dark:active:bg-gray-200',
|
|
93
|
-
gray: 'bg-deepblue-900/5 text-deepblue-900 hover:bg-deepblue-900/10 active:bg-deepblue-900 active:text-white dark:bg-gray-200/5 dark:hover:bg-gray-200/10 dark:active:bg-gray-200 dark:text-gray-200 dark:active:text-gray-900',
|
|
94
|
-
ghost:
|
|
95
|
-
'bg-white text-deepblue-900 hover:bg-deepblue-900/5 active:bg-deepblue-900 active:text-white dark:bg-gray-900 dark:text-gray-200 dark:bg-gray-900 dark:hover:bg-gray-200/5 dark:active:bg-gray-200 dark:active:text-gray-900'
|
|
96
|
-
},
|
|
97
|
-
transparent: {
|
|
98
|
-
primary:
|
|
99
|
-
'text-blue-700 hover:bg-blue-100 active:bg-blue-700 active:text-white dark:text-blue-500 dark:hover:bg-blue-500/20 dark:active:bg-blue-500 dark:active:text-gray-900',
|
|
100
|
-
success:
|
|
101
|
-
'text-green-500 hover:bg-green-500/20 active:bg-green-500 active:text-white dark:text-green-400 dark:hover:bg-green-400/20 dark:active:bg-green-400 dark:active:text-gray-900',
|
|
102
|
-
danger:
|
|
103
|
-
'text-red-500 hover:bg-red-500/20 active:bg-red-500 active:text-white dark:text-red-400 dark:hover:bg-red-400/20 dark:active:bg-red-400 dark:active:text-gray-900',
|
|
104
|
-
gray: 'text-deepblue-900 hover:bg-deepblue-900/10 active:bg-deepblue-900 active:text-white dark:text-gray-200 dark:hover:bg-gray-200/5 dark:active:bg-gray-200 dark:active:text-gray-900',
|
|
105
|
-
ghost:
|
|
106
|
-
'text-white hover:bg-deepblue-900/10 active:bg-white active:text-deepblue-900 dark:text-gray-200 dark:hover:bg-gray-200/5 dark:active:bg-gray-900 dark:active:text-gray-200'
|
|
107
|
-
},
|
|
108
|
-
outline: {
|
|
109
|
-
primary:
|
|
110
|
-
'border border-blue-700 text-blue-700 hover:bg-blue-100 active:bg-blue-700 active:text-white dark:border-blue-500 dark:text-blue-500 dark:hover:bg-blue-500/20 dark:active:bg-blue-500 dark:active:text-gray-900',
|
|
111
|
-
success:
|
|
112
|
-
'border border-green-500 text-green-500 hover:bg-green-500/20 active:bg-green-500 active:text-white dark:border-green-400 dark:text-green-400 dark:hover:bg-green-400/20 dark:active:bg-green-400 dark:active:text-gray-900',
|
|
113
|
-
danger:
|
|
114
|
-
'border border-red-500 text-red-500 hover:bg-red-500/20 active:bg-red-500 active:text-white dark:text-red-400 dark:border-red-400 dark:hover:bg-red-400/20 dark:active:bg-red-400 dark:active:text-gray-900',
|
|
115
|
-
gray: 'border border-gray-500/50 text-deepblue-900 hover:bg-deepblue-900/10 active:bg-deepblue-900 active:text-white dark:border-gray-500/50 dark:text-gray-200 dark:hover:bg-gray-200/5 dark:active:bg-gray-200 dark:active:text-gray-900',
|
|
116
|
-
ghost:
|
|
117
|
-
'border border-white text-white hover:bg-deepblue-900 active:bg-gray-500 active:text-white dark:border-gray-200 dark:text-gray-200 dark:hover:bg-gray-200/5 dark:active:bg-gray-500 dark:active:text-gray-900'
|
|
118
|
-
},
|
|
119
|
-
rounded: {
|
|
120
|
-
primary:
|
|
121
|
-
'rounded-[32px] bg-blue-700 text-white hover:bg-blue-900 active:bg-deepblue-900 active:text-white dark:bg-blue-500 dark:text-gray-900 dark:hover:bg-blue-700 dark:active:bg-gray-200',
|
|
122
|
-
success:
|
|
123
|
-
'rounded-[32px] bg-green-500 text-white hover:bg-green-900 active:bg-deepblue-900 active:text-white dark:bg-green dark:text-gray-900 dark:hover:bg-green-300 dark:active:bg-gray-200',
|
|
124
|
-
danger:
|
|
125
|
-
'rounded-[32px] bg-red-500 text-white hover:bg-red-700 active:bg-deepblue-900 active:text-white dark:bg-red-400 dark:text-gray-900 dark:hover:bg-red-300 dark:active:bg-gray-200',
|
|
126
|
-
gray: 'rounded-[32px] bg-deepblue-900/5 text-deepblue-900 hover:bg-deepblue-900/10 active:bg-deepblue-900 active:text-white dark:bg-gray-200/5 dark:hover:bg-gray-200/10 dark:active:bg-gray-200 dark:text-gray-200 dark:active:text-gray-900',
|
|
127
|
-
ghost:
|
|
128
|
-
'rounded-[32px] bg-white text-deepblue-900 hover:bg-deepblue-900/5 active:bg-deepblue-900 active:text-white dark:bg-gray-900 dark:text-gray-200 dark:bg-gray-900 dark:hover:bg-gray-200/5 dark:active:bg-gray-200 dark:active:text-gray-900'
|
|
129
|
-
},
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
const disabledTypeSwitchValues: DisabledViewSwitchValues = {
|
|
133
|
-
default:
|
|
134
|
-
'bg-deepblue-900/5 text-deepblue-900/20 dark:bg-gray-200/5 dark:text-gray-200/20 pointer-events-none',
|
|
135
|
-
transparent: 'text-gray-500/50 pointer-events-none',
|
|
136
|
-
outline: 'border border-gray-500/50 text-gray-500/50 pointer-events-none'
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
const sizeSwitchValues: SizeSwitchValues = {
|
|
140
|
-
icon: {
|
|
141
|
-
sm: 'p-1 text-base',
|
|
142
|
-
md: 'p-2 text-base',
|
|
143
|
-
lg: 'p-2 text-2xl',
|
|
144
|
-
xl: 'p-4 text-3xl',
|
|
145
|
-
},
|
|
146
|
-
button: {
|
|
147
|
-
sm: 'px-4 py-1.5 leading-4 !h-[28px]',
|
|
148
|
-
md: 'px-4 py-1.5 !h-[32px]',
|
|
149
|
-
lg: 'px-4 py-2.5',
|
|
150
|
-
xl: 'px-8 py-2.5',
|
|
151
|
-
'2xl': 'px-6 py-[14px] text-xl',
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
const buttonClasses = computed(() =>
|
|
156
|
-
twMerge(
|
|
157
|
-
twJoin(
|
|
158
|
-
props.disabled ? disabledClasses.value : classes.value,
|
|
159
|
-
props.active ? typeSwitchActiveValues[props.view][props.variant] : '',
|
|
160
|
-
props.to ? 'inline-block' : ''
|
|
161
|
-
)
|
|
162
|
-
)
|
|
163
|
-
)
|
|
164
|
-
</script>
|
|
165
|
-
<template>
|
|
166
|
-
<component
|
|
167
|
-
:is="to ? NuxtLinkLocale : 'button'"
|
|
168
|
-
:class="[buttonClasses, 'relative h-fit transition flex items-center justify-center']"
|
|
169
|
-
:disabled="disabled"
|
|
170
|
-
:to="to"
|
|
171
|
-
>
|
|
172
|
-
<span
|
|
173
|
-
:class="[
|
|
174
|
-
{ 'opacity-0': loading },
|
|
175
|
-
'flex items-center justify-center gap-2 whitespace-nowrap'
|
|
176
|
-
]"
|
|
177
|
-
>
|
|
178
|
-
<component :is="icon" :class="[`${iconClass}`]" />
|
|
179
|
-
<slot />
|
|
180
|
-
</span>
|
|
181
|
-
<span
|
|
182
|
-
v-if="loading"
|
|
183
|
-
class="absolute left-1/2 top-1/2 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center"
|
|
184
|
-
>
|
|
185
|
-
<a-icon-loader-circle class="animate-spin"/>
|
|
186
|
-
</span>
|
|
187
|
-
</component>
|
|
188
|
-
</template>
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
// TODO: refactor Ilkham
|
|
3
|
+
import { twJoin, twMerge } from 'tailwind-merge'
|
|
4
|
+
import type { Component } from 'vue'
|
|
5
|
+
import type { DisabledViewSwitchValues, SizeSwitchValues, ViewSwitchValues } from './types'
|
|
6
|
+
import { NuxtLinkLocale} from '#components'
|
|
7
|
+
|
|
8
|
+
defineOptions({ name: 'AButton' })
|
|
9
|
+
|
|
10
|
+
interface Props {
|
|
11
|
+
variant?: 'primary' | 'success' | 'danger' | 'gray' | 'ghost'
|
|
12
|
+
view?: 'default' | 'outline' | 'transparent' | 'rounded'
|
|
13
|
+
size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl'
|
|
14
|
+
form?: 'icon' | 'button'
|
|
15
|
+
icon?: Component
|
|
16
|
+
iconClass?: string
|
|
17
|
+
loading?: boolean
|
|
18
|
+
disabled?: boolean
|
|
19
|
+
block?: boolean
|
|
20
|
+
active?: boolean
|
|
21
|
+
to?: string
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
25
|
+
variant: 'primary',
|
|
26
|
+
view: 'default',
|
|
27
|
+
size: 'lg',
|
|
28
|
+
form: 'button',
|
|
29
|
+
loading: false,
|
|
30
|
+
disabled: false,
|
|
31
|
+
block: false,
|
|
32
|
+
active: false,
|
|
33
|
+
iconClass: '',
|
|
34
|
+
to: ''
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
const classes = computed(() => [
|
|
38
|
+
'body-600 rounded-md cursor-pointer outline-none transition duration-200 select-none',
|
|
39
|
+
props.block ? 'w-full' : '',
|
|
40
|
+
typeSwitchValues[props.view][props.variant],
|
|
41
|
+
sizeSwitchValues[props.form][props.size]
|
|
42
|
+
])
|
|
43
|
+
const disabledClasses = computed(() => [
|
|
44
|
+
'body-600 rounded-md outline-none transition duration-200 select-none',
|
|
45
|
+
props.block ? 'w-full' : '',
|
|
46
|
+
disabledTypeSwitchValues[props.view],
|
|
47
|
+
sizeSwitchValues[props.form][props.size]
|
|
48
|
+
])
|
|
49
|
+
|
|
50
|
+
const typeSwitchActiveValues: ViewSwitchValues = {
|
|
51
|
+
default: {
|
|
52
|
+
primary: 'bg-deepblue-900 text-white dark:bg-gray-200',
|
|
53
|
+
success: 'bg-deepblue-900 text-white dark:bg-gray-200',
|
|
54
|
+
danger: 'bg-deepblue-900 text-white dark:bg-gray-200 ',
|
|
55
|
+
gray: 'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200',
|
|
56
|
+
ghost:
|
|
57
|
+
'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200'
|
|
58
|
+
},
|
|
59
|
+
transparent: {
|
|
60
|
+
primary: 'bg-blue-700 text-white dark:bg-blue-500 dark:text-gray-900',
|
|
61
|
+
success: 'bg-green-500 text-white dark:bg-green-400 dark:text-gray-900',
|
|
62
|
+
danger: 'bg-red-500 text-white dark:bg-red-400 dark:text-gray-900',
|
|
63
|
+
gray: 'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200',
|
|
64
|
+
ghost:
|
|
65
|
+
'bg-white text-deepblue-900 dark:bg-gray-900 dark:text-gray-200 hover:text-deepblue-900 dark:hover:text-gray-200'
|
|
66
|
+
},
|
|
67
|
+
outline: {
|
|
68
|
+
primary: 'bg-blue-700 text-white dark:bg-blue-500 dark:text-gray-900',
|
|
69
|
+
success: 'bg-green-500 text-white dark:bg-green-400 dark:text-gray-900',
|
|
70
|
+
danger: 'bg-red-500 text-white dark:bg-red-400 dark:text-gray-900',
|
|
71
|
+
gray: 'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200',
|
|
72
|
+
ghost:
|
|
73
|
+
'bg-gray-500 text-white dark:bg-gray-500 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200'
|
|
74
|
+
},
|
|
75
|
+
rounded: {
|
|
76
|
+
primary: 'bg-deepblue-900 text-white dark:bg-gray-200',
|
|
77
|
+
success: 'bg-deepblue-900 text-white dark:bg-gray-200',
|
|
78
|
+
danger: 'bg-deepblue-900 text-white dark:bg-gray-200 ',
|
|
79
|
+
gray: 'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200',
|
|
80
|
+
ghost:
|
|
81
|
+
'bg-deepblue-900 text-white dark:bg-gray-200 dark:text-gray-900 hover:text-deepblue-900 dark:hover:text-gray-200'
|
|
82
|
+
},
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const typeSwitchValues: ViewSwitchValues = {
|
|
86
|
+
default: {
|
|
87
|
+
primary:
|
|
88
|
+
'bg-blue-700 text-white hover:bg-blue-900 active:bg-deepblue-900 active:text-white dark:bg-blue-500 dark:text-gray-900 dark:hover:bg-blue-700 dark:active:bg-gray-200',
|
|
89
|
+
success:
|
|
90
|
+
'bg-green-500 text-white hover:bg-green-900 active:bg-deepblue-900 active:text-white dark:bg-green dark:text-gray-900 dark:hover:bg-green-300 dark:active:bg-gray-200',
|
|
91
|
+
danger:
|
|
92
|
+
'bg-red-500 text-white hover:bg-red-700 active:bg-deepblue-900 active:text-white dark:bg-red-400 dark:text-gray-900 dark:hover:bg-red-300 dark:active:bg-gray-200',
|
|
93
|
+
gray: 'bg-deepblue-900/5 text-deepblue-900 hover:bg-deepblue-900/10 active:bg-deepblue-900 active:text-white dark:bg-gray-200/5 dark:hover:bg-gray-200/10 dark:active:bg-gray-200 dark:text-gray-200 dark:active:text-gray-900',
|
|
94
|
+
ghost:
|
|
95
|
+
'bg-white text-deepblue-900 hover:bg-deepblue-900/5 active:bg-deepblue-900 active:text-white dark:bg-gray-900 dark:text-gray-200 dark:bg-gray-900 dark:hover:bg-gray-200/5 dark:active:bg-gray-200 dark:active:text-gray-900'
|
|
96
|
+
},
|
|
97
|
+
transparent: {
|
|
98
|
+
primary:
|
|
99
|
+
'text-blue-700 hover:bg-blue-100 active:bg-blue-700 active:text-white dark:text-blue-500 dark:hover:bg-blue-500/20 dark:active:bg-blue-500 dark:active:text-gray-900',
|
|
100
|
+
success:
|
|
101
|
+
'text-green-500 hover:bg-green-500/20 active:bg-green-500 active:text-white dark:text-green-400 dark:hover:bg-green-400/20 dark:active:bg-green-400 dark:active:text-gray-900',
|
|
102
|
+
danger:
|
|
103
|
+
'text-red-500 hover:bg-red-500/20 active:bg-red-500 active:text-white dark:text-red-400 dark:hover:bg-red-400/20 dark:active:bg-red-400 dark:active:text-gray-900',
|
|
104
|
+
gray: 'text-deepblue-900 hover:bg-deepblue-900/10 active:bg-deepblue-900 active:text-white dark:text-gray-200 dark:hover:bg-gray-200/5 dark:active:bg-gray-200 dark:active:text-gray-900',
|
|
105
|
+
ghost:
|
|
106
|
+
'text-white hover:bg-deepblue-900/10 active:bg-white active:text-deepblue-900 dark:text-gray-200 dark:hover:bg-gray-200/5 dark:active:bg-gray-900 dark:active:text-gray-200'
|
|
107
|
+
},
|
|
108
|
+
outline: {
|
|
109
|
+
primary:
|
|
110
|
+
'border border-blue-700 text-blue-700 hover:bg-blue-100 active:bg-blue-700 active:text-white dark:border-blue-500 dark:text-blue-500 dark:hover:bg-blue-500/20 dark:active:bg-blue-500 dark:active:text-gray-900',
|
|
111
|
+
success:
|
|
112
|
+
'border border-green-500 text-green-500 hover:bg-green-500/20 active:bg-green-500 active:text-white dark:border-green-400 dark:text-green-400 dark:hover:bg-green-400/20 dark:active:bg-green-400 dark:active:text-gray-900',
|
|
113
|
+
danger:
|
|
114
|
+
'border border-red-500 text-red-500 hover:bg-red-500/20 active:bg-red-500 active:text-white dark:text-red-400 dark:border-red-400 dark:hover:bg-red-400/20 dark:active:bg-red-400 dark:active:text-gray-900',
|
|
115
|
+
gray: 'border border-gray-500/50 text-deepblue-900 hover:bg-deepblue-900/10 active:bg-deepblue-900 active:text-white dark:border-gray-500/50 dark:text-gray-200 dark:hover:bg-gray-200/5 dark:active:bg-gray-200 dark:active:text-gray-900',
|
|
116
|
+
ghost:
|
|
117
|
+
'border border-white text-white hover:bg-deepblue-900 active:bg-gray-500 active:text-white dark:border-gray-200 dark:text-gray-200 dark:hover:bg-gray-200/5 dark:active:bg-gray-500 dark:active:text-gray-900'
|
|
118
|
+
},
|
|
119
|
+
rounded: {
|
|
120
|
+
primary:
|
|
121
|
+
'rounded-[32px] bg-blue-700 text-white hover:bg-blue-900 active:bg-deepblue-900 active:text-white dark:bg-blue-500 dark:text-gray-900 dark:hover:bg-blue-700 dark:active:bg-gray-200',
|
|
122
|
+
success:
|
|
123
|
+
'rounded-[32px] bg-green-500 text-white hover:bg-green-900 active:bg-deepblue-900 active:text-white dark:bg-green dark:text-gray-900 dark:hover:bg-green-300 dark:active:bg-gray-200',
|
|
124
|
+
danger:
|
|
125
|
+
'rounded-[32px] bg-red-500 text-white hover:bg-red-700 active:bg-deepblue-900 active:text-white dark:bg-red-400 dark:text-gray-900 dark:hover:bg-red-300 dark:active:bg-gray-200',
|
|
126
|
+
gray: 'rounded-[32px] bg-deepblue-900/5 text-deepblue-900 hover:bg-deepblue-900/10 active:bg-deepblue-900 active:text-white dark:bg-gray-200/5 dark:hover:bg-gray-200/10 dark:active:bg-gray-200 dark:text-gray-200 dark:active:text-gray-900',
|
|
127
|
+
ghost:
|
|
128
|
+
'rounded-[32px] bg-white text-deepblue-900 hover:bg-deepblue-900/5 active:bg-deepblue-900 active:text-white dark:bg-gray-900 dark:text-gray-200 dark:bg-gray-900 dark:hover:bg-gray-200/5 dark:active:bg-gray-200 dark:active:text-gray-900'
|
|
129
|
+
},
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const disabledTypeSwitchValues: DisabledViewSwitchValues = {
|
|
133
|
+
default:
|
|
134
|
+
'bg-deepblue-900/5 text-deepblue-900/20 dark:bg-gray-200/5 dark:text-gray-200/20 pointer-events-none',
|
|
135
|
+
transparent: 'text-gray-500/50 pointer-events-none',
|
|
136
|
+
outline: 'border border-gray-500/50 text-gray-500/50 pointer-events-none'
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const sizeSwitchValues: SizeSwitchValues = {
|
|
140
|
+
icon: {
|
|
141
|
+
sm: 'p-1 text-base',
|
|
142
|
+
md: 'p-2 text-base',
|
|
143
|
+
lg: 'p-2 text-2xl',
|
|
144
|
+
xl: 'p-4 text-3xl',
|
|
145
|
+
},
|
|
146
|
+
button: {
|
|
147
|
+
sm: 'px-4 py-1.5 leading-4 !h-[28px]',
|
|
148
|
+
md: 'px-4 py-1.5 !h-[32px]',
|
|
149
|
+
lg: 'px-4 py-2.5',
|
|
150
|
+
xl: 'px-8 py-2.5',
|
|
151
|
+
'2xl': 'px-6 py-[14px] text-xl',
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
const buttonClasses = computed(() =>
|
|
156
|
+
twMerge(
|
|
157
|
+
twJoin(
|
|
158
|
+
props.disabled ? disabledClasses.value : classes.value,
|
|
159
|
+
props.active ? typeSwitchActiveValues[props.view][props.variant] : '',
|
|
160
|
+
props.to ? 'inline-block' : ''
|
|
161
|
+
)
|
|
162
|
+
)
|
|
163
|
+
)
|
|
164
|
+
</script>
|
|
165
|
+
<template>
|
|
166
|
+
<component
|
|
167
|
+
:is="to ? NuxtLinkLocale : 'button'"
|
|
168
|
+
:class="[buttonClasses, 'relative h-fit transition flex items-center justify-center']"
|
|
169
|
+
:disabled="disabled"
|
|
170
|
+
:to="to"
|
|
171
|
+
>
|
|
172
|
+
<span
|
|
173
|
+
:class="[
|
|
174
|
+
{ 'opacity-0': loading },
|
|
175
|
+
'flex items-center justify-center gap-2 whitespace-nowrap'
|
|
176
|
+
]"
|
|
177
|
+
>
|
|
178
|
+
<component :is="icon" :class="[`${iconClass}`]" />
|
|
179
|
+
<slot />
|
|
180
|
+
</span>
|
|
181
|
+
<span
|
|
182
|
+
v-if="loading"
|
|
183
|
+
class="absolute left-1/2 top-1/2 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center"
|
|
184
|
+
>
|
|
185
|
+
<a-icon-loader-circle class="animate-spin"/>
|
|
186
|
+
</span>
|
|
187
|
+
</component>
|
|
188
|
+
</template>
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
export type TypeSwitchValues = {
|
|
2
|
-
[key in 'primary' | 'success' | 'danger' | 'gray' | 'ghost']: string;
|
|
3
|
-
};
|
|
4
|
-
|
|
5
|
-
export type ViewSwitchValues = {
|
|
6
|
-
default: TypeSwitchValues;
|
|
7
|
-
transparent: TypeSwitchValues;
|
|
8
|
-
outline: TypeSwitchValues;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export type SizeSwitchValues = {
|
|
12
|
-
icon: {
|
|
13
|
-
[key in 'sm' | 'md' | 'lg' | 'xl']: string;
|
|
14
|
-
};
|
|
15
|
-
button: {
|
|
16
|
-
[key in 'sm' | 'md' | 'lg' | 'xl']: string;
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export type DisabledViewSwitchValues = {
|
|
21
|
-
default: string;
|
|
22
|
-
transparent: string;
|
|
23
|
-
outline: string;
|
|
24
|
-
}
|
|
1
|
+
export type TypeSwitchValues = {
|
|
2
|
+
[key in 'primary' | 'success' | 'danger' | 'gray' | 'ghost']: string;
|
|
3
|
+
};
|
|
4
|
+
|
|
5
|
+
export type ViewSwitchValues = {
|
|
6
|
+
default: TypeSwitchValues;
|
|
7
|
+
transparent: TypeSwitchValues;
|
|
8
|
+
outline: TypeSwitchValues;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export type SizeSwitchValues = {
|
|
12
|
+
icon: {
|
|
13
|
+
[key in 'sm' | 'md' | 'lg' | 'xl']: string;
|
|
14
|
+
};
|
|
15
|
+
button: {
|
|
16
|
+
[key in 'sm' | 'md' | 'lg' | 'xl']: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export type DisabledViewSwitchValues = {
|
|
21
|
+
default: string;
|
|
22
|
+
transparent: string;
|
|
23
|
+
outline: string;
|
|
24
|
+
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import IconLogout from '#adata-ui/icons/logout.vue'
|
|
3
|
-
|
|
4
|
-
const { t } = useI18n()
|
|
5
|
-
|
|
6
|
-
defineEmits(['click'])
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
<template>
|
|
10
|
-
<div
|
|
11
|
-
class="hidden w-max cursor-pointer items-center gap-2 rounded-2xl bg-blue-700 px-4 py-[6px] font-semibold dark:bg-blue-500 lg:flex"
|
|
12
|
-
@click="$emit('click')"
|
|
13
|
-
>
|
|
14
|
-
<icon-logout class="text-white dark:text-gray-900 lg:h-4 lg:w-4" />
|
|
15
|
-
<span class="hidden text-sm font-semibold text-white dark:text-gray-900 lg:inline-block min-w-[44px]">
|
|
16
|
-
{{ t('header.login') }}
|
|
17
|
-
</span>
|
|
18
|
-
</div>
|
|
19
|
-
</template>
|
|
20
|
-
|
|
21
|
-
<style scoped></style>
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import IconLogout from '#adata-ui/icons/logout.vue'
|
|
3
|
+
|
|
4
|
+
const { t } = useI18n()
|
|
5
|
+
|
|
6
|
+
defineEmits(['click'])
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<template>
|
|
10
|
+
<div
|
|
11
|
+
class="hidden w-max cursor-pointer items-center gap-2 rounded-2xl bg-blue-700 px-4 py-[6px] font-semibold dark:bg-blue-500 lg:flex"
|
|
12
|
+
@click="$emit('click')"
|
|
13
|
+
>
|
|
14
|
+
<icon-logout class="text-white dark:text-gray-900 lg:h-4 lg:w-4" />
|
|
15
|
+
<span class="hidden text-sm font-semibold text-white dark:text-gray-900 lg:inline-block min-w-[44px]">
|
|
16
|
+
{{ t('header.login') }}
|
|
17
|
+
</span>
|
|
18
|
+
</div>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<style scoped></style>
|