Skip to content

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.

minimal/section/faq-tabs
Open ↗

Source

"use client";

import { Tabs } from "radix-ui";
import { cn } from "@/lib/utils";

export interface FaqTabsCategory {
  label: string;
  items: { question: string; answer: string }[];
}

export interface FaqTabsProps {
  eyebrow?: string;
  title?: string;
  categories?: FaqTabsCategory[];
  className?: string;
}

const DEFAULT_CATEGORIES: FaqTabsCategory[] = [
  {
    label: "Product",
    items: [
      {
        question: "Which monitoring tools do you integrate with?",
        answer: "60+ out of the box, including Datadog, Grafana, Prometheus, Sentry, New Relic, CloudWatch and any tool that can send a webhook or email.",
      },
      { question: "Do you support Microsoft Teams?", answer: "Yes. War rooms, commands and notifications work in Slack and Teams with feature parity." },
      {
        question: "Can stakeholders follow an incident without a seat?",
        answer: "Yes. Stakeholders subscribe to updates by email or Slack and view the timeline read-only, for free.",
      },
    ],
  },
  {
    label: "Billing",
    items: [
      { question: "How are seats counted?", answer: "Monthly, by the number of distinct responders on any schedule or escalation policy. Viewers are free." },
      { question: "Do you offer discounts?", answer: "20% off with yearly billing, and 50% off for non-profits and early-stage startups under $5M raised." },
      { question: "Can I pay by invoice?", answer: "Yes, on yearly Business and Enterprise plans, with NET-30 terms." },
    ],
  },
  {
    label: "Security",
    items: [
      { question: "Are you SOC 2 certified?", answer: "Yes, SOC 2 Type II and ISO 27001. Reports are available under NDA in the Trust Center." },
      { question: "Do you support SSO?", answer: "SAML SSO with Okta, Entra ID and Google on Business; SCIM provisioning on Enterprise." },
      { question: "Where is data hosted?", answer: "AWS us-east-1 by default, or eu-central-1 on Enterprise with full EU data residency." },
    ],
  },
];

/** FAQ grouped by category with an underline tab list (Radix Tabs); every answer in the active tab is visible. */
export function FaqTabs({ eyebrow = "Help center", title = "Frequently asked questions", categories = DEFAULT_CATEGORIES, className }: FaqTabsProps) {
  return (
    <section aria-labelledby="faq-tabs-title" className={cn("da-section bg-da-bg text-da-fg", className)}>
      <div className="da-container">
        <div className="max-w-2xl">
          <p className="font-da-mono text-xs text-da-accent-fg">{eyebrow}</p>
          <h2 id="faq-tabs-title" className="mt-3 text-[clamp(1.875rem,4vw,2.75rem)] leading-[1.1] font-semibold tracking-da-display">
            {title}
          </h2>
        </div>
        <Tabs.Root defaultValue={categories[0]?.label} className="mt-10">
          <Tabs.List aria-label="FAQ categories" className="flex gap-6 overflow-x-auto border-b border-da-border">
            {categories.map((c) => (
              <Tabs.Trigger
                key={c.label}
                value={c.label}
                className="da-focus da-transition -mb-px shrink-0 rounded-t-da-sm border-b-2 border-transparent pb-3 text-sm text-da-muted-fg hover:text-da-fg data-[state=active]:border-da-primary data-[state=active]:font-medium data-[state=active]:text-da-fg"
              >
                {c.label}
                <span className="ml-1.5 font-da-mono text-[11px] text-da-muted-fg">{c.items.length}</span>
              </Tabs.Trigger>
            ))}
          </Tabs.List>
          {categories.map((c) => (
            <Tabs.Content key={c.label} value={c.label} className="da-focus rounded-da-sm transition-opacity duration-(--da-duration) starting:opacity-0">
              <dl className="grid gap-x-12 gap-y-8 pt-8 md:grid-cols-2">
                {c.items.map((it) => (
                  <div key={it.question}>
                    <dt className="text-[15px] font-medium">{it.question}</dt>
                    <dd className="mt-2 text-[15px] leading-relaxed text-da-muted-fg">{it.answer}</dd>
                  </div>
                ))}
              </dl>
            </Tabs.Content>
          ))}
        </Tabs.Root>
      </div>
    </section>
  );
}

export default FaqTabs;

modules/minimal/section/faq-tabs/index.tsx

Props

PropTypeDefaultDescription
eyebrow / titlestring—Header copy.
categories{ label, items: { question, answer }[] }[]—Tabs and their questions.
classNamestring—Classes on the section.

Other faq variants in Minimal

FAQ in other art directions

FAQ Accordion

Two-column FAQ: sticky title + support CTA on the left, numbered accordion cards on the right with a yellow plus that rotates into an ink cross when open. Built on Radix Accordion.

BrutalistFAQ

FAQ Categories

Help-center style FAQ: topic buttons with counts on the left (stacked on desktop, wrapped on mobile), and a ruled accordion on the right whose open question floods yellow.

BrutalistFAQ

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.

BrutalistFAQ

FAQ Search

Searchable FAQ: a huge ruled search field that presses in on focus, live result count, and native <details> cards with tags; a pink empty state points to support.

BrutalistFAQ

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 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