Skip to content

FAQ Thread

Two-column FAQ: heading + ‘Chat with the team’ button, then disclosure rows whose plus turns into a cross; answers open beneath like an assistant reply with a small avatar. Native <details>, no JavaScript.

nocturne/section/faq-thread
Open ↗

Source

import { Plus } from "lucide-react";
import { cn } from "@/lib/utils";

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

export interface FaqThreadProps {
  title?: string;
  description?: string;
  items?: FaqThreadItem[];
  contact?: { label: string; href: string };
  className?: string;
}

const DEFAULT_ITEMS: FaqThreadItem[] = [
  { question: "Does Nova train on our data?", answer: "No. Your messages, files and connected apps are never used to train any model — ours or a provider's. Data is encrypted at rest and in transit." },
  { question: "Which tools can Nova connect to?", answer: "Slack, Notion, Linear, GitHub, Google Drive, Confluence and Jira today, with more every month. Nova respects each tool's permissions: people only get answers from what they can already see." },
  { question: "How does team memory work?", answer: "Nova keeps a structured summary of decisions, owners and open questions from your conversations and docs. You can review, edit or delete any memory from the Memory panel." },
  { question: "Can I choose the model?", answer: "Yes. Pro and Team plans can pick the model per conversation, or let Nova route automatically between a fast model and a deep-thinking one." },
  { question: "What happens when I cancel?", answer: "You keep access until the end of the billing period, then your workspace moves to the Free plan. Export everything at any time, in one click." },
];

/** FAQ as a thread: each question is a disclosure row with a plus that turns into a cross; answers open below like an assistant reply. Native <details>, no JS. */
export function FaqThread({
  title = "Questions, answered",
  description = "Still curious? Ask Nova — it knows this page by heart.",
  items = DEFAULT_ITEMS,
  contact = { label: "Chat with the team", href: "#contact" },
  className,
}: FaqThreadProps) {
  return (
    <section className={cn("da-section", className)}>
      <div className="da-container grid gap-10 lg:grid-cols-[1fr_1.6fr]">
        <div>
          <h2 className="font-da-display text-3xl font-semibold tracking-da-display text-balance sm:text-4xl">{title}</h2>
          <p className="mt-3 text-da-muted-fg">{description}</p>
          <a href={contact.href} className="da-focus da-transition da-stroke mt-6 inline-flex h-10 items-center rounded-da-pill bg-da-surface px-5 text-sm font-medium hover:bg-da-surface-2">
            {contact.label}
          </a>
        </div>
        <div className="flex flex-col gap-3">
          {items.map((item) => (
            <details key={item.question} className="group da-stroke rounded-da-lg bg-da-surface open:bg-da-surface-2">
              <summary className="da-focus flex cursor-pointer list-none items-center gap-4 rounded-da-lg px-5 py-4 text-[15px] font-medium [&::-webkit-details-marker]:hidden">
                <span className="flex-1">{item.question}</span>
                <Plus aria-hidden className="da-transition size-4 shrink-0 text-da-muted-fg group-open:rotate-45 group-open:text-da-primary" />
              </summary>
              <div className="flex gap-3 px-5 pb-5">
                <span aria-hidden className="mt-0.5 grid size-6 shrink-0 place-items-center rounded-full bg-da-primary font-da-display text-[10px] font-semibold text-da-primary-fg">N</span>
                <p className="text-sm leading-relaxed text-da-muted-fg">{item.answer}</p>
              </div>
            </details>
          ))}
        </div>
      </div>
    </section>
  );
}

export default FaqThread;

modules/nocturne/section/faq-thread/index.tsx

Props

PropTypeDefaultDescription
title / descriptionstring—Heading copy.
items{ question, answer }[]—Questions.
contact{ label, href }—Secondary action.

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