import Link from "next/link"; import { FramedImage } from "@/components/FramedImage"; import { Header } from "@/components/Header"; import { Footer } from "@/components/Footer"; import { RevealObserver } from "@/components/RevealObserver"; import { site } from "@/data/home"; interface Feature { title: string; titleEn?: string; description: string; icon?: string; } interface Section { tag?: string; title: string; titleEn?: string; body: string; image?: string; imageFrame?: boolean; eyebrow?: string; headline?: string; features?: Feature[]; featureLayout?: "horizontal" | "team"; featureColumns?: 2 | 3; } interface ServicePageProps { metaTitle: string; tag: string; title: string; titleEn: string; lead: string; heroImage?: string; sections: Section[]; injectAfter?: number; inject?: React.ReactNode; injections?: { after: number; node: React.ReactNode }[]; children?: React.ReactNode; } function SolutionFeatureCard({ feature }: { feature: Feature }) { return (
{feature.icon ? ( ) : null}

{feature.title}

{feature.titleEn && (

{feature.titleEn}

)}

{feature.description}

); } function TeamFeatureCard({ feature }: { feature: Feature }) { return (
{feature.icon ? ( ) : null}

{feature.title}

{feature.titleEn && (

{feature.titleEn}

)}

{feature.description}

); } function FeatureCard({ feature, layout = "horizontal", }: { feature: Feature; layout?: "horizontal" | "team"; }) { if (layout === "team") { return ; } return ; } export function ServicePageLayout({ tag, title, titleEn, lead, heroImage, sections, injectAfter, inject, injections, children, }: ServicePageProps) { const sectionInjections = injections ?? (injectAfter !== undefined && inject ? [{ after: injectAfter, node: inject }] : []); return ( <>

{title}

{titleEn}

{lead}

{site.phone}
{heroImage && (
{title}
)}
{sections.map((sec, i) => (
{sec.image ? (
{sec.eyebrow ? (

{sec.eyebrow}

) : null}

{sec.title}

{sec.titleEn && (

{sec.titleEn}

)} {sec.headline ? (

{sec.headline}

) : null}

{sec.body}

{sec.imageFrame ? ( ) : ( {sec.title} )}
) : (

{sec.title}

{sec.titleEn && (

{sec.titleEn}

)}

{sec.body}

)} {sec.features && sec.features.length > 0 && (
    {sec.features.map((f, fi) => (
  • ))}
)}
{sectionInjections .filter((item) => item.after === i) .map((item, injectionIndex) => (
{item.node}
))}
))} {children}

آماده‌اید شروع کنیم؟

با تیم مشکی تماس بگیرید تا درباره پروژه‌تان صحبت کنیم.

{site.phone} بازگشت به خانه