import type { Metadata } from "next"; import { ArrowRight, BadgeCheck, Blocks, BriefcaseBusiness, ChartNoAxesCombined, Globe, Package2, Search, } 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 { StackedMarqueeSection, type MarqueeRow } from "@/components/layout/stacked-marquee-section"; import { MotionFade } from "@/components/motion-fade"; import { getMarqueeSettings, getSiteSettings, splitMarqueeRowItems } 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"; type HomePageProps = { params: Promise<{ locale: string; }>; }; const serviceIcons = [ BriefcaseBusiness, Globe, Package2, Blocks, Search, ChartNoAxesCombined, BadgeCheck, ]; export const dynamic = "force-dynamic"; export async function generateMetadata({ params }: HomePageProps): Promise { const { locale } = await params; 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 }: HomePageProps) { const { locale } = await params; const localeKey = resolveLocale(locale); const [t, marqueeSettings, siteSettings] = await Promise.all([ getTranslations({ locale: localeKey, namespace: "homepage" }), getMarqueeSettings(), getSiteSettings(), ]); const serviceItems = [ t("serviceBrand"), t("serviceWebsite"), t("serviceStore"), t("serviceWordPress"), t("serviceSeo"), t("serviceTracking"), t("serviceSystem"), ]; const marqueeLocale = marqueeSettings.locales[localeKey]; const marqueeRows: MarqueeRow[] = [ { direction: "left", duration: 126, items: splitMarqueeRowItems(marqueeLocale.row1) }, { direction: "right", duration: 220, items: splitMarqueeRowItems(marqueeLocale.row2) }, { direction: "left", duration: 168, items: splitMarqueeRowItems(marqueeLocale.row3) }, { direction: "right", duration: 144, items: splitMarqueeRowItems(marqueeLocale.row4) }, ]; return ( <>

{t("servicesEyebrow")}

{t("servicesTitle")}

{t("servicesText")}

{serviceItems.map((item, index) => { const Icon = serviceIcons[index]; return (

{item}

); })}
); }