Skip to content

FAQ Grid

Always-open FAQ grid: ruled cells (1/2/3 columns) with a yellow question-mark square, uppercase question and answer, closed by a full-width ink contact row. No interaction needed.

brutalist/section/faq-grid
Open ↗

Source

import { cn } from "@/lib/utils";

export interface FaqGridItem {
  question: string;
  answer: string;
}

export interface FaqGridProps {
  kicker?: string;
  title?: string;
  items?: FaqGridItem[];
  contact?: { text: string; label: string; href: string };
  className?: string;
}

const DEFAULT_ITEMS: FaqGridItem[] = [
  {
    question: "How long does setup take?",
    answer: "About five minutes: install the Git app, pick a repo, label a PR. Your first changelog page is live right after.",
  },
  { question: "Do I have to use AI summaries?", answer: "No. They're drafts you can edit or turn off per project. Plain PR titles work great too." },
  { question: "Can readers subscribe?", answer: "Yes — by email, RSS, Slack or in-app. They choose the channel and frequency." },
  { question: "Is there an API?", answer: "A REST API and webhooks for everything: create releases from CI, sync to your CMS, trigger digests." },
  { question: "What about monorepos?", answer: "Route PRs to projects by path or label. One repo can feed ten changelogs." },
  { question: "How does billing work?", answer: "Per project, monthly or yearly. Readers, releases and team members are unlimited on every plan." },
];

export function FaqGrid({
  kicker = "[ 07 ] FAQ",
  title = "Short answers to fair questions.",
  items = DEFAULT_ITEMS,
  contact = { text: "Didn't find yours?", label: "Ask an engineer", href: "#support" },
  className,
}: FaqGridProps) {
  return (
    <section className={cn("da-section da-stroke-b bg-da-bg text-da-fg", className)} aria-labelledby="faq-grid-title">
      <div className="da-container">
        <p className="font-da-mono text-xs font-bold tracking-da-label text-da-muted-fg uppercase">{kicker}</p>
        <h2 id="faq-grid-title" className="mt-3 font-da-display text-[clamp(2rem,5vw,3.5rem)] leading-[0.95] tracking-da-display uppercase">
          {title}
        </h2>
        <dl className="da-stroke mt-12 grid gap-(--da-border-width) bg-da-border sm:grid-cols-2 lg:grid-cols-3">
          {items.map((item) => (
            <div key={item.question} className="group bg-da-surface p-6 text-da-surface-fg">
              <dt className="flex gap-3 font-da-display text-lg leading-tight tracking-da-display uppercase">
                <span
                  aria-hidden
                  className="da-stroke grid size-7 shrink-0 place-items-center bg-da-primary font-da-mono text-xs text-da-primary-fg group-hover:bg-da-accent group-hover:text-da-accent-fg"
                >
                  ?
                </span>
                {item.question}
              </dt>
              <dd className="mt-3 pl-10 text-da-muted-fg">{item.answer}</dd>
            </div>
          ))}
          <div className="flex flex-col justify-center gap-3 bg-da-fg p-6 text-da-bg sm:col-span-2 lg:col-span-3 lg:flex-row lg:items-center lg:justify-between">
            <dt className="font-da-display text-2xl tracking-da-display uppercase">{contact.text}</dt>
            <dd>
              <a href={contact.href} className="da-focus da-stroke inline-block bg-da-primary px-5 py-3 font-bold text-da-primary-fg">
                {contact.label} →
              </a>
            </dd>
          </div>
        </dl>
      </div>
    </section>
  );
}

export default FaqGrid;

modules/brutalist/section/faq-grid/index.tsx

Props

PropTypeDefaultDescription
kicker / titlestring—Header copy.
itemsFaqGridItem[]—{ question, answer }[] (multiples of 3 look best).
contact{ text: string; label: string; href: string }—Closing contact row.
classNamestring—Classes on the <section>.

Other faq variants in Brutalist

FAQ in other art directions

Faq Cards

All-open FAQ: a 3-column grid of glass cards, each with a gradient number badge, question and answer, followed by a glass contact pill with an ink button.

GlassFAQ

Faq Chat

FAQ as a chat: suggested question chips on the left; picking one adds a gradient user bubble and, after a typing indicator, a glass answer bubble in the conversation panel.

GlassFAQ

FAQ Glass

Centered FAQ with stacked frosted accordion cards; the plus button spins into a gradient cross with a slight overshoot and answers expand smoothly. Built on Radix Accordion.

GlassFAQ

Faq Search

Help-center FAQ: large glass search pill filtering a frosted Radix accordion live, with category tags, result count and highlighted matches; empty state.

GlassFAQ

Faq Grid

All answers visible at once: a three-column grid of short questions and answers under a header, followed by two support link cards (documentation, talk to us).

MinimalFAQ

Faq List

Centered single-column FAQ built on native details/summary (zero JS): hairline dividers, a plus icon that rotates into a cross when open, and a contact line underneath.

MinimalFAQ

FAQ Split

Two-column FAQ: title, description and support link on the left, hairline-divided Radix accordion on the right with a rotating chevron and a smooth height + fade expand.

MinimalFAQ

Faq Tabs

FAQ grouped by category behind an underline tab bar (Radix Tabs, with counts); the active category shows every question and answer in a two-column definition list.

MinimalFAQ

Faq Inline

Ultra-compact FAQ: short questions and one-line answers flowing as a 3-column grid of mono question labels over large answers — scannable in seconds.

Mono CleanFAQ

Faq List

Numbered accordion FAQ in a ruled list: mono index + question, a +/− glyph that swaps, answer indented under the question; left column holds the label and title.

Mono CleanFAQ

Faq Split

Always-open FAQ as a two-column definition list (question left in medium weight, answer right in muted text) on hairline rows, followed by a mono contact line.

Mono CleanFAQ

Faq Tabs

FAQ grouped by topic with text tabs (Radix Tabs) underlined in ink when active, and each topic’s answers as a ruled definition list.

Mono CleanFAQ

Faq Accordion

Two-column FAQ: heading + description + contact link on the left, bordered Radix accordion with plus icons rotating to × on the right.

Neo CorporateFAQ

Faq Security

Security & compliance FAQ: dark-tinted certification cards (SOC 2, ISO 27001, GDPR, PCI) with shield icons, then security questions as native <details> disclosure rows.

Neo CorporateFAQ

Faq Sidebar

Help-center style FAQ: a vertical category nav (left, becomes horizontal scroll chips on mobile) and the selected category’s questions as an open definition list.

Neo CorporateFAQ

Faq Support

Compact 2×3 grid of short Q&As followed by three bordered support channel cards (docs, chat, dedicated support).

Neo CorporateFAQ

Faq Columns

Editorial FAQ: serif title and intro in a narrow left column, questions as a two-column definition list on the right separated by warm hairlines.

Organic SoftFAQ

Faq Contact

FAQ beside a contact card: native disclosure list on the left, and a clay-tinted card with a sprouting-leaf illustration, email and chat buttons on the right.

Organic SoftFAQ

Faq Search

Searchable FAQ: rounded search field plus topic pills filter a list of questions (native details), with a friendly empty state and live result count.

Organic SoftFAQ

Faq Soft

Soft accordion: each question is its own rounded paper pill-card that turns sage when open, with a round plus that rotates into a cross; generous spacing.

Organic SoftFAQ

Faq Columns

All-visible FAQ: sticky intro with a peach “Chat with us” pill on the left, six Q&As in a 2-column grid with round lavender number badges on the right.

Soft FlatFAQ

Faq Help

Help-center FAQ: lavender panel with a friendly greeting, big white search pill and popular-search chips; matching answers show as white cards with a peach empty state.

Soft FlatFAQ

Faq Pills

Single-column FAQ of rounded white blocks on native details/summary; the open item turns lavender and its round chevron button flips and fills periwinkle.

Soft FlatFAQ

Faq Tinted

FAQ by topic: three big pastel topic buttons (emoji + label) switch the list of white Q&A cards below, which fades in on change.

Soft FlatFAQ