From 37fdd251bdc223ff149c0f75b0ffdb045a30f034 Mon Sep 17 00:00:00 2001 From: clkim Date: Thu, 22 Jan 2026 14:14:59 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat.[SWV-812]=20=EA=B3=B5=ED=86=B5=20?= =?UTF-8?q?=EB=A6=AC=EC=86=8C=EC=8A=A4=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=20=EB=B0=A9=EC=8B=9D=20=EB=B3=80=EA=B2=BD(vi?= =?UTF-8?q?deoPlay,=20Arrow)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/app.vue | 2 +- layers/assets/css/components/_splide.css | 4 --- layers/components/atoms/Button/Play.vue | 11 +++++-- layers/components/atoms/Select.vue | 8 ++--- .../atoms/icons/ArrowControlTopLine.vue | 31 ++++++++++++++++++ .../components/atoms/icons/ArrowRightFill.vue | 30 +++++++++++++++++ .../atoms/icons/SelectArrowDownFill.vue | 26 --------------- layers/components/blocks/Button/Launcher.vue | 8 ++--- layers/components/blocks/Button/ScrollTop.vue | 4 ++- .../components/blocks/Button/SlideArrows.vue | 17 ++++++++-- layers/components/blocks/DatePicker.vue | 2 +- layers/components/blocks/Pagination.vue | 2 +- layers/components/widgets/VideoPlay.vue | 5 +++ layers/server/middleware/gameData.ts | 12 ++++--- layers/stores/useGameDataStore.ts | 6 ++-- layers/templates/FxDownload01/index.vue | 2 +- layers/templates/FxVideo01/index.vue | 29 +++++++--------- layers/templates/GrGallery01/index.vue | 4 +++ layers/types/api/gameData.ts | 2 +- layers/types/api/pageData.ts | 16 ++++----- layers/utils/styleUtil.ts | 2 +- .../{ => btn_launcher}/btn_logo-app.svg | 0 .../{ => btn_launcher}/btn_logo-google.svg | 0 .../common/{ => btn_launcher}/btn_logo-pc.svg | 0 .../{ => btn_launcher}/btn_logo-stove.svg | 0 .../images/common/btn_system_arrow_next.png | Bin 1543 -> 0 bytes .../images/common/btn_system_arrow_prev.png | Bin 1530 -> 0 bytes .../Type-AMD.svg | 0 .../Type-DirectX.svg | 0 .../Type-NVIDIA.svg | 0 .../Type-Visual.svg | 0 .../Type-intel.svg | 0 32 files changed, 139 insertions(+), 84 deletions(-) create mode 100644 layers/components/atoms/icons/ArrowControlTopLine.vue create mode 100644 layers/components/atoms/icons/ArrowRightFill.vue delete mode 100644 layers/components/atoms/icons/SelectArrowDownFill.vue rename public/images/common/{ => btn_launcher}/btn_logo-app.svg (100%) rename public/images/common/{ => btn_launcher}/btn_logo-google.svg (100%) rename public/images/common/{ => btn_launcher}/btn_logo-pc.svg (100%) rename public/images/common/{ => btn_launcher}/btn_logo-stove.svg (100%) delete mode 100644 public/images/common/btn_system_arrow_next.png delete mode 100644 public/images/common/btn_system_arrow_prev.png rename public/images/common/{grades_driver => download_driver}/Type-AMD.svg (100%) rename public/images/common/{grades_driver => download_driver}/Type-DirectX.svg (100%) rename public/images/common/{grades_driver => download_driver}/Type-NVIDIA.svg (100%) rename public/images/common/{grades_driver => download_driver}/Type-Visual.svg (100%) rename public/images/common/{grades_driver => download_driver}/Type-intel.svg (100%) diff --git a/app/app.vue b/app/app.vue index 7731032..91e3e28 100644 --- a/app/app.vue +++ b/app/app.vue @@ -96,7 +96,7 @@ const setupGameHead = (data: GameDataValue) => { const designTheme = data.design_theme === 1 ? 'light' : 'dark' const styleLinks = createStyleLinks( data.favicon_json, - data?.game_font?.font_path + data?.game_font_key_json?.font_path ) const styleCss = createStyleCss(data.key_color_json) diff --git a/layers/assets/css/components/_splide.css b/layers/assets/css/components/_splide.css index 1494a8a..8c1c71d 100644 --- a/layers/assets/css/components/_splide.css +++ b/layers/assets/css/components/_splide.css @@ -38,8 +38,4 @@ .type-full .splide__arrow--next { @apply right-10; } - - .splide-arrow svg { - @apply hidden; - } } diff --git a/layers/components/atoms/Button/Play.vue b/layers/components/atoms/Button/Play.vue index 3c1ae77..eedc27d 100644 --- a/layers/components/atoms/Button/Play.vue +++ b/layers/components/atoms/Button/Play.vue @@ -2,6 +2,7 @@ import type { TrackingObject } from '#layers/types/api/common' interface Props { + bgColor?: string tracking: TrackingObject } @@ -16,14 +17,20 @@ const handlePlayClick = () => { diff --git a/layers/components/atoms/Button/Play.vue b/layers/components/atoms/Button/Play.vue index eedc27d..946a705 100644 --- a/layers/components/atoms/Button/Play.vue +++ b/layers/components/atoms/Button/Play.vue @@ -22,7 +22,9 @@ const handlePlayClick = () => { :style="{ backgroundColor: props.bgColor }" @click="handlePlayClick" > - + + + Play @@ -34,4 +36,10 @@ const handlePlayClick = () => { after:content-[''] after:absolute after:top-0 after:left-0 after:w-full after:h-full after:bg-white after:rounded-[50%] after:opacity-0 after:transition-opacity after:duration-300 after:ease-in-out hover:after:opacity-10; } +.btn-play:hover .icon { + @apply scale-[1.08]; +} +.icon { + @apply transition-transform duration-300 ease-spring; +} diff --git a/layers/components/atoms/Button/index.vue b/layers/components/atoms/Button/index.vue index 07b8b7c..146ead8 100644 --- a/layers/components/atoms/Button/index.vue +++ b/layers/components/atoms/Button/index.vue @@ -29,7 +29,7 @@ const componentTag = computed((): string => { case 'download': return props.href ? 'a' : 'button' case 'internal': - return 'AtomsLocaleLink' + return props.href ? 'AtomsLocaleLink' : 'button' default: return 'button' } @@ -49,9 +49,12 @@ const componentProps = computed(() => { } if (props.type === 'internal') { - return { - to: props.href, + if (props.href) { + return { + to: props.href, + } } + return {} } if (props.type === 'download') { @@ -87,17 +90,17 @@ const componentProps = computed(() => { @@ -121,6 +124,18 @@ const componentProps = computed(() => { @apply before:border-[rgba(0,0,0,0.1)] hover:before:border-[#999]; } +.icon { + @apply transition-transform duration-300 ease-spring; +} +.btn-base:hover .icon-internal { + @apply translate-x-[3px]; +} +.btn-base:hover .icon-external { + @apply scale-[1.08]; +} +.btn-base:hover .icon-download { + @apply translate-y-[3px]; +} .btn-base.disabled .btn-content { @apply opacity-50; diff --git a/layers/components/blocks/Button/Home.vue b/layers/components/blocks/Button/Home.vue index bad5983..cfd9293 100644 --- a/layers/components/blocks/Button/Home.vue +++ b/layers/components/blocks/Button/Home.vue @@ -31,4 +31,7 @@ const analytics = { @apply fixed top-3 right-3 mt-[calc(var(--scroll-position,48px)+48px)] bg-black/20 shadow-[0_1.667px_3.333px_0_rgba(0,0,0,0.06)] backdrop-blur-[12.5px] z-[100] sm:top-5 md:top-6 md:right-8 md:mt-[calc(var(--scroll-position,64px)+64px)]; } +.btn-home:hover :deep(.icon) { + @apply scale-[1.08]; +} diff --git a/layers/components/blocks/Button/ScrollTop.vue b/layers/components/blocks/Button/ScrollTop.vue index 94fef90..7e73f0d 100644 --- a/layers/components/blocks/Button/ScrollTop.vue +++ b/layers/components/blocks/Button/ScrollTop.vue @@ -36,4 +36,7 @@ const handleScrollToTop = () => { .btn-top { @apply bg-[image:var(--button-top)] bg-center bg-cover bg-no-repeat; } +.btn-top:hover :deep(.icon) { + @apply -translate-y-[3px]; +} diff --git a/layers/components/blocks/Button/SlideArrows.vue b/layers/components/blocks/Button/SlideArrows.vue index b96e7a9..9acdba9 100644 --- a/layers/components/blocks/Button/SlideArrows.vue +++ b/layers/components/blocks/Button/SlideArrows.vue @@ -45,3 +45,13 @@ const handleArrowClick = (direction: 'prev' | 'next') => { + + diff --git a/layers/components/layouts/EventNavigation.vue b/layers/components/layouts/EventNavigation.vue index d6120a8..f023273 100644 --- a/layers/components/layouts/EventNavigation.vue +++ b/layers/components/layouts/EventNavigation.vue @@ -9,6 +9,7 @@ const { locale } = useI18n() const { sendLog } = useAnalytics() const gameDomain = getGameDomain() + const analytics = { action_type: 'click', click_sarea: 'EventNavigation', @@ -132,6 +133,9 @@ onMounted(async () => { @apply absolute top-3 right-[-40px] bg-black/20 shadow-[0_1.667px_3.333px_0_rgba(0,0,0,0.06)] backdrop-blur-[12.5px] rotate-180 sm:top-5 md:top-6 md:right-[-48px]; } +.btn-control:hover :deep(.icon) { + @apply translate-x-[3px]; +} .event-navigation.is-closed { @apply translate-x-[calc(-100%+20px)] sm:translate-x-[calc(-100%+40px)]; diff --git a/layers/components/widgets/ButtonList.vue b/layers/components/widgets/ButtonList.vue index faf9e51..ab5b7ee 100644 --- a/layers/components/widgets/ButtonList.vue +++ b/layers/components/widgets/ButtonList.vue @@ -122,7 +122,8 @@ const handleButtonClick = (button: PageDataResourceGroup) => {