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