{
  "$schema": "https://shadcn-vue.com/schema/registry-item.json",
  "name": "faq-contact-sidebar",
  "title": "FAQ — With Contact Sidebar",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-vue/blocks/faq-contact-sidebar/FaqContactSidebar.vue",
      "content": "<script setup lang=\"ts\">\nimport { ArrowRight, BookOpen, MessageSquare } from 'lucide-vue-next'\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</script>\n\n<template>\n  <section data-slot=\"faq-contact-sidebar\" class=\"bg-background\">\n    <div class=\"mx-auto max-w-6xl px-6 py-20 lg:py-28\">\n      <div class=\"grid gap-12 lg:grid-cols-[1.6fr_1fr] lg:gap-16\">\n        <div>\n          <Badge variant=\"secondary\">FAQ</Badge>\n          <h2 class=\"mt-4 text-3xl font-semibold tracking-tight sm:text-4xl\">Before you book a call</h2>\n          <p class=\"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 class=\"mt-8 w-full\">\n            <AccordionItem v-for=\"faq in faqs\" :key=\"faq.q\" :value=\"faq.q\">\n              <AccordionTrigger class=\"text-left font-medium\">{{ faq.q }}</AccordionTrigger>\n              <AccordionContent class=\"text-muted-foreground leading-relaxed\">{{ faq.a }}</AccordionContent>\n            </AccordionItem>\n          </Accordion>\n        </div>\n\n        <!-- Sticky so it stays beside the list however far the accordion expands. -->\n        <aside class=\"lg:sticky lg:top-24 lg:self-start\">\n          <Card>\n            <CardContent class=\"p-6\">\n              <div class=\"flex items-center gap-3\">\n                <Avatar class=\"size-10\">\n                  <AvatarFallback class=\"text-xs\">DB</AvatarFallback>\n                </Avatar>\n                <div class=\"min-w-0\">\n                  <p class=\"truncate text-sm font-medium\">Daniel Brooks</p>\n                  <p class=\"text-muted-foreground truncate text-xs\">Solutions engineering</p>\n                </div>\n              </div>\n\n              <p class=\"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 class=\"mt-5 grid gap-2\">\n                <Button>\n                  <MessageSquare class=\"mr-2 size-4\" aria-hidden=\"true\" />\n                  Ask a question\n                </Button>\n                <Button variant=\"outline\">\n                  <BookOpen class=\"mr-2 size-4\" aria-hidden=\"true\" />\n                  Read the docs\n                </Button>\n              </div>\n\n              <Separator class=\"my-5\" />\n\n              <dl class=\"space-y-2 text-xs\">\n                <div class=\"flex items-center justify-between gap-3\">\n                  <dt class=\"text-muted-foreground\">Median first reply</dt>\n                  <dd class=\"font-medium\">3 h 40 m</dd>\n                </div>\n                <div class=\"flex items-center justify-between gap-3\">\n                  <dt class=\"text-muted-foreground\">Coverage</dt>\n                  <dd class=\"font-medium\">Mon–Fri, 08:00–20:00 UTC</dd>\n                </div>\n              </dl>\n\n              <Button variant=\"link\" class=\"mt-4 h-auto p-0 text-xs\">\n                See the full FAQ\n                <ArrowRight class=\"ml-1 size-3\" aria-hidden=\"true\" />\n              </Button>\n            </CardContent>\n          </Card>\n        </aside>\n      </div>\n    </div>\n  </section>\n</template>\n",
      "type": "registry:block",
      "target": "~/app/components/blocks/FaqContactSidebar.vue"
    }
  ],
  "dependencies": [
    "lucide-vue-next"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://uipkge.dev/r/vue/accordion.json",
    "https://uipkge.dev/r/vue/avatar.json",
    "https://uipkge.dev/r/vue/badge.json",
    "https://uipkge.dev/r/vue/button.json",
    "https://uipkge.dev/r/vue/card.json",
    "https://uipkge.dev/r/vue/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"
  ]
}