From 752a4f41ad8a58ee9ac481e888dd757c768bc7d9 Mon Sep 17 00:00:00 2001 From: Afiq Yasin Ramadhan Date: Wed, 5 Apr 2023 14:31:49 +0700 Subject: [PATCH] feat: (add darkmode version of filterbar, form-group, heading, input, input-file, input-group, input-password, input-pin, input-range, label, main, modal, nav, navbar, overlay, page, pagination, pdf-object, pdf-viewer, progress and radio) --- packages/tailwind-preset/index.js | 2 +- src/components/avatar/Avatar.vue | 3 +- src/components/badge/Badge.vue | 59 ++++++++----- src/components/banner/Banner.vue | 21 +++-- src/components/breadcrumbs/BreadcrumbItem.vue | 3 +- .../breadcrumbs/BreadcrumbItemDropdown.vue | 9 +- src/components/button-group/ButtonGroup.vue | 6 +- src/components/button/Button.vue | 75 +++++++++++------ src/components/button/index.md | 1 + src/components/calendar/Calendar.vue | 12 ++- src/components/camera/Camera.vue | 12 ++- src/components/caption/Caption.vue | 3 +- src/components/card/Card.vue | 18 ++-- src/components/chart/Chart.vue | 3 +- src/components/checkbox/Checkbox.vue | 27 ++++-- src/components/collapse/Collapse.vue | 3 +- .../contextual-bar/ContextualBar.vue | 18 ++-- src/components/cropper/Cropper.vue | 7 +- src/components/datepicker/Datepicker.vue | 3 +- src/components/divider/Divider.vue | 18 ++-- src/components/dot/Dot.vue | 18 ++-- src/components/dropdown/Dropdown.vue | 6 +- src/components/dropdown/DropdownItem.vue | 12 ++- src/components/filterbar/Filterbar.vue | 1 + src/components/form-group/FormGroup.vue | 9 +- src/components/heading/Heading.vue | 3 +- src/components/input-file/InputFile.vue | 3 + src/components/input-group/InputGroup.vue | 12 ++- .../input-group/InputGroupAddon.vue | 3 + src/components/input-group/index.md | 2 +- .../input-password/InputPassword.vue | 2 + src/components/input-pin/index.md | 2 - src/components/input-range/InputRange.vue | 7 +- src/components/input/Input.vue | 8 +- src/components/label/Label.vue | 19 ++++- src/components/main/Main.vue | 10 ++- src/components/modal/Modal.vue | 5 +- src/components/nav/Nav.vue | 24 +++++- src/components/nav/NavItem.vue | 2 + src/components/nav/NavSubItem.vue | 4 + src/components/nav/index.md | 16 ++-- src/components/navbar/Navbar.vue | 7 +- src/components/navbar/NavbarBrand.vue | 3 +- src/components/navbar/NavbarNav.vue | 15 ++-- src/components/navbar/NavbarToggle.vue | 3 +- src/components/overlay/Overlay.vue | 1 + src/components/page/Page.vue | 3 +- src/components/pagination/Pagination.vue | 23 +++-- src/components/pdf-object/PdfObject.vue | 4 +- .../pdf-object/PdfObjectDebugger.vue | 1 + src/components/pdf-viewer/PdfError.vue | 23 ++++- src/components/pdf-viewer/PdfLoading.vue | 1 + src/components/pdf-viewer/PdfNavigation.vue | 8 +- src/components/pdf-viewer/PdfViewer.vue | 4 + src/components/progress/Progress.vue | 18 ++-- src/components/radio/Radio.vue | 11 +++ src/components/radio/index.md | 84 +++++++++---------- 57 files changed, 468 insertions(+), 212 deletions(-) diff --git a/packages/tailwind-preset/index.js b/packages/tailwind-preset/index.js index 36cb1d6659..b00f3ce4d7 100644 --- a/packages/tailwind-preset/index.js +++ b/packages/tailwind-preset/index.js @@ -168,7 +168,7 @@ module.exports = { 'inverse': theme.colors.gray[0], 'subtle' : { DEFAULT: theme.colors.gray[100], - alpha : `rgba(${theme.colors.gray[70]}, ${theme.opacity[10]})`, + alpha : `rgba(${theme.colors.gray[20]}, ${theme.opacity[10]})`, }, 'info': { DEFAULT : theme.colors.blue[90], diff --git a/src/components/avatar/Avatar.vue b/src/components/avatar/Avatar.vue index dd25099318..fea100ff15 100644 --- a/src/components/avatar/Avatar.vue +++ b/src/components/avatar/Avatar.vue @@ -135,7 +135,8 @@ export default defineComponent({ diff --git a/src/components/breadcrumbs/BreadcrumbItem.vue b/src/components/breadcrumbs/BreadcrumbItem.vue index 5ec67bb99f..d9839cf062 100644 --- a/src/components/breadcrumbs/BreadcrumbItem.vue +++ b/src/components/breadcrumbs/BreadcrumbItem.vue @@ -84,7 +84,8 @@ export default defineComponent({ } & > a { - @apply text-subtle dark:text-dark-subtle cursor-pointer underline decoration-solid hover:no-underline; + @apply text-subtle cursor-pointer underline decoration-solid hover:no-underline; + @apply dark:text-dark-subtle; } & > span { diff --git a/src/components/breadcrumbs/BreadcrumbItemDropdown.vue b/src/components/breadcrumbs/BreadcrumbItemDropdown.vue index 7b9385006e..422460415b 100644 --- a/src/components/breadcrumbs/BreadcrumbItemDropdown.vue +++ b/src/components/breadcrumbs/BreadcrumbItemDropdown.vue @@ -53,16 +53,19 @@ export default defineComponent({ .breadcrumbs__item { &&--dropdown { .dropdown__activator { - @apply px-0 text-subtle dark:text-dark-subtle bg-transparent dark:bg-transparent border-transparent dark:border-transparent hover:shadow-none hover:border-transparent hover:dark:border-transparent hover:bg-transparent hover:dark:bg-transparent focus:shadow-none focus:border-transparent focus:dark:border-transparent focus:bg-transparent focus:dark:bg-transparent; + @apply px-0 text-subtle bg-transparent border-transparent hover:shadow-none hover:border-transparent hover:bg-transparent focus:shadow-none focus:border-transparent focus:bg-transparent; + @apply dark:text-dark-subtle dark:bg-transparent dark:border-transparent hover:dark:border-transparent hover:dark:bg-transparent focus:dark:border-transparent focus:dark:bg-transparent; } } &&--active { .dropdown__activator { - @apply text-default dark:text-dark-default; + @apply text-default; + @apply dark:text-dark-default; & > .dropdown__caret { - @apply text-subtle dark:text-dark-subtle; + @apply text-subtle; + @apply dark:text-dark-subtle; } } } diff --git a/src/components/button-group/ButtonGroup.vue b/src/components/button-group/ButtonGroup.vue index 656d73305d..aba7443bc0 100644 --- a/src/components/button-group/ButtonGroup.vue +++ b/src/components/button-group/ButtonGroup.vue @@ -100,7 +100,8 @@ export default defineComponent({ &.btn--success, &.btn--warning, &.btn--danger { - @apply border-l-subtle-alpha dark:border-l-dark-subtle-alpha; + @apply border-l-subtle-alpha; + @apply dark:border-l-dark-subtle-alpha; } } } @@ -126,7 +127,8 @@ export default defineComponent({ */ &:not(:first-child) { .btn { - @apply -ml-[1px] rounded-l-none border-l-subtle-alpha dark:border-l-dark-subtle-alpha; + @apply -ml-[1px] rounded-l-none border-l-subtle-alpha; + @apply dark:border-l-dark-subtle-alpha; } } } diff --git a/src/components/button/Button.vue b/src/components/button/Button.vue index d29c76a37f..1296d90933 100644 --- a/src/components/button/Button.vue +++ b/src/components/button/Button.vue @@ -163,38 +163,46 @@ export default defineComponent({ * default style variant */ &&--variant-solid { - @apply border border-solid hover:shadow-lg focus:shadow-none active:shadow-none text-state-emphasis dark:text-dark-state-emphasis; + @apply border border-solid hover:shadow-lg focus:shadow-none active:shadow-none text-state-emphasis; + @apply dark:text-dark-state-emphasis; &.btn { &--default { - @apply bg-default-alpha dark:bg-dark-default-alpha focus:bg-subtle-alpha focus:dark:bg-dark-subtle-alpha active:bg-subtle-alpha active:dark:bg-dark-subtle-alpha text-subtle dark:text-dark-subtle hover:text-default hover:dark:text-dark-default focus:text-default focus:dark:text-dark-default; + @apply bg-default-alpha focus:bg-subtle-alpha active:bg-subtle-alpha text-subtle hover:text-default focus:text-default; + @apply dark:bg-dark-default-alpha focus:dark:bg-dark-subtle-alpha active:dark:bg-dark-subtle-alpha dark:text-dark-subtle hover:dark:text-dark-default focus:dark:text-dark-default; } &--primary { - @apply bg-brand-accent dark:bg-dark-brand-accent hover:bg-[color:var(--p-color-primary-hover)] hover:dark:bg-[color:var(--p-color-dark-primary-hover)] focus:bg-[color:var(--p-color-primary-focus)] focus:dark:bg-[color:var(--p-color-dark-primary-focus)] active:bg-[color:var(--p-color-primary-focus)] active:dark:bg-[color:var(--p-color-dark-primary-focus)]; + @apply bg-brand-accent hover:bg-[color:var(--p-color-primary-hover)] focus:bg-[color:var(--p-color-primary-focus)] active:bg-[color:var(--p-color-primary-focus)]; + @apply dark:bg-dark-brand-accent hover:dark:bg-[color:var(--p-color-dark-primary-hover)] focus:dark:bg-[color:var(--p-color-dark-primary-focus)] active:dark:bg-[color:var(--p-color-dark-primary-focus)]; } &--info { - @apply bg-info-emphasis dark:bg-dark-info-emphasis hover:bg-[color:var(--p-color-info-hover)] hover:dark:bg-[color:var(--p-color-dark-info-hover)] focus:bg-[color:var(--p-color-info-focus)] focus:dark:bg-[color:var(--p-color-dark-info-focus)] active:bg-[color:var(--p-color-info-focus)] active:dark:bg-[color:var(--p-color-dark-info-focus)]; + @apply bg-info-emphasis hover:bg-[color:var(--p-color-info-hover)] focus:bg-[color:var(--p-color-info-focus)] active:bg-[color:var(--p-color-info-focus)]; + @apply dark:bg-dark-info-emphasis hover:dark:bg-[color:var(--p-color-dark-info-hover)] focus:dark:bg-[color:var(--p-color-dark-info-focus)] active:dark:bg-[color:var(--p-color-dark-info-focus)]; } &--success { - @apply bg-success-emphasis dark:bg-dark-success-emphasis hover:bg-[color:var(--p-color-success-hover)] hover:dark:bg-[color:var(--p-color-dark-success-hover)] focus:bg-[color:var(--p-color-success-focus)] focus:dark:bg-[color:var(--p-color-dark-success-focus)] active:bg-[color:var(--p-color-success-focus)] active:dark:bg-[color:var(--p-color-dark-success-focus)]; + @apply bg-success-emphasis hover:bg-[color:var(--p-color-success-hover)] focus:bg-[color:var(--p-color-success-focus)] active:bg-[color:var(--p-color-success-focus)]; + @apply dark:bg-dark-success-emphasis hover:dark:bg-[color:var(--p-color-dark-success-hover)] focus:dark:bg-[color:var(--p-color-dark-success-focus)] active:dark:bg-[color:var(--p-color-dark-success-focus)] } &--warning { - @apply bg-warning-emphasis dark:bg-dark-warning-emphasis hover:bg-[color:var(--p-color-warning-hover)] hover:dark:bg-[color:var(--p-color-dark-warning-hover)] focus:bg-[color:var(--p-color-warning-focus)] focus:dark:bg-[color:var(--p-color-dark-warning-focus)] active:bg-[color:var(--p-color-warning-focus)] active:dark:bg-[color:var(--p-color-dark-warning-focus)]; + @apply bg-warning-emphasis hover:bg-[color:var(--p-color-warning-hover)] focus:bg-[color:var(--p-color-warning-focus)] active:bg-[color:var(--p-color-warning-focus)]; + @apply dark:bg-dark-warning-emphasis hover:dark:bg-[color:var(--p-color-dark-warning-hover)] focus:dark:bg-[color:var(--p-color-dark-warning-focus)] active:dark:bg-[color:var(--p-color-dark-warning-focus)]; } &--danger { - @apply bg-danger-emphasis dark:bg-dark-danger-emphasis hover:bg-[color:var(--p-color-danger-hover)] hover:dark:bg-[color:var(--p-color-dark-danger-hover)] focus:bg-[color:var(--p-color-danger-focus)] focus:dark:bg-[color:var(--p-color-dark-danger-focus)] active:bg-[color:var(--p-color-danger-focus)] active:dark:bg-[color:var(--p-color-dark-danger-focus)]; + @apply bg-danger-emphasis hover:bg-[color:var(--p-color-danger-hover)] focus:bg-[color:var(--p-color-danger-focus)] active:bg-[color:var(--p-color-danger-focus)]; + @apply dark:bg-dark-danger-emphasis hover:dark:bg-[color:var(--p-color-dark-danger-hover)] focus:dark:bg-[color:var(--p-color-dark-danger-focus)] active:dark:bg-[color:var(--p-color-dark-danger-focus)] } } } &&--variant-outline, &&--variant-ghost { - @apply border border-solid text-subtle dark:text-dark-subtle hover:text-default hover:dark:text-dark-default hover:shadow-lg focus:shadow-none active:shadow-none focus:text-default focus:dark:text-dark-default active:text-default active:dark:text-dark-default; + @apply border border-solid text-subtle hover:text-default hover:shadow-lg focus:shadow-none active:shadow-none focus:text-default active:text-default; + @apply dark:text-dark-subtle hover:dark:text-dark-default focus:dark:text-dark-default active:dark:text-dark-default; } /** @@ -207,27 +215,33 @@ export default defineComponent({ &&--variant-outline { &.btn { &--default { - @apply border-default-alpha dark:border-dark-default-alpha hover:border-subtle-alpha hover:dark:border-dark-subtle-alpha active:border-subtle-alpha active:dark:border-dark-subtle-alpha focus:border-subtle-alpha focus:dark:border-dark-subtle-alpha; + @apply border-default-alpha hover:border-subtle-alpha active:border-subtle-alpha focus:border-subtle-alpha; + @apply dark:border-dark-default-alpha hover:dark:border-dark-subtle-alpha active:dark:border-dark-subtle-alpha focus:dark:border-dark-subtle-alpha; } &--primary { - @apply border-brand-accent dark:border-dark-brand-accent hover:border-[color:var(--p-color-primary-hover)] hover:dark:border-[color:var(--p-color-dark-primary-hover)] focus:border-[color:var(--p-color-primary-focus)] focus:dark:border-[color:var(--p-color-dark-primary-focus)] active:border-[color:var(--p-color-primary-focus)] active:dark:border-[color:var(--p-color-dark-primary-focus)]; + @apply border-brand-accent hover:border-[color:var(--p-color-primary-hover)] focus:border-[color:var(--p-color-primary-focus)] active:border-[color:var(--p-color-primary-focus)]; + @apply dark:border-dark-brand-accent hover:dark:border-[color:var(--p-color-dark-primary-hover)] focus:dark:border-[color:var(--p-color-dark-primary-focus)] active:dark:border-[color:var(--p-color-dark-primary-focus)]; } &--info { - @apply border-info-emphasis dark:border-dark-info-emphasis hover:border-[color:var(--p-color-info-hover)] hover:dark:border-[color:var(--p-color-dark-info-hover)] focus:border-[color:var(--p-color-info-focus)] focus:dark:border-[color:var(--p-color-dark-info-focus)] active:border-[color:var(--p-color-info-focus)] active:dark:border-[color:var(--p-color-dark-info-focus)]; + @apply border-info-emphasis hover:border-[color:var(--p-color-info-hover)] focus:border-[color:var(--p-color-info-focus)] active:border-[color:var(--p-color-info-focus)]; + @apply dark:border-dark-info-emphasis hover:dark:border-[color:var(--p-color-dark-info-hover)] focus:dark:border-[color:var(--p-color-dark-info-focus)] active:dark:border-[color:var(--p-color-dark-info-focus)]; } &--success { - @apply border-success-emphasis dark:border-dark-success-emphasis hover:border-[color:var(--p-color-success-hover)] hover:dark:border-[color:var(--p-color-dark-success-hover)] focus:border-[color:var(--p-color-success-focus)] focus:dark:border-[color:var(--p-color-dark-success-focus)] active:border-[color:var(--p-color-success-focus)] active:dark:border-[color:var(--p-color-dark-success-fucus)]; + @apply border-success-emphasis hover:border-[color:var(--p-color-success-hover)] focus:border-[color:var(--p-color-success-focus)] active:border-[color:var(--p-color-success-focus)]; + @apply dark:border-dark-success-emphasis hover:dark:border-[color:var(--p-color-dark-success-hover)] focus:dark:border-[color:var(--p-color-dark-success-focus)] active:dark:border-[color:var(--p-color-dark-success-fucus)]; } &--warning { - @apply border-warning-emphasis dark:border-dark-warning-emphasis hover:border-[color:var(--p-color-warning-hover)] hover:dark:border-[color:var(--p-color-dark-warning-hover)] focus:border-[color:var(--p-color-warning-focus)] focus:dark:border-[color:var(--p-color-dark-warning-focus)] active:border-[color:var(--p-color-warning-focus)] active:dark:border-[color:var(--p-color-dark-warning-focus)]; + @apply border-warning-emphasis hover:border-[color:var(--p-color-warning-hover)] focus:border-[color:var(--p-color-warning-focus)] active:border-[color:var(--p-color-warning-focus)]; + @apply dark:border-dark-warning-emphasis hover:dark:border-[color:var(--p-color-dark-warning-hover)] focus:dark:border-[color:var(--p-color-dark-warning-focus)] active:dark:border-[color:var(--p-color-dark-warning-focus)] } &--danger { - @apply border-danger-emphasis dark:border-dark-danger-emphasis hover:border-[color:var(--p-color-danger-hover)] hover:dark:border-[color:var(--p-color-dark-danger-hover)] focus:border-[color:var(--p-color-danger-focus)] focus:dark:border-[color:var(--p-color-dark-danger-focus)] active:border-[color:var(--p-color-danger-focus)] active:dark:border-[color:var(--p-color-dark-danger-focus)]; + @apply border-danger-emphasis hover:border-[color:var(--p-color-danger-hover)] focus:border-[color:var(--p-color-danger-focus)] active:border-[color:var(--p-color-danger-focus)]; + @apply dark:border-dark-danger-emphasis hover:dark:border-[color:var(--p-color-dark-danger-hover)] focus:dark:border-[color:var(--p-color-dark-danger-focus)] active:dark:border-[color:var(--p-color-dark-danger-focus)]; } } } @@ -236,7 +250,8 @@ export default defineComponent({ * Button ghost variant */ &&--variant-ghost { - @apply border-transparent dark:border-transparent bg-transparent dark:bg-transparent hover:border-default-alpha hover:dark:border-dark-default-alpha hover:bg-default-alpha hover:dark:bg-dark-default-alpha active:bg-default-alpha active:dark:bg-dark-default-alpha focus:bg-default-alpha focus:dark:bg-dark-default-alpha active:border-default-alpha active:dark:border-dark-default-alpha focus:border-default-alpha focus:dark:border-dark-default-alpha; + @apply border-transparent bg-transparent hover:border-default-alpha hover:bg-default-alpha active:bg-default-alpha focus:bg-default-alpha active:border-default-alpha focus:border-default-alpha ; + @apply dark:border-transparent dark:bg-transparent hover:dark:border-dark-default-alpha hover:dark:bg-dark-default-alpha active:dark:bg-dark-default-alpha focus:dark:bg-dark-default-alpha active:dark:border-dark-default-alpha focus:dark:border-dark-default-alpha; } /** @@ -248,43 +263,53 @@ export default defineComponent({ &.btn { &--default { - @apply text-subtle dark:text-dark-subtle hover:text-default hover:dark:text-dark-default focus:text-default focus:dark:text-dark-default active:text-default active:dark:text-dark-default; + @apply text-subtle hover:text-default focus:text-default active:text-default ; + @apply dark:text-dark-subtle hover:dark:text-dark-default focus:dark:text-dark-default active:dark:text-dark-default; } &--primary { - @apply text-brand-accent dark:text-dark-brand-accent hover:text-[color:var(--p-color-primary-hover)] focus:text-[color:var(--p-color-primary-focus)] active:text-[color:var(--p-color-primary-focus)]; + @apply text-brand-accent hover:text-[color:var(--p-color-primary-hover)] focus:text-[color:var(--p-color-primary-focus)] active:text-[color:var(--p-color-primary-focus)]; + @apply dark:text-dark-brand-accent hover:dark:text-[color:var(--p-color-dark-primary-hover)] focus:dark:text-[color:var(--p-color-dark-primary-focus)] active:dark:text-[color:var(--p-color-dark-primary-focus)]; } &--info { - @apply text-info dark:text-dark-info hover:text-[color:var(--p-color-info-hover)] hover:dark:text-[color:var(--p-color-dark-info-hover)] focus:text-[color:var(--p-color-info-focus)] focus:dark:text-[color:var(--p-color-dark-info-focus)] active:text-[color:var(--p-color-info-focus)] active:dark:text-[color:var(--p-color-dark-info-focus)]; + @apply text-info hover:text-[color:var(--p-color-info-hover)] focus:text-[color:var(--p-color-info-focus)] active:text-[color:var(--p-color-info-focus)]; + @apply dark:text-dark-info hover:dark:text-[color:var(--p-color-dark-info-hover)] focus:dark:text-[color:var(--p-color-dark-info-focus)] active:dark:text-[color:var(--p-color-dark-info-focus)]; } &--success { - @apply text-success dark:text-dark-success hover:text-[color:var(--p-color-success-hover)] hover:dark:text-[color:var(--p-color-dark-success-hover)] focus:text-[color:var(--p-color-success-focus)] focus:dark:text-[color:var(--p-color-dark-success-focus)] active:text-[color:var(--p-color-success-focus)] active:dark:text-[color:var(--p-color-dark-success-focus)]; + @apply text-success hover:text-[color:var(--p-color-success-hover)] focus:text-[color:var(--p-color-success-focus)] active:text-[color:var(--p-color-success-focus)]; + @apply dark:text-dark-success hover:dark:text-[color:var(--p-color-dark-success-hover)] focus:dark:text-[color:var(--p-color-dark-success-focus)] active:dark:text-[color:var(--p-color-dark-success-focus)]; } &--warning { - @apply text-warning dark:text-dark-warning hover:text-[color:var(--p-color-warning-hover)] hover:dark:text-[color:var(--p-color-dark-warning-hover)] focus:text-[color:var(--p-color-warning-focus)] focus:dark:text-[color:var(--p-color-dark-warning-focus)] active:text-[color:var(--p-color-warning-focus)] active:dark:text-[color:var(--p-color-dark-warning-focus)]; + @apply text-warning hover:text-[color:var(--p-color-warning-hover)] focus:text-[color:var(--p-color-warning-focus)] active:text-[color:var(--p-color-warning-focus)]; + @apply dark:text-dark-warning hover:dark:text-[color:var(--p-color-dark-warning-hover)] focus:dark:text-[color:var(--p-color-dark-warning-focus)] active:dark:text-[color:var(--p-color-dark-warning-focus)]; } &--danger { - @apply text-danger dark:text-dark-danger hover:text-[color:var(--p-color-danger-hover)] hover:dark:text-[color:var(--p-color-dark-danger-hover)] focus:text-[color:var(--p-color-danger-focus)] focus:dark:text-[color:var(--p-color-dark-danger-focus)] active:text-[color:var(--p-color-danger-focus)] active:dark:text-[color:var(--p-color-dark-danger-focus)]; + @apply text-danger hover:text-[color:var(--p-color-danger-hover)] focus:text-[color:var(--p-color-danger-focus)] active:text-[color:var(--p-color-danger-focus)]; + @apply dark:text-dark-danger hover:dark:text-[color:var(--p-color-dark-danger-hover)] focus:dark:text-[color:var(--p-color-dark-danger-focus)] active:dark:text-[color:var(--p-color-dark-danger-focus)]; } } } &&--variant-input { - @apply border border-solid border-muted dark:border-dark-muted text-subtle dark:text-dark-subtle font-normal bg-default dark:bg-dark-default hover:border-subtle hover:dark:border-dark-subtle focus:border-subtle focus:dark:border-dark-subtle active:outline-default active:dark:outline-dark-default; + @apply border border-solid border-muted text-subtle font-normal bg-default hover:border-subtle focus:border-subtle active:outline-default; + @apply dark:border-dark-muted dark:text-dark-subtle dark:bg-dark-default hover:dark:border-dark-subtle focus:dark:border-dark-subtle active:dark:outline-dark-default; .state--disabled & { - @apply bg-subtle dark:bg-dark-subtle border-muted dark:border-dark-muted pointer-events-none text-muted dark:text-dark-muted; + @apply bg-subtle border-muted pointer-events-none text-muted; + @apply dark:bg-dark-subtle dark:border-dark-muted dark:text-dark-muted; } .state--error & { - @apply border-danger-emphasis dark:border-dark-danger-emphasis; + @apply border-danger-emphasis; + @apply dark:border-dark-danger-emphasis; &:focus { - @apply ring-danger border-danger-emphasis dark:ring-dark-danger dark:border-dark-danger-emphasis; + @apply ring-danger border-danger-emphasis; + @apply dark:ring-dark-danger dark:border-dark-danger-emphasis; } } } diff --git a/src/components/button/index.md b/src/components/button/index.md index 8b25f69953..c01dc7d9fa 100644 --- a/src/components/button/index.md +++ b/src/components/button/index.md @@ -71,6 +71,7 @@ Button has 4 variants, `solid`, `outline`, `ghost`, `link`. Default is `solid` Click me Click me Click me + Click me diff --git a/src/components/calendar/Calendar.vue b/src/components/calendar/Calendar.vue index 0e934c209c..fda976c935 100644 --- a/src/components/calendar/Calendar.vue +++ b/src/components/calendar/Calendar.vue @@ -244,7 +244,8 @@ export default defineComponent({ diff --git a/src/components/checkbox/Checkbox.vue b/src/components/checkbox/Checkbox.vue index 9846ebced7..ff469ef561 100644 --- a/src/components/checkbox/Checkbox.vue +++ b/src/components/checkbox/Checkbox.vue @@ -161,10 +161,12 @@ export default defineComponent({ * with custom icon */ &__icon { - @apply w-5 h-5 border rounded-tn border-subtle dark:border-dark-subtle inline-flex items-center justify-center bg-default dark:bg-dark-default; + @apply w-5 h-5 border rounded-tn border-subtle inline-flex items-center justify-center bg-default; + @apply dark:border-dark-subtle dark:bg-dark-default; > svg { - @apply w-3 fill-default dark:fill-dark-default; + @apply w-3 fill-default; + @apply dark:fill-dark-default; } } @@ -176,7 +178,8 @@ export default defineComponent({ &.checkbox { &--checked { .card { - @apply border-info-emphasis dark:border-dark-info-emphasis; + @apply border-info-emphasis; + @apply dark:border-dark-info-emphasis; } } } @@ -194,7 +197,8 @@ export default defineComponent({ * give color of checkbox label */ &__label { - @apply text-default dark:text-dark-default; + @apply text-default; + @apply dark:text-dark-default; } /** @@ -204,10 +208,12 @@ export default defineComponent({ &--checked, &--indeterminate { .checkbox__icon { - @apply bg-info-emphasis dark:bg-dark-info-emphasis border-info-emphasis dark:border-dark-info-emphasis; + @apply bg-info-emphasis border-info-emphasis; + @apply dark:bg-dark-info-emphasis dark:border-dark-info-emphasis; > svg { - @apply fill-default dark:fill-dark-inverse; + @apply fill-default; + @apply dark:fill-dark-inverse; } } } @@ -220,10 +226,12 @@ export default defineComponent({ &:not(.checkbox--checked, .checkbox--indeterminate) { .checkbox__icon { - @apply bg-subtle dark:bg-dark-subtle border-subtle dark:border-dark-subtle; + @apply bg-subtle border-subtle; + @apply dark:bg-dark-subtle dark:border-dark-subtle; > svg { - @apply fill-subtle dark:fill-dark-subtle; + @apply fill-subtle; + @apply dark:fill-dark-subtle; } } } @@ -250,7 +258,8 @@ export default defineComponent({ &:hover, &:focus-visible { - @apply bg-subtle dark:bg-dark-subtle; + @apply bg-subtle; + @apply dark:bg-dark-subtle; } } } diff --git a/src/components/collapse/Collapse.vue b/src/components/collapse/Collapse.vue index 6273ff0b9d..0aef4e2122 100644 --- a/src/components/collapse/Collapse.vue +++ b/src/components/collapse/Collapse.vue @@ -86,7 +86,8 @@ export default defineComponent({ diff --git a/src/components/dot/Dot.vue b/src/components/dot/Dot.vue index 940c2a9f9c..09283b08e4 100644 --- a/src/components/dot/Dot.vue +++ b/src/components/dot/Dot.vue @@ -69,27 +69,33 @@ export default defineComponent({ * warning & danger */ &&--default { - @apply bg-inverse dark:bg-dark-inverse; + @apply bg-inverse; + @apply dark:bg-dark-inverse; } &&--primary { - @apply bg-brand-accent dark:bg-dark-brand-accent; + @apply bg-brand-accent; + @apply dark:bg-dark-brand-accent; } &&--info { - @apply bg-info-emphasis dark:bg-dark-info-emphasis; + @apply bg-info-emphasis; + @apply dark:bg-dark-info-emphasis; } &&--success { - @apply bg-success-emphasis dark:bg-dark-success-emphasis; + @apply bg-success-emphasis; + @apply dark:bg-dark-success-emphasis; } &&--warning { - @apply bg-warning-emphasis dark:bg-dark-warning-emphasis; + @apply bg-warning-emphasis; + @apply dark:bg-dark-warning-emphasis; } &&--danger { - @apply bg-danger-emphasis dark:bg-dark-danger-emphasis; + @apply bg-danger-emphasis; + @apply dark:bg-dark-danger-emphasis; } /** diff --git a/src/components/dropdown/Dropdown.vue b/src/components/dropdown/Dropdown.vue index cd6770fb5a..8145b445ac 100644 --- a/src/components/dropdown/Dropdown.vue +++ b/src/components/dropdown/Dropdown.vue @@ -287,7 +287,8 @@ export default defineComponent({ @apply relative inline-flex; &__menu { - @apply max-h-64 border rounded w-full min-w-[15rem] bg-default dark:bg-dark-default z-10 border-default dark:border-dark-default shadow-xl overflow-x-hidden overflow-y-auto absolute; + @apply max-h-64 border rounded w-full min-w-[15rem] bg-default z-10 border-default shadow-xl overflow-x-hidden overflow-y-auto absolute; + @apply dark:bg-dark-default dark:border-dark-default; &__container { > .dropdown__item { @@ -312,7 +313,8 @@ export default defineComponent({ .dropdown { &__menu { :where(.checkbox, .radio, .dropdown__item) { - @apply border-b border-solid border-b-subtle-alpha dark:border-b-dark-subtle-alpha last:border-b-0; + @apply border-b border-solid border-b-subtle-alpha last:border-b-0; + @apply dark:border-b-dark-subtle-alpha; } } } diff --git a/src/components/dropdown/DropdownItem.vue b/src/components/dropdown/DropdownItem.vue index 1e055ac6c7..18a688ce61 100644 --- a/src/components/dropdown/DropdownItem.vue +++ b/src/components/dropdown/DropdownItem.vue @@ -72,19 +72,23 @@ export default defineComponent({ diff --git a/src/components/filterbar/Filterbar.vue b/src/components/filterbar/Filterbar.vue index 417af4c076..0c069288e8 100644 --- a/src/components/filterbar/Filterbar.vue +++ b/src/components/filterbar/Filterbar.vue @@ -104,6 +104,7 @@ export default defineComponent({ &.btn--default, & .dropdown__activator.btn--default { @apply bg-inverse text-on-emphasis border-inverse; + @apply dark:bg-dark-inverse dark:text-dark-on-emphasis dark:border-dark-inverse; } } } diff --git a/src/components/form-group/FormGroup.vue b/src/components/form-group/FormGroup.vue index b9f095edf0..7f438bfe54 100644 --- a/src/components/form-group/FormGroup.vue +++ b/src/components/form-group/FormGroup.vue @@ -85,23 +85,28 @@ export default defineComponent({ @apply flex flex-col mb-4; &__label { - @apply font-bold text-xs mb-2 relative; + @apply font-bold text-xs mb-2 relative text-default; + @apply dark:text-dark-default; > sup { @apply text-danger; + @apply dark:text-dark-danger; } } & > &__description { @apply text-xs my-2 text-subtle; + @apply dark:text-dark-subtle; } & > &__error { - @apply text-xs text-danger my-2; + @apply text-xs text-danger; + @apply dark:text-dark-danger my-2; } &__hint { @apply absolute bottom-0 right-0 text-info cursor-pointer focus:outline-none; + @apply dark:text-dark-info; } } diff --git a/src/components/heading/Heading.vue b/src/components/heading/Heading.vue index db2fee37e4..ffeb322b8e 100644 --- a/src/components/heading/Heading.vue +++ b/src/components/heading/Heading.vue @@ -89,7 +89,8 @@ export default defineComponent({ */ :where(&--normal, &--medium, &--bold) { - @apply text-default dark:text-dark-default; + @apply text-default; + @apply dark:text-dark-default; } &--normal { diff --git a/src/components/input-file/InputFile.vue b/src/components/input-file/InputFile.vue index 2bacd71628..de28bffb14 100644 --- a/src/components/input-file/InputFile.vue +++ b/src/components/input-file/InputFile.vue @@ -186,6 +186,7 @@ export default defineComponent({ .input-group__addon, .input-group .input__form { @apply bg-subtle text-muted; + @apply dark:bg-dark-subtle dark:text-dark-muted; } .input-group__addon { @@ -201,6 +202,7 @@ export default defineComponent({ .input-group__addon, .input-group .input__form { @apply border-subtle; + @apply dark:border-dark-subtle; } } @@ -214,6 +216,7 @@ export default defineComponent({ .input-group__addon, .input-group .input__form { @apply border-danger-emphasis; + @apply dark:border-dark-danger-emphasis; } } } diff --git a/src/components/input-group/InputGroup.vue b/src/components/input-group/InputGroup.vue index fb6f7b92cd..328080e434 100644 --- a/src/components/input-group/InputGroup.vue +++ b/src/components/input-group/InputGroup.vue @@ -70,9 +70,11 @@ export default defineComponent({ &:has(:first-child:is(.input-group__addon):nth-last-child(2)) { @apply rounded bg-default focus-within:ring-4 focus-within:ring-subtle/10 border border-solid border-muted hover:border-subtle focus-within:border-subtle; + @apply dark:bg-dark-default focus-within:dark:ring-dark-subtle/10 dark:border-dark-muted hover:dark:border-dark-subtle focus-within:dark:border-dark-subtle; .input { @apply bg-transparent; + @apply dark:bg-transparent; } .input > .input__form, @@ -86,11 +88,13 @@ export default defineComponent({ &.input-group--disabled { @apply border-subtle; + @apply dark:border-dark-subtle; } &.state--error, &.input-group--error { @apply border-danger-emphasis hover:border-danger-emphasis focus-within:ring-danger focus-within:border-danger-emphasis; + @apply dark:border-dark-danger-emphasis hover:dark:border-dark-danger-emphasis focus-within:dark:ring-dark-danger focus-within:dark:border-dark-danger-emphasis; } } @@ -98,11 +102,13 @@ export default defineComponent({ & > .input:not(:first-child) > .input__form, & > .select:not(:first-child) > .input > .input__form { @apply rounded-l-none border-l-transparent; + @apply dark:border-l-transparent; } & > .input-group__addon:not(:last-child), & > .input:not(:last-child) > .input__form { @apply rounded-r-none border-r-transparent; + @apply dark:border-r-transparent; } & > .select:not(:last-child) > .input > .input__form { @@ -134,6 +140,7 @@ export default defineComponent({ &:hover, &:focus { @apply z-[2] border-l-subtle border-r-subtle; + @apply dark:border-l-dark-subtle dark:border-r-dark-subtle; } } } @@ -152,10 +159,13 @@ export default defineComponent({ &&--disabled { @apply border-subtle border-solid border rounded; + @apply dark:border-dark-subtle; > .input > .input__form, - > .input-group__addon { + > .input-group__addon, + > .btn.btn--variant-input { @apply border-transparent; + @apply dark:border-transparent; } > .input:first-child .input__form, diff --git a/src/components/input-group/InputGroupAddon.vue b/src/components/input-group/InputGroupAddon.vue index 79c2a7b420..8a30cf7957 100644 --- a/src/components/input-group/InputGroupAddon.vue +++ b/src/components/input-group/InputGroupAddon.vue @@ -8,6 +8,7 @@ .input-group { &__addon { @apply flex px-3 items-center rounded border border-solid border-muted outline-none text-muted bg-default; + @apply dark:border-dark-muted dark:text-dark-muted dark:bg-dark-default; .input-group--xs > & { @apply text-sm py-[2px]; @@ -28,11 +29,13 @@ .state--error &, .input-group--error & { @apply border-danger-emphasis focus:ring-danger focus:border-danger-emphasis; + @apply dark:border-dark-danger-emphasis focus:dark:ring-dark-danger focus:dark:border-dark-danger-emphasis; } .state--disabled &, .input-group--disabled & { @apply bg-subtle border-subtle pointer-events-none text-muted; + @apply dark:bg-dark-subtle dark:border-dark-subtle dark:text-dark-muted; } } } diff --git a/src/components/input-group/index.md b/src/components/input-group/index.md index 593b888a45..7a5a2bfcba 100644 --- a/src/components/input-group/index.md +++ b/src/components/input-group/index.md @@ -99,7 +99,7 @@ description: Combine multiple input in singleline. ### Input and Select - + diff --git a/src/components/input-password/InputPassword.vue b/src/components/input-password/InputPassword.vue index f2d911a3f6..b7faddff11 100644 --- a/src/components/input-password/InputPassword.vue +++ b/src/components/input-password/InputPassword.vue @@ -48,9 +48,11 @@ export default defineComponent({ &__toggle { @apply absolute right-3 top-1/2 -translate-y-1/2 cursor-pointer z-1 text-default/30 hover:text-subtle; + @apply dark:text-dark-default/30 hover:dark:text-dark-subtle; .input--disabled ~ & { @apply pointer-events-none text-muted; + @apply dark:text-dark-muted; } } diff --git a/src/components/input-pin/index.md b/src/components/input-pin/index.md index f2fb4a35cd..fffef5121f 100644 --- a/src/components/input-pin/index.md +++ b/src/components/input-pin/index.md @@ -94,8 +94,6 @@ Like other input, input value can be binding with `v-model`. ``` -## Binding v-model - ## API ### Props diff --git a/src/components/input-range/InputRange.vue b/src/components/input-range/InputRange.vue index 1485fd6749..08e925bc8d 100644 --- a/src/components/input-range/InputRange.vue +++ b/src/components/input-range/InputRange.vue @@ -276,6 +276,7 @@ export default defineComponent({ &__tracks { @apply relative flex w-full bg-base cursor-pointer overflow-visible rounded; + @apply dark:bg-dark-base; } &__track { @@ -283,6 +284,7 @@ export default defineComponent({ &-active { @apply bg-info-emphasis relative text-center; + @apply dark:bg-dark-info-emphasis; } &-upper { @@ -291,12 +293,13 @@ export default defineComponent({ } &__thumb { - @apply w-4 h-4 rounded-full bg-default shadow-sm absolute top-1/2 bottom-0 -translate-y-1/2 border border-muted; - @apply touch-none select-none; + @apply w-4 h-4 rounded-full bg-default shadow-sm absolute top-1/2 bottom-0 -translate-y-1/2 border border-muted touch-none select-none; + @apply dark:bg-dark-default dark:border-dark-muted; &:hover, &:active { @apply ring ring-info border-info-emphasis; + @apply dark:ring-dark-info dark:border-dark-info-emphasis; } &-start { diff --git a/src/components/input/Input.vue b/src/components/input/Input.vue index ce84603aee..b853536b70 100644 --- a/src/components/input/Input.vue +++ b/src/components/input/Input.vue @@ -114,18 +114,22 @@ export default defineComponent({ diff --git a/src/components/modal/Modal.vue b/src/components/modal/Modal.vue index e28c12498d..984e59a3b1 100644 --- a/src/components/modal/Modal.vue +++ b/src/components/modal/Modal.vue @@ -197,7 +197,8 @@ export default defineComponent({ /** * Set modal backdrop */ - @apply w-full h-full overflow-y-auto fixed left-0 top-0 bg-inverse/30 z-[1060] overscroll-contain; + @apply z-[var(--p-modal-z-index)] w-full h-full overflow-y-auto fixed left-0 top-0 bg-inverse/30 text-default overscroll-contain; + @apply dark:bg-dark-inverse/30 dark:text-dark-default; &--banner { .modal { @@ -221,9 +222,11 @@ export default defineComponent({ */ &__content { @apply my-8 bg-default rounded relative shadow-2xl; + @apply dark:bg-dark-default; .modal__dismiss { @apply absolute top-6 right-6 mt-1.5 hover:cursor-pointer z-[var(--p-modal-dismiss-z-index)] text-default/30 hover:text-default/50; + @apply dark:text-dark-default/30 hover:dark:text-dark-default/50; } } diff --git a/src/components/nav/Nav.vue b/src/components/nav/Nav.vue index 6c5438a590..39e2acc268 100644 --- a/src/components/nav/Nav.vue +++ b/src/components/nav/Nav.vue @@ -110,15 +110,18 @@ export default defineComponent({ & > &__item { .nav__link { - @apply text-subtle dark:text-muted; + @apply text-subtle; + @apply dark:text-dark-subtle; &:hover, &--active { - @apply text-default dark:text-on-emphasis; + @apply text-default; + @apply dark:text-dark-default; } &--disabled { @apply text-muted hover:text-muted focus:text-muted active:text-muted; + @apply dark:text-dark-muted hover:dark:text-dark-muted focus:dark:text-dark-muted active:dark:text-dark-muted; } } } @@ -142,7 +145,8 @@ export default defineComponent({ .nav__link { &--active { &:not(.nav__link--disabled) { - @apply border-b-inverse dark:border-b-default; + @apply border-b-inverse; + @apply dark:border-b-dark-inverse; } } } @@ -158,6 +162,7 @@ export default defineComponent({ &--active { &:not(.nav__link--disabled) { @apply border-r border-r-inverse rounded-tr-none; + @apply dark:border-r-dark-inverse; } } } @@ -169,6 +174,7 @@ export default defineComponent({ &--active { &:not(.nav__link--disabled) { @apply border-l border-l-inverse rounded-tl-none; + @apply dark:border-l-dark-inverse; } } } @@ -190,6 +196,7 @@ export default defineComponent({ &--active { &:not(.nav__link--disabled) { @apply border-t-default border-x-default bg-base; + @apply dark:border-t-dark-default dark:border-x-dark-default dark:bg-dark-base; } } } @@ -203,6 +210,7 @@ export default defineComponent({ &--active { &:not(.nav__link--disabled) { @apply border-l-default border-y-default border-r-transparent bg-base rounded-l rounded-r-none; + @apply dark:border-l-dark-default dark:border-y-dark-default dark:border-r-transparent dark:bg-dark-base; } } } @@ -212,6 +220,7 @@ export default defineComponent({ &--active { &:not(.nav__link--disabled) { @apply border-r-default border-y-default border-l-transparent rounded-r rounded-l-none; + @apply dark:border-r-dark-default dark:border-y-dark-default dark:border-l-transparent; } } } @@ -233,7 +242,8 @@ export default defineComponent({ .nav__link { &--active { &:not(.nav__link--disabled) { - @apply bg-base dark:bg-dark-default-alpha rounded-b; + @apply bg-base rounded-b; + @apply dark:bg-dark-base; } } } @@ -247,6 +257,7 @@ export default defineComponent({ .nav__link { &--active { @apply bg-transparent; + @apply dark:bg-transparent; } } } @@ -316,6 +327,10 @@ export default defineComponent({ .nav { @apply flex-col; + .nav__item { + @apply first:mx-0; + } + &__link { @apply mb-0 -mr-[1px]; } @@ -348,6 +363,7 @@ export default defineComponent({ .caption { @apply text-subtle; + @apply dark:text-dark-subtle; } } } diff --git a/src/components/nav/NavItem.vue b/src/components/nav/NavItem.vue index df9d939d25..48fc7eebdf 100644 --- a/src/components/nav/NavItem.vue +++ b/src/components/nav/NavItem.vue @@ -121,9 +121,11 @@ export default defineComponent({ &__link { @apply block py-[10px] px-3 -mb-[1px] border border-transparent rounded-t text-base font-normal cursor-pointer hover:no-underline text-subtle hover:text-default; + @apply dark:text-dark-subtle hover:dark:text-dark-default; &&--active { @apply text-default cursor-default; + @apply dark:text-dark-default; } &&--disabled { diff --git a/src/components/nav/NavSubItem.vue b/src/components/nav/NavSubItem.vue index 22737b7c70..ffedd7be74 100644 --- a/src/components/nav/NavSubItem.vue +++ b/src/components/nav/NavSubItem.vue @@ -86,6 +86,7 @@ export default defineComponent({ * will disabled too */ @apply block text-base text-muted; + @apply dark:text-dark-muted; &&--collapsible { /** @@ -95,6 +96,7 @@ export default defineComponent({ */ .nav__subitem__parent { @apply cursor-pointer text-default relative; + @apply dark:text-dark-default; } .nav__link__caret { @@ -152,6 +154,7 @@ export default defineComponent({ &:has(ul > li:not(.nav__item--disabled)) { .nav__subitem__parent { @apply text-default; + @apply dark:text-dark-default; } } @@ -163,6 +166,7 @@ export default defineComponent({ &:is(&--collapsible&--collapsed):has(ul > li:not(.nav__item--disabled)) { .nav__subitem__parent { @apply text-subtle hover:text-default; + @apply dark:text-dark-subtle hover:dark:text-dark-default; } } } diff --git a/src/components/nav/index.md b/src/components/nav/index.md index 9a5d2e9786..86951d99b3 100644 --- a/src/components/nav/index.md +++ b/src/components/nav/index.md @@ -253,21 +253,21 @@ To align Navigation, use `align` prop. Available value are `left`, `right` and ` ### Badge - To Sign 25 - To Review 25 + To Sign 25 + To Review 25 - To Sign 25 + To Sign 25 - To Review 25 + To Review 25 @@ -277,11 +277,11 @@ To align Navigation, use `align` prop. Available value are `left`, `right` and ` To Sign - 25 + 25 To Review - 25 + 25 @@ -289,13 +289,13 @@ To align Navigation, use `align` prop. Available value are `left`, `right` and ` - To Sign 25 + To Sign 25 - To Review 25 + To Review 25 diff --git a/src/components/navbar/Navbar.vue b/src/components/navbar/Navbar.vue index 5a0d95eca5..57f5873f7e 100644 --- a/src/components/navbar/Navbar.vue +++ b/src/components/navbar/Navbar.vue @@ -95,10 +95,13 @@ export default defineComponent({ diff --git a/src/components/pdf-object/PdfObjectDebugger.vue b/src/components/pdf-object/PdfObjectDebugger.vue index e56830438d..7228a8a190 100644 --- a/src/components/pdf-object/PdfObjectDebugger.vue +++ b/src/components/pdf-object/PdfObjectDebugger.vue @@ -73,6 +73,7 @@ export default defineComponent({ &__debugger { @apply grid grid-cols-1 p-4 bg-inverse text-on-emphasis absolute rounded w-[var(--p-pdf-debugger-size)]; + @apply dark:bg-dark-inverse dark:text-dark-on-emphasis; > pre { @apply truncate; diff --git a/src/components/pdf-viewer/PdfError.vue b/src/components/pdf-viewer/PdfError.vue index 0310682227..f89c667b86 100644 --- a/src/components/pdf-viewer/PdfError.vue +++ b/src/components/pdf-viewer/PdfError.vue @@ -3,9 +3,9 @@ v-p-aspect-ratio="1122/793" data-testid="pdf-error" class="pdf__error"> -

+ Failed to load PDF -

+
URL:
@@ -31,9 +31,11 @@ import type * as PDFJS from 'pdfjs-dist' import { pAspectRatio } from '../aspect-ratio' import { defineComponent, PropType } from 'vue-demi' +import Heading from '../heading/Heading.vue' export default defineComponent({ directives: { pAspectRatio }, + components: { Heading }, props : { url: { type : String, @@ -56,6 +58,21 @@ export default defineComponent({ diff --git a/src/components/pdf-viewer/PdfLoading.vue b/src/components/pdf-viewer/PdfLoading.vue index 05a80fafd2..9745b1636e 100644 --- a/src/components/pdf-viewer/PdfLoading.vue +++ b/src/components/pdf-viewer/PdfLoading.vue @@ -23,6 +23,7 @@ export default defineComponent({ diff --git a/src/components/progress/Progress.vue b/src/components/progress/Progress.vue index b1e73f2374..08dfa72b5c 100644 --- a/src/components/progress/Progress.vue +++ b/src/components/progress/Progress.vue @@ -95,6 +95,11 @@ export default defineComponent({