{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "agency",
  "type": "registry:block",
  "title": "Agency site",
  "description": "An agency or studio website: a hero over an image, a grid of work, process steps, a featured quote and the team.",
  "categories": [
    "template"
  ],
  "registryDependencies": [
    "https://facadeui.dev/r/card-list.json",
    "https://facadeui.dev/r/cta-band.json",
    "https://facadeui.dev/r/footer.json",
    "https://facadeui.dev/r/hero-with-media.json",
    "https://facadeui.dev/r/logo-cloud.json",
    "https://facadeui.dev/r/logo-mark.json",
    "https://facadeui.dev/r/nav-top.json",
    "https://facadeui.dev/r/stat.json",
    "https://facadeui.dev/r/stats.json",
    "https://facadeui.dev/r/steps.json",
    "https://facadeui.dev/r/team.json",
    "https://facadeui.dev/r/testimonial.json",
    "https://facadeui.dev/r/testimonial-single.json",
    "https://facadeui.dev/r/types.json"
  ],
  "files": [
    {
      "path": "src/templates/agency.tsx",
      "type": "registry:component",
      "target": "components/templates/agency.tsx",
      "content": "/**\n * Agency — a studio or agency site, assembled from registry sections.\n *\n * Differs from `SaasLanding` in shape rather than in parts: a centred hero over\n * media, work as a card grid, a process as numbered steps, the people, and one\n * featured quote instead of a wall of them. Agencies sell judgement and people,\n * so the page leads with work and faces rather than with features and pricing.\n *\n * a11y: the same explicit outline discipline — the hero is the page's `<h1>`,\n * every band an `<h2>`, every item an `<h3>`. The hero uses the `overlay`\n * placement, which always paints a scrim, because text over an arbitrary image\n * has no guaranteed contrast ratio.\n *\n * Dependencies: react, @/lib/types, @/components/sections/*.\n */\n\nimport type { ReactNode } from \"react\"\n\nimport type { CtaItem, ImageComponent, LinkComponent } from \"@/lib/types\"\nimport { CardList, type CardItem } from \"@/components/sections/card-list\"\nimport { CtaBand } from \"@/components/sections/cta-band\"\nimport { Footer, type FooterGroup, type FooterLink } from \"@/components/sections/footer\"\nimport { HeroWithMedia } from \"@/components/sections/hero-with-media\"\nimport { LogoCloud } from \"@/components/sections/logo-cloud\"\nimport { NavTop, type NavItem } from \"@/components/sections/nav-top\"\nimport { Stats } from \"@/components/sections/stats\"\nimport { Steps, type StepItem } from \"@/components/sections/steps\"\nimport { Team, type TeamMember } from \"@/components/sections/team\"\nimport { TestimonialSingle } from \"@/components/sections/testimonial-single\"\nimport type { LogoItem } from \"@/components/ui/logo-mark\"\nimport type { StatItem } from \"@/components/ui/stat\"\nimport type { TestimonialItem } from \"@/components/ui/testimonial\"\n\nexport interface AgencyContent {\n  brand: ReactNode\n  nav: NavItem[]\n  navActions?: CtaItem[]\n\n  hero: {\n    eyebrow?: string\n    title: string\n    description: string\n    actions: CtaItem[]\n    /** Decorative in overlay placement: give it `alt=\"\"`. */\n    media: ReactNode\n  }\n\n  clients?: { title?: string; items: LogoItem[] }\n\n  work: {\n    eyebrow?: string\n    title: string\n    description?: string\n    items: CardItem[]\n  }\n\n  process?: {\n    eyebrow?: string\n    title: string\n    description?: string\n    items: StepItem[]\n  }\n\n  stats?: { title?: string; eyebrow?: string; items: StatItem[] }\n\n  quote?: { title?: string; item: TestimonialItem }\n\n  team?: {\n    eyebrow?: string\n    title: string\n    description?: string\n    items: TeamMember[]\n  }\n\n  cta: {\n    eyebrow?: string\n    title: string\n    description?: string\n    actions: CtaItem[]\n  }\n\n  footer: {\n    groups?: FooterGroup[]\n    brand?: ReactNode\n    copyright?: ReactNode\n    legal?: FooterLink[]\n  }\n}\n\nexport interface AgencyProps {\n  content: AgencyContent\n  image?: ImageComponent\n  link?: LinkComponent\n  currentPath?: string\n  banner?: ReactNode\n}\n\nexport function Agency({ content, image, link, currentPath, banner }: AgencyProps) {\n  const { hero, clients, work, process, stats, quote, team, cta, footer } = content\n\n  return (\n    <>\n      {banner}\n\n      <NavTop\n        brand={content.brand}\n        items={content.nav}\n        actions={content.navActions}\n        link={link}\n        currentPath={currentPath}\n      />\n\n      <main id=\"main\">\n        <HeroWithMedia\n          eyebrow={hero.eyebrow}\n          title={hero.title}\n          description={hero.description}\n          actions={hero.actions}\n          media={hero.media}\n          link={link}\n          placement=\"overlay\"\n          size=\"xl\"\n          headingLevel={1}\n          spacing=\"lg\"\n        />\n\n        {clients ? (\n          <LogoCloud\n            title={clients.title}\n            items={clients.items}\n            image={image}\n            link={link}\n            headingLevel={2}\n            spacing=\"sm\"\n          />\n        ) : null}\n\n        <CardList\n          eyebrow={work.eyebrow}\n          title={work.title}\n          description={work.description}\n          items={work.items}\n          image={image}\n          link={link}\n          headingLevel={2}\n          itemHeadingLevel={3}\n          columns={3}\n        />\n\n        {process ? (\n          <Steps\n            eyebrow={process.eyebrow}\n            title={process.title}\n            description={process.description}\n            items={process.items}\n            headingLevel={2}\n            itemHeadingLevel={3}\n          />\n        ) : null}\n\n        {quote ? (\n          <TestimonialSingle\n            title={quote.title ?? \"Client story\"}\n            item={quote.item}\n            image={image}\n            variant=\"muted\"\n          />\n        ) : null}\n\n        {stats ? (\n          <Stats\n            eyebrow={stats.eyebrow}\n            title={stats.title}\n            items={stats.items}\n            headingLevel={2}\n            variant=\"divided\"\n            className=\"border-y\"\n          />\n        ) : null}\n\n        {team ? (\n          <Team\n            eyebrow={team.eyebrow}\n            title={team.title}\n            description={team.description}\n            items={team.items}\n            image={image}\n            link={link}\n            headingLevel={2}\n            itemHeadingLevel={3}\n            shape=\"circle\"\n          />\n        ) : null}\n\n        <CtaBand\n          eyebrow={cta.eyebrow}\n          title={cta.title}\n          description={cta.description}\n          actions={cta.actions}\n          link={link}\n          headingLevel={2}\n          layout=\"split\"\n          variant=\"card\"\n        />\n      </main>\n\n      <Footer\n        brand={footer.brand ?? content.brand}\n        groups={footer.groups}\n        copyright={footer.copyright}\n        legal={footer.legal}\n        link={link}\n        headingLevel={2}\n      />\n    </>\n  )\n}\n"
    }
  ],
  "docs": "Import styles/facade-tokens.css in your global stylesheet, after @import \"tailwindcss\". Render the template from a page with your own content object; it sets the page outline (one h1). Docs: https://facadeui.dev/components/agency"
}
