Files
web-temp/layers/templates/GrContents01/index.vue
2025-10-24 17:13:02 +09:00

78 lines
2.2 KiB
Vue

<script setup lang="ts">
import { getComponentGroup } from '#layers/utils/dataUtil'
import type { PageDataTemplateComponents } from '#layers/types/api/pageData'
import AtomsImg from '#layers/components/atoms/Img.vue'
interface Props {
components: PageDataTemplateComponents
pageVerTmplSeq: number
}
const props = defineProps<Props>()
const backgroundData = computed(() =>
getComponentGroup(props.components, 'background')
)
const mainTitleData = computed(() =>
getComponentGroup(props.components, 'mainTitle')
)
const subTitleData = computed(() =>
getComponentGroup(props.components, 'subTitle')
)
const descriptionData = computed(() =>
getComponentGroup(props.components, 'description')
)
const imgListData = computed(() => {
return getComponentGroupAry(props.components, 'imgList')
})
const buttonListData = computed(() => {
return getComponentGroupAry(props.components, 'buttonList')
})
</script>
<template>
<section class="relative py-[80px] md:py-[120px]">
<WidgetsBackground v-if="backgroundData" :resources-data="backgroundData" />
<div class="section-content px-0">
<WidgetsMainTitle
v-if="mainTitleData"
:resources-data="mainTitleData"
class="title-xlg mx-[20px] sm:mx-[40px]"
/>
<WidgetsSubTitle
v-if="subTitleData"
:resources-data="subTitleData"
class="title-sm mt-2 mx-[20px] sm:mx-[40px]"
/>
<div v-if="imgListData" class="img-container">
<div v-for="(item, index) in imgListData" :key="index" class="img-item">
<AtomsImg
:resources-data="item"
object-fit="contain"
:alt="item?.group_label"
/>
</div>
</div>
<WidgetsButtonList
v-if="buttonListData"
:resources-data="buttonListData"
:page-ver-tmpl-seq="props.pageVerTmplSeq"
class="mt-[56px] mx-[20px] sm:mx-[40px]"
/>
<WidgetsDescription
v-if="descriptionData"
:resources-data="descriptionData"
class="mt-8 mx-[20px] sm:mx-[40px]"
/>
</div>
</section>
</template>
<style scoped>
.img-container {
@apply flex flex-wrap items-center justify-center gap-4 box-content mx-auto mt-[32px]
max-w-[688px] px-[20px]
md:max-w-[944px] md:px-[40px];
}
</style>