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 @@