A configuration-driven, client-side footer component that renders a responsive multi-column layout based on a `FooterConfig` object, with no hardcoded content. ## Key Components ### Interfaces - **`FooterConfig`** — Primary configuration shape controlling logo, sections, social links, layout flags, and styling - **`FooterSection`** / **`FooterLink`** — Define the link columns rendered in the footer grid - **`FooterProps`** — Props for the public `Footer` export; accepts `config` and an optional custom `renderLink` renderer ### Exported Components - **`Footer`** — Public entry point; guards against missing config and delegates to `UniversalFooter` ### Internal Components - **`UniversalFooter`** — Renders the full footer grid: logo column, dynamic link sections, optional custom component slot, right column, and copyright - **`NavLinkSkeleton`** — Suspense fallback for individual nav links ### Layout Flags (`FooterConfig`) | Flag | Effect | |---|---| | `moveDescriptionToRight` | Moves description text to the right column | | `keepBelowDescriptionLeft` | Retains `belowDescriptionContent` on the left when description is moved | | `hideSocialRow` | Suppresses the `SocialIconRow` | | `backgroundColor` | Overrides the default `bg-ods-card` Tailwind class | ## Usage Example ```typescript import { Footer } from "@/components/footer" const config = { name: "OpenFrame", legalName: "Flamingo Stack Inc.", description: "AI-powered MSP platform.", sections: [ { title: "Product", links: [ { href: "/features", label: "Features" }, { href: "/pricing", label: "Pricing" }, ], }, ], social: { github: "https://github.com/flamingo-stack/openframe-oss-lib", discord: "https://www.openmsp.ai/", }, } export default function Layout() { return (