import type { Metadata } from "next"; import Link from "next/link"; import { DetailsFrame } from "@/components/DetailsFrame"; import { HeroSlider } from "@/components/HeroSlider"; import { InstagramFollow } from "@/components/InstagramFollow"; import { OpeningFrame } from "@/components/OpeningFrame"; import { SectionTitle } from "@/components/SectionTitle"; import { SlotImage } from "@/components/SlotImage"; import { gallery, processSteps, projects, services, site, stats } from "@/data/site"; import { resolveAbout, resolveInstagram, resolveLogo, resolveName } from "@/lib/content"; import { getBusinessInfo } from "@/lib/meshkee"; import { getPageSlots, slotImages, slotRatio } from "@/lib/static-images"; export const metadata: Metadata = { description: "استودیو معماری هوم؛ طراحی معماری، طراحی داخلی، طراحی نما و اجرای پروژه‌های مسکونی و تجاری با نگاهی مینیمال و دقیق.", }; const ArrowIcon = () => ( ); export default async function HomePage() { const [info, slots] = await Promise.all([getBusinessInfo(), getPageSlots("home")]); const name = resolveName(info); const about = resolveAbout(info); const logo = resolveLogo(info); const instagram = resolveInstagram(info); const heroSlides = slotImages("slider", slots, gallery.heroSlides); const categoryImages = slotImages( "four-category", slots, services.map((service) => ({ url: service.image, titleFa: service.titleFa, titleEn: service.titleEn, subtext: service.text, linkUrl: `/services/${service.slug}`, })), ); const projectSlots = slotImages( "project-images", slots, projects.map((project) => ({ url: project.image, titleFa: project.titleFa, titleEn: project.titleEn, subtext: `${project.category} · ${project.year}`, linkUrl: `/portfolio/${project.slug}`, })), ); const sticky = slotImages("sticky-frame-bg", slots, [ { url: gallery.studio, titleFa: "ورودی سبز", titleEn: "Studio", subtext: about[2] ?? site.about[2] }, ])[0]; const openingImage = sticky.url || gallery.studio; const instagramImage = slotImages("instagram-row", slots, [ { url: gallery.instagram, titleFa: "ما را در اینستاگرام دنبال کنید", titleEn: "Follow us", subtext: "پروژه‌های تازه و جزئیات اجرا را در صفحه اینستاگرام ببینید.", linkUrl: instagram.href, }, ])[0]; const instagramRatio = slotRatio("instagram-row", slots); const brandLogos = slotImages("brands", slots, gallery.brands); const brandRatio = slotRatio("brands", slots); return ( <> {/* Intro — RTL: logo (rightmost) · copy · focus (left) */}
{name}

{about[1] ?? site.about[1]}

تمرکز ما معماری مسکونی، طراحی داخلی، طراحی نما
بیشتر بدانید
{/* four-category — 4 service panels */}
{Array.from({ length: 4 }, (_, index) => { const service = services[index]; const cms = categoryImages[index]; const image = cms?.url || service?.image || gallery.heroSlides[0].url; const titleFa = cms?.titleFa || service?.titleFa || `خدمت ${index + 1}`; const titleEn = cms?.titleEn || service?.titleEn || ""; const desc = cms?.subtext || service?.text || ""; const href = cms?.linkUrl || (service ? `/services/${service.slug}` : "/services"); const external = /^https?:\/\//.test(href); return ( {`${titleFa}${titleEn
{/* project-images — masonry */}
گزیده‌ای از کارهای اخیر در معماری، طراحی داخلی و نما.

} />
{projectSlots.map((image, index) => { const title = image.titleFa || image.titleEn || `پروژه ${index + 1}`; const media = { ...image, linkUrl: null }; const card = ( <>

{title}

{image.subtext ? {image.subtext} : null}
{image.titleEn ?

{image.titleEn}

: null} ); if (image.linkUrl) { const external = /^https?:\/\//.test(image.linkUrl); return ( {card} ); } return (
{card}
); })}
{/* sticky-frame-bg */} {/* Process */}
{processSteps.map((item) => (

{item.titleFa}

{item.text}

))}
{/* Stats */}
{stats.map((stat) => (
{stat.value} {stat.label}
))}
{/* brands */} {brandLogos.length ? (
    {brandLogos.map((brand, index) => { const alt = brand.titleFa || brand.titleEn || `برند ${index + 1}`; return (
  • {brand.titleFa || brand.titleEn ? (

    {brand.titleFa ? {brand.titleFa} : null} {brand.titleEn ? {brand.titleEn} : null}

    ) : null}
  • ); })}
) : null} {/* instagram-row */} {/* CTA */}
); }