feat(03-01): create 9 shared components for landing sections and project display
- HeroSection: title + subtitle + 3 CTA UButtons - FeaturedProjectsSection: 3 featured projects via useProjects() - ServicesSection: 4 service cards with UCard + UIcon - TestimonialsSection: UCard per testimonial with ratings and stats - FAQSection: UAccordion with i18n-resolved items - CTASection: final CTA with 2 UButtons - ProjectCard: NuxtLink + NuxtImg + UBadge + schema.org microdata - TechBadge: Technology lookup with NuxtImg + UBadge level - ProjectGallery: UModal fullscreen + UCarousel + thumbnails + keyboard nav
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
<script setup lang="ts">
|
||||
import type { FAQ } from '~~/shared/types'
|
||||
|
||||
interface Props {
|
||||
faqs: FAQ[]
|
||||
title: string
|
||||
subtitle: string
|
||||
}
|
||||
|
||||
const props = defineProps<Props>()
|
||||
const { t } = useI18n()
|
||||
|
||||
const items = computed(() =>
|
||||
props.faqs.map((faq) => ({
|
||||
label: t(faq.questionKey),
|
||||
content: t(faq.answerKey),
|
||||
value: faq.questionKey,
|
||||
})),
|
||||
)
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<section class="py-16 px-4">
|
||||
<div class="max-w-3xl mx-auto">
|
||||
<div class="text-center mb-12">
|
||||
<h2 class="text-3xl font-bold mb-4">{{ title }}</h2>
|
||||
<p class="text-lg text-muted">{{ subtitle }}</p>
|
||||
</div>
|
||||
<UAccordion :items="items" type="single" collapsible />
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
Reference in New Issue
Block a user