From 3008b19a19705d228a76f1c6abe07c2df2e7dc70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Chyeonggkim=E2=80=9D?= <“hyeonggkim@smilegate.com”> Date: Wed, 19 Nov 2025 10:02:24 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=B6=94=EA=B0=80=20component=20viewer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/pages/_components/index.vue | 1216 +++++++++++ app/pages/components-viewer/index.vue | 2337 ++++++++++++++++++++++ layers/middleware/init.route.global.ts | 4 +- layers/middleware/pageData.global.ts | 7 + layers/server/middleware/gameData.ts | 7 + layers/types/components/button.ts | 2 +- public/images/common/btn_system_play.svg | 10 + 7 files changed, 3580 insertions(+), 3 deletions(-) create mode 100644 app/pages/_components/index.vue create mode 100644 app/pages/components-viewer/index.vue create mode 100644 public/images/common/btn_system_play.svg diff --git a/app/pages/_components/index.vue b/app/pages/_components/index.vue new file mode 100644 index 0000000..dc12079 --- /dev/null +++ b/app/pages/_components/index.vue @@ -0,0 +1,1216 @@ + + + + + + diff --git a/app/pages/components-viewer/index.vue b/app/pages/components-viewer/index.vue new file mode 100644 index 0000000..7247f32 --- /dev/null +++ b/app/pages/components-viewer/index.vue @@ -0,0 +1,2337 @@ + + + + + + diff --git a/layers/middleware/init.route.global.ts b/layers/middleware/init.route.global.ts index b1138ab..2eb2996 100644 --- a/layers/middleware/init.route.global.ts +++ b/layers/middleware/init.route.global.ts @@ -53,8 +53,8 @@ export default defineNuxtRouteMiddleware(async (to, _from) => { // await getGameDataExternal(req) - // error 페이지는 API 호출하지 않음 - if (pageUrl === '/error' || to.path.includes('/error') || to.path.includes('/inspection')) { + // error 페이지 및 특수 페이지는 API 호출하지 않음 + if (pageUrl === '/error' || to.path.includes('/error') || to.path.includes('/inspection') || to.path.includes('components-viewer')) { return } diff --git a/layers/middleware/pageData.global.ts b/layers/middleware/pageData.global.ts index c5e3254..ddfe36e 100644 --- a/layers/middleware/pageData.global.ts +++ b/layers/middleware/pageData.global.ts @@ -27,11 +27,18 @@ export default defineNuxtRouteMiddleware(async (to, _from) => { ) try { + // 점검 페이지 예외 처리 if (to.path.includes('inspection')) { console.log('🚀 ~ 점검페이지 접근 pageData.global') return } + // 컴포넌트 뷰어 페이지 예외 처리 + if (to.path.includes('components-viewer')) { + console.log('🚀 ~ 컴포넌트 뷰어 페이지 접근 pageData.global') + return + } + const pageUrl = getPathAfterLanguage(to.path) console.log("🚀 ~ pageUrl:", pageUrl) diff --git a/layers/server/middleware/gameData.ts b/layers/server/middleware/gameData.ts index 691727d..1b6cf77 100644 --- a/layers/server/middleware/gameData.ts +++ b/layers/server/middleware/gameData.ts @@ -215,6 +215,13 @@ export default defineEventHandler(async event => { return } + // 1-3. /components-viewer 페이지 패스 (개발용 컴포넌트 뷰어) + if (fullPath.includes('components-viewer')) { + // 최소한의 gameData 설정 (컴포넌트 뷰어는 gameData 불필요) + event.context.gameData = initGameData?.value || null + return + } + // 정적 자산, API, 파비콘 등은 제외하고 페이지 요청만 처리 if ( fullPath.startsWith('/api/') || diff --git a/layers/types/components/button.ts b/layers/types/components/button.ts index 37513b6..f9f7fcc 100644 --- a/layers/types/components/button.ts +++ b/layers/types/components/button.ts @@ -9,6 +9,6 @@ export type DownloadButtonType = 'default' | 'single' | 'duplication' | 'custom' export type ButtonSize = 'large' | 'medium' | 'small' | 'extra-small' -export type ButtonVariant = 'filled' | 'outlined' +export type ButtonVariant = 'filled' | 'outlined' | 'text' | 'ghost' export type Platform = 'google_play' | 'app_store' | 'pc' | 'stove' diff --git a/public/images/common/btn_system_play.svg b/public/images/common/btn_system_play.svg new file mode 100644 index 0000000..7dd52fc --- /dev/null +++ b/public/images/common/btn_system_play.svg @@ -0,0 +1,10 @@ + +
+ + + + + + + +