2026-07-31 19:02:00 +08:00
|
|
|
<script setup lang="ts">
|
|
|
|
|
import type { SectionBlock } from '~/types/site';
|
|
|
|
|
|
|
|
|
|
const props = defineProps<{ section: SectionBlock }>();
|
|
|
|
|
|
2026-08-03 19:09:03 +08:00
|
|
|
const { overline, title, subtitle, content, mediaUrl, isDark, overlineStyle, titleStyle, bodyStyle } = useSectionContent(props.section);
|
2026-07-31 19:02:00 +08:00
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<template>
|
|
|
|
|
<div class="section-container py-96px grid md:grid-cols-2 gap-48px items-center">
|
|
|
|
|
<!-- 图片 -->
|
|
|
|
|
<div v-if="mediaUrl" class="flex-center order-2 md:order-1">
|
|
|
|
|
<img :src="mediaUrl" :alt="title" class="w-full max-w-520px rounded-16px object-cover shadow-lg" />
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 文案 -->
|
|
|
|
|
<div class="flex flex-col gap-20px order-1 md:order-2">
|
2026-08-03 19:09:03 +08:00
|
|
|
<p v-if="overline" class="text-13px font-semibold tracking-widest uppercase" :class="isDark ? 'text-primary-300' : 'text-primary'" :style="overlineStyle">
|
2026-07-31 19:02:00 +08:00
|
|
|
{{ overline }}
|
|
|
|
|
</p>
|
2026-08-03 19:09:03 +08:00
|
|
|
<h2 class="text-3xl md:text-4xl font-bold leading-tight" :class="isDark ? 'text-white' : 'text-gray-900 dark:text-white'" :style="titleStyle">
|
2026-07-31 19:02:00 +08:00
|
|
|
{{ title }}
|
|
|
|
|
</h2>
|
2026-08-03 19:09:03 +08:00
|
|
|
<p v-if="subtitle" class="text-lg" :class="isDark ? 'text-gray-300' : 'text-gray-600 dark:text-gray-300'" :style="bodyStyle">
|
2026-07-31 19:02:00 +08:00
|
|
|
{{ subtitle }}
|
|
|
|
|
</p>
|
2026-08-03 19:09:03 +08:00
|
|
|
<div v-if="content" class="text-15px leading-relaxed" :class="isDark ? 'text-gray-400' : 'text-gray-500 dark:text-gray-400'" :style="bodyStyle" v-html="content" />
|
2026-07-31 19:02:00 +08:00
|
|
|
<SectionCta :section="section" class="mt-8px" />
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|