{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "faq-contact-sidebar",
  "title": "FAQ — With Contact Sidebar",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-react/blocks/faq-contact-sidebar/FaqContactSidebar.tsx",
      "content": "'use client'\n\nimport { ArrowRight, BookOpen, MessageSquare } from 'lucide-react'\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion'\nimport { Avatar, AvatarFallback } from '@/components/ui/avatar'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { Card, CardContent } from '@/components/ui/card'\nimport { Separator } from '@/components/ui/separator'\n\nconst faqs = [\n  {\n    q: 'Can we trial it against production data?',\n    a: 'Yes, and we recommend it. The connection is read-only, so a trial runs against the real warehouse without a staging copy or a data loading step.',\n  },\n  {\n    q: 'Who owns the definitions after hand-over?',\n    a: 'You do. They live in your repository, reviewed by your team. If the contract ends, the definitions and their history stay where they are.',\n  },\n  {\n    q: 'What happens if the warehouse is down?',\n    a: 'Materialised aggregates keep serving with a visible freshness stamp. Live queries fail loudly rather than returning a stale number silently.',\n  },\n  {\n    q: 'Do you support on-premise warehouses?',\n    a: 'Postgres and SQL Server over a private link, yes. Anything requiring an agent inside your network is on the roadmap but not shipped.',\n  },\n  {\n    q: 'How are restatements handled?',\n    a: 'A restatement is a definition change with an effective date. Prior periods are recomputed and the change log records who approved it and when.',\n  },\n]\n\nexport function FaqContactSidebar() {\n  return (\n    <section data-slot=\"faq-contact-sidebar\" className=\"bg-background\">\n      <div className=\"mx-auto max-w-6xl px-6 py-20 lg:py-28\">\n        <div className=\"grid gap-12 lg:grid-cols-[1.6fr_1fr] lg:gap-16\">\n          <div>\n            <Badge variant=\"secondary\">FAQ</Badge>\n            <h2 className=\"mt-4 text-3xl font-semibold tracking-tight sm:text-4xl\">Before you book a call</h2>\n            <p className=\"text-muted-foreground mt-3 text-lg\">\n              The five questions that come up most, answered without a form in the way.\n            </p>\n\n            <Accordion type=\"single\" collapsible className=\"mt-8 w-full\">\n              {faqs.map((faq) => (\n                <AccordionItem key={faq.q} value={faq.q}>\n                  <AccordionTrigger className=\"text-left font-medium\">{faq.q}</AccordionTrigger>\n                  <AccordionContent className=\"text-muted-foreground leading-relaxed\">{faq.a}</AccordionContent>\n                </AccordionItem>\n              ))}\n            </Accordion>\n          </div>\n\n          {/* Sticky so it stays beside the list however far the accordion expands. */}\n          <aside className=\"lg:sticky lg:top-24 lg:self-start\">\n            <Card>\n              <CardContent className=\"p-6\">\n                <div className=\"flex items-center gap-3\">\n                  <Avatar className=\"size-10\">\n                    <AvatarFallback className=\"text-xs\">DB</AvatarFallback>\n                  </Avatar>\n                  <div className=\"min-w-0\">\n                    <p className=\"truncate text-sm font-medium\">Daniel Brooks</p>\n                    <p className=\"text-muted-foreground truncate text-xs\">Solutions engineering</p>\n                  </div>\n                </div>\n\n                <p className=\"text-muted-foreground mt-4 text-sm leading-relaxed\">\n                  Ask the awkward version of your question. An engineer answers, not a sales inbox.\n                </p>\n\n                <div className=\"mt-5 grid gap-2\">\n                  <Button>\n                    <MessageSquare className=\"mr-2 size-4\" aria-hidden=\"true\" />\n                    Ask a question\n                  </Button>\n                  <Button variant=\"outline\">\n                    <BookOpen className=\"mr-2 size-4\" aria-hidden=\"true\" />\n                    Read the docs\n                  </Button>\n                </div>\n\n                <Separator className=\"my-5\" />\n\n                <dl className=\"space-y-2 text-xs\">\n                  <div className=\"flex items-center justify-between gap-3\">\n                    <dt className=\"text-muted-foreground\">Median first reply</dt>\n                    <dd className=\"font-medium\">3 h 40 m</dd>\n                  </div>\n                  <div className=\"flex items-center justify-between gap-3\">\n                    <dt className=\"text-muted-foreground\">Coverage</dt>\n                    <dd className=\"font-medium\">Mon–Fri, 08:00–20:00 UTC</dd>\n                  </div>\n                </dl>\n\n                <Button variant=\"link\" className=\"mt-4 h-auto p-0 text-xs\">\n                  See the full FAQ\n                  <ArrowRight className=\"ml-1 size-3\" aria-hidden=\"true\" />\n                </Button>\n              </CardContent>\n            </Card>\n          </aside>\n        </div>\n      </div>\n    </section>\n  )\n}\n",
      "type": "registry:block",
      "target": "~/components/blocks/FaqContactSidebar.tsx"
    }
  ],
  "dependencies": [
    "lucide-react"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://uipkge.dev/r/react/accordion.json",
    "https://uipkge.dev/r/react/avatar.json",
    "https://uipkge.dev/r/react/badge.json",
    "https://uipkge.dev/r/react/button.json",
    "https://uipkge.dev/r/react/card.json",
    "https://uipkge.dev/r/react/separator.json"
  ],
  "description": "Accordion of answers beside a sticky support card offering a named contact, response-time expectation, and a link to the docs, for the questions a page cannot pre-empt.",
  "categories": [
    "marketing"
  ]
}