FAQ 5
Two-column FAQ block: a mono eyebrow, serif headline and short intro sit on the start side; a single-open accordion of five questions sits on the end side, split by a vertical divider that collapses to a stacked layout on mobile.
Preview
Installation
npx shadcn@latest add https://hirael.com/r/faq-05.jsonCode
components/blocks/faq-05.tsx
"use client";
import * as React from "react";
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/registry/hirael/ui/accordion";
const FAQS: readonly { id: string; q: string; a: string }[] = [
{
id: "item-1",
q: "Is there a free plan?",
a: "Yes. Start for free and explore the full dashboard, no card required. Upgrade only when you need more seats or higher limits.",
},
{
id: "item-2",
q: "Can I change plans later?",
a: "Anytime. Move up or down from the billing page and the change takes effect on your next cycle. Downgrades keep your data intact.",
},
{
id: "item-3",
q: "How is my data kept safe?",
a: "Everything is encrypted in transit and at rest. Access is scoped to members of your workspace, and you control who gets in.",
},
{
id: "item-4",
q: "Do you offer team accounts?",
a: "Yes. Invite teammates, set roles, and share workspaces. Billing is per seat, so you only pay for the people who use it.",
},
{
id: "item-5",
q: "What if I need help?",
a: "Reach out anytime. Most questions get a reply within a day, and there's a searchable guide for the common ones.",
},
];
export default function Faq05() {
return (
<section data-slot="faq" className="bg-background py-16 md:py-24">
<div className="mx-auto grid w-full max-w-5xl grid-cols-1 border-y border-border md:grid-cols-2 md:border-x">
<div
data-slot="faq-intro"
className="flex flex-col gap-4 border-b border-border px-6 pt-12 pb-6 md:border-b-0 md:border-e md:px-10 md:py-16"
>
<span className="font-mono text-[10px] uppercase tracking-[0.16em] text-foreground">
faq
</span>
<h2 className="font-serif text-4xl font-medium leading-[1.04] tracking-tight md:text-5xl">
Questions, answered.
</h2>
<p className="max-w-sm text-sm text-muted-foreground">
The things people ask most often. Still stuck? Reach out and we’ll
walk you through it.
</p>
</div>
<div
data-slot="faq-list"
className="flex flex-col justify-center px-6 py-4 md:px-8"
>
<Accordion type="single" collapsible className="w-full">
{FAQS.map((item) => (
<AccordionItem key={item.id} value={item.id}>
<AccordionTrigger>{item.q}</AccordionTrigger>
<AccordionContent className="text-muted-foreground">
{item.a}
</AccordionContent>
</AccordionItem>
))}
</Accordion>
</div>
</div>
</section>
);
}
Dependencies
shadcn registry
accordion