import docuData from "@/docu.json"; import Image from "next/image"; import Link from "next/link"; // Define types for docu.json interface SponsorItem { url: string; image: string; title: string; description?: string; } interface NavbarConfig { title?: string; logo?: { light?: string; dark?: string; }; links?: Array<{ title: string; href: string; external?: boolean; }>; } interface FooterConfig { text?: string; links?: Array<{ title: string; href: string; external?: boolean; }>; } interface MetaConfig { title?: string; description?: string; favicon?: string; socialBanner?: string; } interface RepositoryConfig { url: string; editUrl?: string; branch?: string; directory?: string; } interface RouteItem { title: string; href: string; noLink?: boolean; context?: { icon: string; description: string; title: string; }; items?: RouteItem[]; } interface RouteConfig { title: string; href: string; noLink?: boolean; context?: { icon: string; description: string; title: string; }; items?: RouteItem[]; } interface DocuConfig { sponsor?: { title?: string; item?: SponsorItem; }; navbar: NavbarConfig; footer: FooterConfig; meta: MetaConfig; repository: RepositoryConfig; routes: RouteConfig[]; } // Type assertion for docu.json const docuConfig = docuData as DocuConfig; export function Sponsor() { // Safely get sponsor data with optional chaining and default values const sponsor = docuConfig?.sponsor || {}; const item = sponsor?.item; // Return null if required fields are missing if (!item?.url || !item?.image || !item?.title) { return null; } return (
{sponsor?.title && (

{sponsor.title}

)}
{item.title}

{item.title}

{item.description && (

{item.description}

)}
); } export default Sponsor;