From 1a4c6b684dcca78610cc823b06addf77fb4827c1 Mon Sep 17 00:00:00 2001 From: clkim Date: Thu, 18 Sep 2025 15:18:53 +0900 Subject: [PATCH] =?UTF-8?q?feat.=20videoPlay=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=20=EC=A0=9C=EC=9E=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/app.vue | 13 +- layers/assets/css/base/_reset.css | 8 ++ layers/components/atoms/Button.vue | 2 +- layers/components/atoms/icons/ArrowDown.vue | 1 + layers/components/atoms/icons/Close.vue | 29 ++++ layers/components/atoms/icons/LinkOut.vue | 1 + layers/components/blocks/modal/YouTube.vue | 124 +++++++---------- layers/components/widgets/VideoPlay.vue | 29 +--- layers/stores/useModalStore.ts | 142 ++++++++++++++++++++ layers/stores/useScrollStore.ts | 36 +++++ 10 files changed, 282 insertions(+), 103 deletions(-) create mode 100644 layers/components/atoms/icons/Close.vue create mode 100644 layers/stores/useModalStore.ts create mode 100644 layers/stores/useScrollStore.ts diff --git a/app/app.vue b/app/app.vue index 9fab093..06ea2f6 100644 --- a/app/app.vue +++ b/app/app.vue @@ -2,11 +2,14 @@ import { useNuxtApp } from 'nuxt/app' import LoadingFull from '#layers/components/blocks/loading/Full.vue' import LoadingLocal from '#layers/components/blocks/loading/Local.vue' +import BlocksModalYouTube from '#layers/components/blocks/modal/YouTube.vue' import type { GameDataMetaTag, GameDataValue } from '#layers/types/api/gameData' const nuxtApp = useNuxtApp() const gameDataStore = useGameDataStore() +const modalStore = useModalStore() +const { youtube, handleResetYoutube } = modalStore const { setGameData } = gameDataStore const { gameData } = storeToRefs(gameDataStore) @@ -114,7 +117,15 @@ if (serverGameData) {

{{ gameData?.game_name }}

- + + + + diff --git a/layers/assets/css/base/_reset.css b/layers/assets/css/base/_reset.css index 17f96e2..9df8a16 100644 --- a/layers/assets/css/base/_reset.css +++ b/layers/assets/css/base/_reset.css @@ -3,4 +3,12 @@ body { background-color: #000; } + body.scroll-lock { + overflow: hidden; + } + + button, + a { + outline: none; + } } diff --git a/layers/components/atoms/Button.vue b/layers/components/atoms/Button.vue index cc3cc4b..1f06333 100644 --- a/layers/components/atoms/Button.vue +++ b/layers/components/atoms/Button.vue @@ -9,7 +9,7 @@ import type { GameDataKeyCodeCodes } from '#layers/types/api/gameData' const props = withDefaults(defineProps(), { size: 'medium', backgroundColor: 'var(--primary)', - textColor: 'var(--text-primary)', + textColor: 'var(--alternative-02)', icon: '', disabled: false, }) diff --git a/layers/components/atoms/icons/ArrowDown.vue b/layers/components/atoms/icons/ArrowDown.vue index e055d8a..cd9619a 100644 --- a/layers/components/atoms/icons/ArrowDown.vue +++ b/layers/components/atoms/icons/ArrowDown.vue @@ -19,6 +19,7 @@ withDefaults(defineProps(), { :height="size" viewBox="0 0 12 12" :fill="color" + :class="className" > +interface Props { + size?: number | string + color?: string + className?: string +} + +withDefaults(defineProps(), { + size: 32, + color: '#EBEBEB', + className: '', +}) + + + diff --git a/layers/components/atoms/icons/LinkOut.vue b/layers/components/atoms/icons/LinkOut.vue index 54ee023..c565168 100644 --- a/layers/components/atoms/icons/LinkOut.vue +++ b/layers/components/atoms/icons/LinkOut.vue @@ -19,6 +19,7 @@ withDefaults(defineProps(), { :height="size" viewBox="0 0 16 16" :fill="color" + :class="className" > - - +
- -
- -
- -
+ +
+ +
- -
-