From acea3418e3bea3c6a1689ab9a8677196939cdd69 Mon Sep 17 00:00:00 2001 From: clkim Date: Thu, 25 Sep 2025 18:28:02 +0900 Subject: [PATCH] =?UTF-8?q?fix.=20=EB=B2=84=ED=8A=BC=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=20=EB=A7=81=ED=81=AC=20=EC=A0=81=EC=9A=A9,?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layers/assets/css/components/_button.css | 56 +++++------- layers/components/atoms/Button/index.vue | 101 ++++++++++----------- layers/components/blocks/HybridLink.vue | 32 ++++--- layers/components/blocks/VisualContent.vue | 34 +------ layers/components/widgets/Background.vue | 1 - layers/components/widgets/ButtonList.vue | 66 +++++++++++--- layers/types/api/pageData.ts | 22 ++--- layers/types/components/button.ts | 10 +- layers/utils/dataUtil.ts | 78 ---------------- layers/utils/styleUtil.ts | 82 +++++++++++++++++ 10 files changed, 247 insertions(+), 235 deletions(-) create mode 100644 layers/utils/styleUtil.ts diff --git a/layers/assets/css/components/_button.css b/layers/assets/css/components/_button.css index 669f90b..a28dfbc 100644 --- a/layers/assets/css/components/_button.css +++ b/layers/assets/css/components/_button.css @@ -1,44 +1,34 @@ /* Button Size Classes */ @layer components { .btn-base { - @apply relative inline-flex items-center justify-center font-medium border border-gray-600/30 overflow-hidden; + @apply overflow-hidden relative inline-flex items-center justify-center font-medium cursor-pointer + before:content-[''] before:absolute before:top-0 before:left-0 before:w-full before:h-full before:border before:border-white/10 before:rounded-lg + after:content-[''] after:absolute after:top-0 after:left-0 after:w-full after:h-full after:bg-white after:rounded-lg after:transition-opacity after:duration-300 after:ease-in-out after:opacity-0 /* 기본 크기: size-medium */ - --btn-padding: theme('spacing.10'); - --btn-height: theme('spacing.14'); - --btn-text: theme('fontSize.base'); - --btn-radius: theme('borderRadius.lg'); - @apply px-10 h-14 text-base rounded-lg; + px-10 h-14 text-base rounded-lg; } - - .size-extra-small { - --btn-padding: theme('spacing.6'); - --btn-height: theme('spacing.10'); - --btn-text: theme('fontSize.sm'); - --btn-radius: theme('borderRadius.DEFAULT'); - @apply px-6 h-10 text-sm rounded; + .btn-base:hover { + @apply after:opacity-20; } - - .size-small { - --btn-padding: theme('spacing.10'); - --btn-height: theme('spacing.12'); - --btn-text: theme('fontSize.sm'); - --btn-radius: theme('borderRadius.lg'); - @apply px-10 h-12 text-sm rounded-lg; - } - - .size-medium { - --btn-padding: theme('spacing.10'); - --btn-height: theme('spacing.14'); - --btn-text: theme('fontSize.base'); - --btn-radius: theme('borderRadius.lg'); - @apply px-10 h-14 text-base rounded-lg; + .btn-base:disabled { + @apply cursor-default + after:bg-[var(--text-color)] after:opacity-20 after:z-[2]; } .size-large { - --btn-padding: theme('spacing.10'); - --btn-height: theme('spacing.16'); - --btn-text: theme('fontSize.lg'); - --btn-radius: theme('borderRadius.lg'); - @apply px-10 h-16 text-lg rounded-lg; + @apply px-10 h-16 text-lg; + } + + .size-medium { + @apply px-10 h-14 text-base; + } + + .size-small { + @apply px-10 h-12 text-sm; + } + + .size-extra-small { + @apply before:rounded after:rounded + px-6 h-10 text-sm rounded; } } diff --git a/layers/components/atoms/Button/index.vue b/layers/components/atoms/Button/index.vue index 1b5beb6..5c28912 100644 --- a/layers/components/atoms/Button/index.vue +++ b/layers/components/atoms/Button/index.vue @@ -1,45 +1,34 @@ diff --git a/layers/components/blocks/HybridLink.vue b/layers/components/blocks/HybridLink.vue index ea8f1fc..a20ac02 100644 --- a/layers/components/blocks/HybridLink.vue +++ b/layers/components/blocks/HybridLink.vue @@ -9,19 +9,29 @@ const props = withDefaults(defineProps(), { target: '', class: '', }) + +const componentTag = computed(() => { + return props.target === '_blank' ? 'a' : 'AtomsLocaleLink' +}) + +const componentProps = computed(() => { + if (props.target === '_blank') { + return { + href: props.to, + target: props.target, + class: props.class, + } + } + + return { + to: props.to, + class: props.class, + } +}) diff --git a/layers/components/blocks/VisualContent.vue b/layers/components/blocks/VisualContent.vue index a4c461d..c464952 100644 --- a/layers/components/blocks/VisualContent.vue +++ b/layers/components/blocks/VisualContent.vue @@ -1,5 +1,4 @@