{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "footer-enterprise", "type": "registry:ui", "title": "Footer Enterprise", "description": "An enterprise-grade footer with three-tier layout, wide column grid, and whisper-quiet typography.", "files": [ { "path": "registry/ruixenui/footer-enterprise.tsx", "content": "\"use client\";\n\nimport * as React from \"react\";\nimport Link from \"next/link\";\n\n/* ── types ─────────────────────────────────────────────────────── */\ninterface FooterLink {\n label: string;\n href: string;\n}\n\ninterface FooterColumn {\n title: string;\n links: FooterLink[];\n}\n\ninterface FooterSocial {\n icon: React.ComponentType<{ className?: string }>;\n href: string;\n label?: string;\n}\n\ninterface FooterEnterpriseProps {\n /** Custom brand mark — any ReactNode (SVG, icon, emoji). Falls back to a default geometric mark. */\n brandMark?: React.ReactNode;\n brandName?: string;\n description?: string;\n columns?: FooterColumn[];\n socials?: FooterSocial[];\n bottomLinks?: FooterLink[];\n copyright?: string;\n}\n\n/* ── default mark ─────────────────────────────────────────────── */\nfunction DefaultMark() {\n return (\n \n \n \n \n );\n}\n\n/* ── defaults ─────────────────────────────────────────────────── */\nconst defaults = {\n brandName: \"ruixen ui\",\n description:\n \"Modern, fast, and customizable React components — built with Tailwind CSS, TypeScript, and accessibility in mind.\",\n columns: [\n {\n title: \"Product\",\n links: [\n { label: \"Components\", href: \"#\" },\n { label: \"Templates\", href: \"#\" },\n { label: \"Pro\", href: \"#\" },\n { label: \"Pricing\", href: \"#\" },\n ],\n },\n {\n title: \"Solutions\",\n links: [\n { label: \"Startups\", href: \"#\" },\n { label: \"Enterprise\", href: \"#\" },\n { label: \"Developers\", href: \"#\" },\n { label: \"Designers\", href: \"#\" },\n ],\n },\n {\n title: \"Developers\",\n links: [\n { label: \"Documentation\", href: \"#\" },\n { label: \"API Reference\", href: \"#\" },\n { label: \"CLI\", href: \"#\" },\n { label: \"Changelog\", href: \"#\" },\n ],\n },\n {\n title: \"Resources\",\n links: [\n { label: \"Guides\", href: \"#\" },\n { label: \"Blog\", href: \"#\" },\n { label: \"Templates\", href: \"#\" },\n { label: \"Community\", href: \"#\" },\n ],\n },\n {\n title: \"Company\",\n links: [\n { label: \"About\", href: \"#\" },\n { label: \"Careers\", href: \"#\" },\n { label: \"Press\", href: \"#\" },\n { label: \"Contact\", href: \"#\" },\n ],\n },\n ] as FooterColumn[],\n socials: [] as FooterSocial[],\n bottomLinks: [\n { label: \"Privacy\", href: \"#\" },\n { label: \"Terms\", href: \"#\" },\n ] as FooterLink[],\n copyright: `\\u00A9 ${new Date().getFullYear()} ruixen ui. All rights reserved.`,\n};\n\n/* ── component ────────────────────────────────────────────────── */\nexport function FooterEnterprise(props?: FooterEnterpriseProps) {\n const brandMark = props?.brandMark;\n const brandName = props?.brandName ?? defaults.brandName;\n const description = props?.description ?? defaults.description;\n const columns = props?.columns ?? defaults.columns;\n const socials = props?.socials ?? defaults.socials;\n const bottomLinks = props?.bottomLinks ?? defaults.bottomLinks;\n const copyright = props?.copyright ?? defaults.copyright;\n\n return (\n \n );\n}\n", "type": "registry:ui", "target": "components/ruixen/footer-enterprise.tsx" } ] }