Staaarter

Hairline Answer Ledger

A compact FAQ with nothing hidden behind a click. Questions and answers sit in three labelled groups, each rendered as a two-column hairline-divided list, so every answer is scannable without expanding anything. Closes on a link to longer reading.

By Staaarter Team
FAQ
Docs
Live preview

Docs

Installation

A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its button dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/hairline-answer-ledger.json

Prefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/faq/faq84.tsx instead.

Usage

The file also exports faq84Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.

import { Faq84, faq84Demo } from "@/components/blocks/faq/faq84";

export default function Page() {
  return <Faq84 {...faq84Demo} />;
}

Props

PropTypeDefaultDescription
eyebrowstring"FAQ"Small label above the heading.
headingstring"Everything on the record"Section heading.
descriptionstring"No accordions, no clicking around. Every answer is right here."Supporting copy under the heading.
groupsFaqGroup[]noneLabelled groups of question/answer rows, rendered in order.
closingTextstring"Still have questions?"Text next to the closing link.
closingLinkLabelstring"Read the full documentation"Label of the closing link button.
closingLinkHrefstring"/docs"href of the closing link button.
classNamestringnoneExtra classes for the outer section element.

Types

type FaqEntry = { question: string; answer: string };

type FaqGroup = { label: string; entries: FaqEntry[] };

Behavior notes

  • Every question and answer is always visible; there is no expand/collapse state anywhere in this block, matching the brief's 'nothing hidden behind a click'.
  • Groups render as a plain list in the order passed in groups; there's no sorting, filtering, or count badge.
  • Each row is a CSS grid with two columns on sm+ screens (question left, answer right) and stacks to a single column below that breakpoint.
  • The closing link is a real Next.js Link rendered through Button's render prop, so it navigates like any other link; there's no scroll-spy or in-page anchor behavior.