FAQ grid of nine short questions and answers in three columns under a heading and a support link. Built for brief answers that read at a glance.
import {
FaqList,
FaqListAnswer,
FaqListItem,
FaqListQuestion,
} from "@/components/editorial/faq-list"
import { Heading } from "@/components/editorial/heading"
import {
Section,
SectionContent,
SectionDescription,
SectionHeader,
SectionTitleGroup,
} from "@/components/editorial/section"
// The copy: change text here, not in the markup.
const COPY = {
title: "Frequently asked questions",
support: {
lead: "Can’t find the answer you need? Write to ",
label: "customer support",
tail: " and a person replies within one business day.",
},
} as const
const FAQS = [
{
id: "install",
question: "How do I install a block?",
answer:
"Run the command shown under the block. The CLI copies the source into your project.",
},
{
id: "existing",
question: "Does it fit an existing project?",
answer:
"Yes. It uses the same tokens and primitives as stock shadcn, so nothing has to be re-themed.",
},
{
id: "customize",
question: "Can I edit the copy?",
answer:
"Every word lives in a constant at the top of each file. Change it there.",
},
{
id: "updates",
question: "How do updates arrive?",
answer:
"Re-run the install command. The CLI diffs first and never overwrites an edited file silently.",
},
{
id: "dark",
question: "Is dark mode included?",
answer: "Every block renders light and dark from the same tokens.",
},
{
id: "license",
question: "Can I use it for clients?",
answer:
"One license covers every project you build, for yourself or for anyone else.",
},
{
id: "frameworks",
question: "Which frameworks are supported?",
answer: "Next.js, Vite and Remix on React 19 with Tailwind v4.",
},
{
id: "refund",
question: "What if it is not for me?",
answer:
"Write within fourteen days and we refund the purchase, no questions.",
},
{
id: "support",
question: "How do I get help?",
answer:
"Email support on every plan, with a reply within one business day.",
},
] as const
export default function FaqGrid01() {
return (
<Section>
<SectionHeader>
<SectionTitleGroup>
<Heading>{COPY.title}</Heading>
</SectionTitleGroup>
<SectionDescription>
{COPY.support.lead}
<a href="#" className="font-semibold text-foreground">
{COPY.support.label}
</a>
{COPY.support.tail}
</SectionDescription>
</SectionHeader>
<SectionContent>
<FaqList cols={3}>
{FAQS.map((faq) => (
<FaqListItem key={faq.id}>
<FaqListQuestion>{faq.question}</FaqListQuestion>
<FaqListAnswer>{faq.answer}</FaqListAnswer>
</FaqListItem>
))}
</FaqList>
</SectionContent>
</Section>
)
}
pnpm dlx shadcn add @01orbital/faq-grid-01npx shadcn add @01orbital/faq-grid-01yarn shadcn add @01orbital/faq-grid-01bunx --bun shadcn add @01orbital/faq-grid-01Free under the MIT license. Add the @01orbital registry to components.json once (install guide), then run the command.
It lands at components/blocks/faq/faq-grid-01/index.tsx, as source you own and edit.
import FaqGrid01 from "@/components/blocks/faq/faq-grid-01"
export default function Example() {
return <FaqGrid01 />
}Registry pieces it installs with it:
Support Questions
Support FAQ beside a contact card with planetary artwork, reply hours, an email link and a booking action.
Two-Column FAQ Accordion
Two-column FAQ with a short heading on the left and an accordion of five install and licensing questions on the right. Answers expand one at a time on click.