{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "footer-01",
  "title": "Site Footer",
  "description": "A responsive multi-column footer with newsletter, navigation and legal links.",
  "dependencies": [
    "lucide-react"
  ],
  "registryDependencies": [
    "@rivelle/utils",
    "@rivelle/button",
    "@rivelle/input"
  ],
  "files": [
    {
      "path": "registry/nova/blocks/footer-01.tsx",
      "content": "import * as React from \"react\";\nimport { ArrowUpRight, Github, Linkedin, Sparkles } from \"lucide-react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { cn } from \"@/lib/utils\";\n\ntype Footer01Props = React.ComponentProps<\"footer\"> & {\n  brand?: string;\n  description?: string;\n  groups?: FooterLinkGroup[];\n  newsletterPlaceholder?: string;\n};\n\ntype FooterLinkGroup = {\n  title: string;\n  links: Array<{ label: string; href?: string } | string>;\n};\n\nconst defaultGroups: FooterLinkGroup[] = [\n  {\n    title: \"Product\",\n    links: [\"Overview\", \"Integrations\", \"Pricing\", \"Changelog\"],\n  },\n  { title: \"Company\", links: [\"About\", \"Customers\", \"Careers\", \"Contact\"] },\n  { title: \"Resources\", links: [\"Guides\", \"Help center\", \"API\", \"Status\"] },\n];\n\nfunction Footer01({\n  brand = \"Northstar\",\n  description = \"A calmer operating system for ambitious teams.\",\n  groups = defaultGroups,\n  newsletterPlaceholder = \"Email for product notes\",\n  className,\n  ...props\n}: Footer01Props) {\n  return (\n    <footer\n      className={cn(\n        \"border-t border-foreground/10 bg-background px-5 py-12 sm:px-8 sm:py-16\",\n        className,\n      )}\n      data-slot=\"site-footer\"\n      {...props}\n    >\n      <div className=\"mx-auto max-w-7xl\">\n        <div className=\"grid gap-12 lg:grid-cols-[1.1fr_1.4fr]\">\n          <div>\n            <a\n              className=\"inline-flex items-center gap-2.5 font-semibold\"\n              href=\"#top\"\n            >\n              <span className=\"grid size-9 place-items-center rounded-xl bg-primary text-primary-foreground\">\n                <Sparkles className=\"size-4\" />\n              </span>\n              {brand}\n            </a>\n            <p className=\"mt-5 max-w-sm text-sm leading-relaxed text-muted-foreground\">\n              {description}\n            </p>\n            <form className=\"mt-7 flex max-w-sm gap-2\">\n              <Input\n                aria-label=\"Email address\"\n                placeholder={newsletterPlaceholder}\n                type=\"email\"\n              />\n              <Button aria-label=\"Subscribe\" size=\"icon\">\n                <ArrowUpRight />\n              </Button>\n            </form>\n          </div>\n          <div className=\"grid grid-cols-2 gap-8 sm:grid-cols-3\">\n            {groups.map((group) => (\n              <div key={group.title}>\n                <h3 className=\"text-xs font-semibold uppercase tracking-[.1em] text-muted-foreground\">\n                  {group.title}\n                </h3>\n                <ul className=\"mt-4 space-y-3\">\n                  {group.links.map((link) => {\n                    const item =\n                      typeof link === \"string\" ? { label: link } : link;\n                    return (\n                      <li key={item.label}>\n                        <a\n                          className=\"text-sm font-medium hover:text-primary\"\n                          href={item.href ?? \"#\"}\n                        >\n                          {item.label}\n                        </a>\n                      </li>\n                    );\n                  })}\n                </ul>\n              </div>\n            ))}\n          </div>\n        </div>\n        <div className=\"mt-14 flex flex-col gap-4 border-t border-foreground/8 pt-6 text-xs text-muted-foreground sm:flex-row sm:items-center\">\n          <p>© 2026 {brand}. All rights reserved.</p>\n          <div className=\"flex gap-5 sm:ml-auto\">\n            <a href=\"#\">Privacy</a>\n            <a href=\"#\">Terms</a>\n            <a aria-label=\"GitHub\" href=\"#\">\n              <Github className=\"size-4\" />\n            </a>\n            <a aria-label=\"LinkedIn\" href=\"#\">\n              <Linkedin className=\"size-4\" />\n            </a>\n          </div>\n        </div>\n      </div>\n    </footer>\n  );\n}\n\nexport { Footer01 };\nexport type { Footer01Props, FooterLinkGroup };\n",
      "type": "registry:block"
    }
  ],
  "type": "registry:block"
}