"use client"; import type { BaseComponentProps } from "@json-render/react"; import type { WebsiteProps } from "./website-catalog"; // ============================================================================= // Header // ============================================================================= function HeaderComponent({ props, }: BaseComponentProps>) { const variant = props.variant ?? "simple"; const links = props.links ?? []; if (variant === "centered") { return (
{props.brand}
); } return (
{props.brand}
); } // ============================================================================= // Hero // ============================================================================= function HeroComponent({ props }: BaseComponentProps>) { const variant = props.variant ?? "centered"; const isLeft = variant === "left-aligned"; return (
{props.badge && ( {props.badge} )}

{props.headline}

{props.description}

{(props.primaryCta || props.secondaryCta) && (
{props.primaryCta && ( {props.primaryCta.label} )} {props.secondaryCta && ( {props.secondaryCta.label} )}
)}
); } // ============================================================================= // Features // ============================================================================= function FeaturesComponent({ props, }: BaseComponentProps>) { const variant = props.variant ?? "cards"; const columns = props.columns ?? 3; const items = props.items ?? []; const colClass = columns === 2 ? "sm:grid-cols-2" : columns === 4 ? "sm:grid-cols-2 lg:grid-cols-4" : "sm:grid-cols-2 lg:grid-cols-3"; return (
{(props.headline || props.description) && (
{props.headline && (

{props.headline}

)} {props.description && (

{props.description}

)}
)}
{items.map((item, i) => variant === "cards" ? (

{item.title}

{item.description}

) : (

{item.title}

{item.description}

), )}
); } // ============================================================================= // Team // ============================================================================= function TeamComponent({ props }: BaseComponentProps>) { const variant = props.variant ?? "grid"; const members = props.members ?? []; return (
{(props.headline || props.description) && (
{props.headline && (

{props.headline}

)} {props.description && (

{props.description}

)}
)} {variant === "list" ? (
{members.map((m, i) => (

{m.name}

{m.role}

{m.bio && (

{m.bio}

)}
))}
) : (
{members.map((m, i) => (
{m.name .split(" ") .map((n) => n[0]) .join("") .slice(0, 2) .toUpperCase()}

{m.name}

{m.role}

{m.bio && (

{m.bio}

)}
))}
)}
); } // ============================================================================= // Testimonials // ============================================================================= function TestimonialsComponent({ props, }: BaseComponentProps>) { const items = props.items ?? []; return (
{props.headline && (

{props.headline}

)}
{items.map((item, i) => (

“{item.quote}”

{item.author} {item.role && ( {item.role} )}
))}
); } // ============================================================================= // ContactForm // ============================================================================= function ContactFormComponent({ props, }: BaseComponentProps>) { const fields = props.fields ?? []; return (
{(props.headline || props.description) && (
{props.headline && (

{props.headline}

)} {props.description && (

{props.description}

)}
)}
e.preventDefault()} >
{fields.map((field, i) => field.type === "textarea" ? (