60 lines
2.0 KiB
Vue
60 lines
2.0 KiB
Vue
<template>
|
|
<UiContainer
|
|
class="flex flex-wrap items-center justify-between gap-[30px] sm:gap-y-[55px] xl:gap-y-[100px] mb-[55px] sm:mb-[100px]"
|
|
>
|
|
<div
|
|
class="w-full flex flex-col gap-[25px] xl:max-w-[48%] md:mx-10 xl:m-0"
|
|
v-for="(item, index) in component.section_lang_data"
|
|
:key="index"
|
|
>
|
|
<!-- xl -->
|
|
<div class="hidden xl:flex xl:h-[330px] flex-col justify-between">
|
|
<div class="space-y-[55px]">
|
|
<h2 class="h2-bold-bounded">{{ item.title }}</h2>
|
|
<p class="text-inter">{{ item.description }}</p>
|
|
</div>
|
|
<h4 class="h4-uppercase-bold-inter">{{ item.sub_title }}</h4>
|
|
</div>
|
|
|
|
<!-- sm/md -->
|
|
<div class="xl:hidden flex flex-col gap-y-[25px] sm:gap-y-[55px]">
|
|
<h2 class="h2-bold-bounded">{{ item.title }}</h2>
|
|
<p class="text-inter">{{ item.description }}</p>
|
|
<h4 class="h4-uppercase-bold-inter">{{ item.sub_title }}</h4>
|
|
</div>
|
|
|
|
<div
|
|
class="h-[235px] sm:h-[350px] w-full rounded-[20px] bg-cover bg-center transition-transform duration-300 group-hover:scale-105 xl:block relative"
|
|
:style="{
|
|
backgroundImage: `url('/api/files/${component.image_collection}/${component.section_id}/${component.section_img[index]}?thumb=640x0')`,
|
|
backgroundSize: 'cover',
|
|
backgroundPosition: 'center',
|
|
}"
|
|
>
|
|
<div
|
|
class="hidden sm:block absolute bottom-0 right-0 pt-2 pl-2 bg-bg-light dark:bg-bg-dark rounded-tl-2xl"
|
|
>
|
|
<ButtonArrow>{{ item.title }}</ButtonArrow>
|
|
</div>
|
|
</div>
|
|
<ButtonArrow class="sm:hidden mx-auto">{{ item.title }}</ButtonArrow>
|
|
</div>
|
|
</UiContainer>
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
const props = defineProps<{ component: Component }>();
|
|
type Component = {
|
|
image_collection: string;
|
|
section_id: string;
|
|
section_img: string;
|
|
section_lang_data: [
|
|
{
|
|
title: string;
|
|
description: string;
|
|
sub_title: string;
|
|
}
|
|
];
|
|
};
|
|
</script>
|