import type { Metadata } from "next"; import { ArrowRight, BriefcaseBusiness, Boxes, Mail, } from "lucide-react"; import Link from "next/link"; import { getTranslations } from "next-intl/server"; import { Container } from "@/components/layout/container"; import { HomeHero } from "@/components/layout/home-hero"; import { MotionFade } from "@/components/motion-fade"; import { getSiteSettings } from "@/lib/app-config"; import { buildLocalizedMetadata } from "@/lib/metadata"; import { AppCard } from "@/components/ui/app-card"; import { Button } from "@/components/ui/button"; import { CardContent } from "@/components/ui/card"; import { getLocalizedPath, resolveLocale } from "@/lib/locale"; import { getLocalizedValue, getPublishedPortfolioProjects, } from "@/lib/portfolio"; import { pickText, productItems } from "@/lib/site-data"; type HomePageProps = { params: { locale: string; }; }; export const dynamic = "force-dynamic"; export async function generateMetadata({ params: { locale }, }: HomePageProps): Promise { const localeKey = resolveLocale(locale); const [t, siteSettings] = await Promise.all([ getTranslations({ locale: localeKey, namespace: "homepage" }), getSiteSettings(), ]); return await buildLocalizedMetadata({ locale: localeKey, pathname: "/", title: siteSettings.locales[localeKey].siteName, description: t("heroText"), applyTitleTemplate: false, }); } export default async function HomePage({ params: { locale } }: HomePageProps) { const localeKey = resolveLocale(locale); const featuredProjects = (await getPublishedPortfolioProjects()).slice(0, 3); const featuredProducts = productItems.slice(0, 3); const t = await getTranslations({ locale: localeKey, namespace: "homepage" }); return ( <>

{t("portfolioTitle")}

{t("portfolioText")}

{featuredProjects.map((item) => (

{getLocalizedValue(item.category.name, localeKey)} - {item.projectYear}

{getLocalizedValue(item.title, localeKey)}

{getLocalizedValue(item.summary, localeKey)}

{t("toPortfolio")}
))}

{t("productsTitle")}

{t("productsText")}

{featuredProducts.map((item) => (

{pickText(item.segment, localeKey)}

{pickText(item.name, localeKey)}

{pickText(item.summary, localeKey)}

{pickText(item.price, localeKey)}

))}

{t("ctaTitle")}

{t("ctaText")}

); }