"use client" import { Suspense } from "react" import { Skeleton } from "./ui/skeleton" import { SocialIconRow } from "./social-icon-row" interface FooterLink { href: string label: string } interface FooterSection { title: string links: FooterLink[] } interface FooterConfig { name: string legalName: string description: string logo?: React.ReactNode sections: FooterSection[] customComponent?: React.ReactNode // Inject any custom component here nameElement?: React.ReactNode // Custom element for platform name with specific font hideSocialRow?: boolean // Hide the default social row rightColumnContent?: React.ReactNode // Custom content for right column belowDescriptionContent?: React.ReactNode // Custom content below description moveDescriptionToRight?: boolean // Move description and belowDescriptionContent to right column keepBelowDescriptionLeft?: boolean // Keep belowDescriptionContent on left even when moveDescriptionToRight is true backgroundColor?: string // ODS background color (e.g., 'bg-ods-card', 'bg-ods-bg') social?: { github?: string twitter?: string linkedin?: string reddit?: string youtube?: string instagram?: string facebook?: string discord?: string telegram?: string whatsapp?: string } } interface FooterProps { config?: FooterConfig renderLink?: (link: FooterLink) => React.ReactNode } function NavLinkSkeleton() { return } /** * Platform-Aware Footer Component * Accepts configuration from app-config.ts */ export function Footer({ config, renderLink }: FooterProps) { // Config is required - no hardcoded fallbacks if (!config) { console.warn('Footer: No config provided') return null } return } /** * Universal Footer Component * Renders footer based on provided config */ function UniversalFooter({ config, renderLink }: { config: FooterConfig; renderLink?: (link: FooterLink) => React.ReactNode }) { const defaultRenderLink = (link: FooterLink) => ( {link.label} ) const linkRenderer = renderLink || defaultRenderLink return ( ) }