Merge branch 'feature/20250910-all' into feature/20250916_cl
This commit is contained in:
47
README.md
47
README.md
@@ -21,34 +21,55 @@ repo/
|
||||
│ ├── assets/
|
||||
│ │ └── css/
|
||||
│ ├── components/
|
||||
│ │ ├── atoms/
|
||||
│ │ ├── layout/
|
||||
│ │ │ ├── default/
|
||||
│ │ │ └── StoveGnb.vue
|
||||
│ │ ├── molecules/
|
||||
│ │ └── templates/
|
||||
│ │ ├── atoms/ # 기본 UI 컴포넌트
|
||||
│ │ │ ├── Button.vue
|
||||
│ │ │ ├── LocaleLink.vue
|
||||
│ │ │ └── icons/
|
||||
│ │ │ ├── ArrowDown.vue
|
||||
│ │ │ ├── LinkOut.vue
|
||||
│ │ │ └── Star.vue
|
||||
│ │ ├── blocks/ # 복합 컴포넌트
|
||||
│ │ │ ├── HybridLink.vue
|
||||
│ │ │ ├── loading/
|
||||
│ │ │ ├── modal/
|
||||
│ │ │ ├── StoveGnb.vue
|
||||
│ │ │ └── VisualContent.vue
|
||||
│ │ ├── layouts/ # 레이아웃 컴포넌트
|
||||
│ │ │ ├── Footer.vue
|
||||
│ │ │ ├── Header.vue
|
||||
│ │ │ └── Main.vue
|
||||
│ │ └── widgets/ # 템플릿용 공통 위젯
|
||||
│ │ ├── Background.vue
|
||||
│ │ ├── MainTitle.vue
|
||||
│ │ ├── SubTitle.vue
|
||||
│ ├── composables/
|
||||
│ ├── layouts/
|
||||
│ │ ├── default.vue
|
||||
│ │ └── promotion.vue
|
||||
│ ├── middleware/
|
||||
│ │ ├── init.route.global.ts
|
||||
│ │ └── pageData.global.ts
|
||||
│ ├── nuxt.config.ts
|
||||
│ ├── plugins/
|
||||
│ ├── public/
|
||||
│ │ └── images/
|
||||
│ ├── registry/
|
||||
│ │ └── index.ts
|
||||
│ ├── server/
|
||||
│ │ ├── api/
|
||||
│ │ └── middleware/
|
||||
│ │ ├── middleware/
|
||||
│ │ └── routes/
|
||||
│ ├── stores/
|
||||
│ ├── templates/
|
||||
│ │ ├── GrVisual01/
|
||||
│ │ ├── GrVisual02/
|
||||
│ │ └── GrVisual03/
|
||||
│ │ ├── GrVisual01
|
||||
│ │ ├── GrVisual02
|
||||
│ │ └── GrVisual03
|
||||
│ ├── types/
|
||||
│ │ ├── api/
|
||||
│ │ └── utils/
|
||||
│ │ └── api/
|
||||
│ │ ├── gameData.ts
|
||||
│ │ └── pageData.ts
|
||||
│ └── utils/
|
||||
├── i18n/
|
||||
│ └── locales/
|
||||
├── node_modules/
|
||||
├── nuxt.config.ts
|
||||
├── package.json
|
||||
|
||||
@@ -3,15 +3,15 @@
|
||||
<h1 class="sr-only">dddd</h1>
|
||||
<NuxtPage />
|
||||
|
||||
<MoleculesLoadingFull />
|
||||
<MoleculesLoadingLocal />
|
||||
<LoadingFull />
|
||||
<LoadingLocal />
|
||||
</NuxtLayout>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useNuxtApp } from 'nuxt/app'
|
||||
import MoleculesLoadingFull from '#layers/components/molecules/loading/Full.vue'
|
||||
import MoleculesLoadingLocal from '#layers/components/molecules/loading/Local.vue'
|
||||
import LoadingFull from '#layers/components/blocks/loading/Full.vue'
|
||||
import LoadingLocal from '#layers/components/blocks/loading/Local.vue'
|
||||
import { useGameDataStore } from '#layers/stores/useGameDataStore'
|
||||
import type { GameDataMetaTag, GameDataValue } from '#layers/types/api/gameData'
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ watchEffect(() => {
|
||||
<template>
|
||||
<NuxtLayout :name="layout">
|
||||
<ClientOnly>
|
||||
<BlocksMain :templates="pageData?.templates ?? []" />
|
||||
<LayoutsMain :templates="pageData?.templates ?? []" />
|
||||
</ClientOnly>
|
||||
</NuxtLayout>
|
||||
</template>
|
||||
|
||||
@@ -33,7 +33,7 @@ watchEffect(() => {
|
||||
<template>
|
||||
<NuxtLayout :name="layout">
|
||||
<ClientOnly>
|
||||
<BlocksMain :templates="pageData?.templates ?? []" />
|
||||
<LayoutsMain :templates="pageData?.templates ?? []" />
|
||||
</ClientOnly>
|
||||
</NuxtLayout>
|
||||
</template>
|
||||
|
||||
@@ -33,7 +33,7 @@ watchEffect(() => {
|
||||
<template>
|
||||
<NuxtLayout :name="layout">
|
||||
<ClientOnly>
|
||||
<BlocksMain :templates="pageData?.templates ?? []" />
|
||||
<LayoutsMain :templates="pageData?.templates ?? []" />
|
||||
</ClientOnly>
|
||||
</NuxtLayout>
|
||||
</template>
|
||||
|
||||
@@ -42,7 +42,7 @@ watchEffect(() => {
|
||||
<template>
|
||||
<NuxtLayout :name="layout">
|
||||
<ClientOnly>
|
||||
<BlocksMain :templates="pageData?.templates ?? []" />
|
||||
<LayoutsMain :templates="pageData?.templates ?? []" />
|
||||
</ClientOnly>
|
||||
</NuxtLayout>
|
||||
</template>
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
<script setup lang="ts">
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { useGameDataStore } from '#layers/stores/useGameDataStore'
|
||||
import LanguageSwitcher from '#layers/components/molecules/LanguageSwitcher.vue'
|
||||
import LanguageSwitcher from '#layers/components/blocks/LanguageSwitcher.vue'
|
||||
|
||||
const { t, locale } = useI18n()
|
||||
const gameDataStore = useGameDataStore()
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
<div
|
||||
class="language-area absolute bottom-7 right-10 text-white md:bottom-5.5 md:right-4"
|
||||
>
|
||||
<MoleculesLanguageSwitcher />
|
||||
<BlocksLanguageSwitcher />
|
||||
|
||||
<!-- <SelectLanguage /> -->
|
||||
<!-- <AtomsLanguageSwitcher /> -->
|
||||
@@ -12,7 +12,7 @@ const gnbList = gameData?.gnb?.menus as GameDataGnb['menus']
|
||||
<header
|
||||
class="bg-theme-foreground text-theme-foreground-reversal relative z-50"
|
||||
>
|
||||
<MoleculesStoveGnb />
|
||||
<BlocksStoveGnb />
|
||||
<div
|
||||
data-name="header-game"
|
||||
class="px-[40px] h-16 flex items-center whitespace-nowrap"
|
||||
@@ -37,7 +37,7 @@ const gnbList = gameData?.gnb?.menus as GameDataGnb['menus']
|
||||
class="relative group"
|
||||
>
|
||||
<!-- Link 컴포넌트 사용 -->
|
||||
<MoleculesHybridLink
|
||||
<BlocksHybridLink
|
||||
:to="gnbItem.url_path"
|
||||
:target="gnbItem.link_target"
|
||||
class="relative flex items-center h-[64px]"
|
||||
@@ -47,7 +47,7 @@ const gnbList = gameData?.gnb?.menus as GameDataGnb['menus']
|
||||
<span
|
||||
class="absolute bottom-0 left-0 w-full h-2 border-b-2 border-transparent transition-border-color group-hover:border-theme-foreground-reversal group-active:border-theme-foreground-reversal-10"
|
||||
/>
|
||||
</MoleculesHybridLink>
|
||||
</BlocksHybridLink>
|
||||
<div
|
||||
v-if="gnbItem.children"
|
||||
class="absolute top-full left-[-28px] min-w-[190px] pt-[4px] pointer-events-none group-hover:pointer-events-auto"
|
||||
@@ -57,7 +57,7 @@ const gnbList = gameData?.gnb?.menus as GameDataGnb['menus']
|
||||
>
|
||||
<li v-for="child in gnbItem.children" :key="child.menu_name">
|
||||
<!-- Link 컴포넌트 사용 -->
|
||||
<MoleculesHybridLink
|
||||
<BlocksHybridLink
|
||||
:to="child.url_path"
|
||||
:target="child.link_target"
|
||||
class="flex items-center px-4 py-[9px] rounded-[12px] transition-background hover:bg-theme-foreground-reversal-40 active:bg-theme-foreground-reversal-70"
|
||||
@@ -67,7 +67,7 @@ const gnbList = gameData?.gnb?.menus as GameDataGnb['menus']
|
||||
v-if="child.link_target === '_blank'"
|
||||
class="ml-1"
|
||||
/>
|
||||
</MoleculesHybridLink>
|
||||
</BlocksHybridLink>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -19,7 +19,7 @@ const imageSrc = getResponsiveSrc(resourcesData.value?.res_path)
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<MoleculesVisualContent
|
||||
<BlocksVisualContent
|
||||
tag="p"
|
||||
:text="displayText"
|
||||
:image-src="imageSrc as any"
|
||||
|
||||
@@ -19,7 +19,7 @@ const imageSrc = getResponsiveSrc(resourcesData.value?.res_path)
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<MoleculesVisualContent
|
||||
<BlocksVisualContent
|
||||
tag="h2"
|
||||
:text="displayText"
|
||||
:image-src="imageSrc as any"
|
||||
|
||||
@@ -19,7 +19,7 @@ const imageSrc = getResponsiveSrc(resourcesData.value?.res_path)
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<MoleculesVisualContent
|
||||
<BlocksVisualContent
|
||||
tag="h3"
|
||||
:text="displayText"
|
||||
:image-src="imageSrc as any"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<BlocksDefaultHeader />
|
||||
<LayoutsHeader />
|
||||
<slot />
|
||||
<BlocksDefaultFooter />
|
||||
<LayoutsFooter />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import GrVisual01 from '#layers/components/templates/GrVisual01/index.vue'
|
||||
import GrVisual02 from '#layers/components/templates/GrVisual02/index.vue'
|
||||
import GrVisual03 from '#layers/components/templates/GrVisual03/index.vue'
|
||||
import GrVisual01 from '#layers/templates/GrVisual01/index.vue'
|
||||
import GrVisual02 from '#layers/templates/GrVisual02/index.vue'
|
||||
import GrVisual03 from '#layers/templates/GrVisual03/index.vue'
|
||||
// import GrGallery01 from "#layers/templates/GrGallery01/index.vue";
|
||||
// import GrGallery02 from "#layers/templates/GrGallery02/index.vue";
|
||||
// import GrGallery03 from "#layers/templates/GrGallery03/index.vue";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script setup lang="ts">
|
||||
import YouTubeModal from '#layers/components/molecules/modal/YouTubeModal.vue'
|
||||
import YouTubeModal from '#layers/components/blocks/modal/YouTube.vue'
|
||||
|
||||
interface Props {
|
||||
components: Record<string, any>
|
||||
Reference in New Issue
Block a user