Ask And Answered In Public

About this block

Ask And Answered In PublicPRO

An open question FAQ pairing a soft panel that sticks while you scroll, holding a working question and email form, with the questions others sent recently answered as linked hairline entries.

Faq91: Ask And Answered In Public

An open question FAQ pairing a soft panel that sticks while you scroll, holding a working question and email form, with the questions others sent recently answered as linked hairline entries.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/faq91?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/faq91?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/faq91.tsx, the shadcn/ui input and textarea components it depends on, and the badge23 and button21 components it uses for the eyebrow and the submit action.

Quick start

The installed file exports faq91Demo alongside the block: the exact props behind the preview above. Spread it to get a working page in one line.

tsx
import { Faq91, faq91Demo } from "@/components/beste/block/faq91";

export default function AskPage() {
  return <Faq91 {...faq91Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Faq91 } from "@/components/beste/block/faq91";

export default function AskPage() {
  return (
    <Faq91
      badge={{ label: "Ask us anything" }}
      heading="If it is not answered yet, ask and we will publish the answer"
      description="Questions go to an engineer, not a marketing inbox."
      formTitle="Your question"
      form={{
        questionLabel: "What do you need to know",
        questionPlaceholder: "For example: what happens to our data if you are acquired?",
        emailLabel: "Where should the answer go",
        emailPlaceholder: "you@practice.com",
        submitLabel: "Send the question",
        finePrint: "We answer within one working day and never add you to a mailing list.",
      }}
      listTitle="Asked recently, answered in public"
      questions={[
        {
          question: "What happens to our data if you are acquired?",
          answer: "The data processing agreement survives a change of control.",
          askedBy: "A group of four clinics, May 2026",
          href: "/answers/acquisition",
        },
        {
          question: "Do you train models on our member records?",
          answer: "No, and the contract says so.",
          askedBy: "A practice manager, May 2026",
          href: "/answers/training",
        },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Eyebrow above the hairline rule, rendered through Badge23
headingstringSection heading in the left column of the header
descriptionstringSupporting paragraph, right-aligned from md up
formTitlestringHeading inside the sticky form panel
formAskFormEvery label, placeholder and caption in the form
listTitlestringHeading above the answered questions
questionsAskedQuestion[][]Previously answered questions, each a link
classNamestringExtra classes for the outer section
ts
type AskForm = {
  questionLabel: string;
  questionPlaceholder: string;
  emailLabel: string;
  emailPlaceholder: string;
  submitLabel: string;
  finePrint: string;
};

type AskedQuestion = {
  question: string;
  answer: string;
  askedBy: string;
  href: string;
};

Behavior notes

  • The form panel is lg:sticky lg:top-24 lg:self-start. The self-start is required: without it the panel stretches to the full grid row height and sticky positioning has nothing to travel within. Adjust top-24 to match your own fixed header.
  • Sticky is lg and above only. Below that the form scrolls normally and lands above the answered questions.
  • Both fields are shadcn/ui components, Textarea and Input, which is why both appear in the block's registry dependencies. Field ids come from useId, so labels stay correctly associated with several instances on one page.
  • Both fields carry bg-background explicitly, since they sit on a bg-muted panel and would otherwise blend into it.
  • The form is uncontrolled and holds no state. There is no onSubmit, so the send call is wired by the integrator.
  • askedBy is deliberately an attribution rather than a name field. The demo credits roles rather than individuals, which is what lets the page be public without asking permission for each entry.
  • Quotation marks around the question are added by the block as entities, so pass plain text.
  • Each answered entry is a whole Link with a hover fill and md:px-4, so the row highlight extends slightly past the text on wider screens.

Wiring the form up

The question form renders its fields and leaves submission to you. For validation, error states and submit handling, the patterns in React Hook Form, TanStack Form, and Formisch cover this shape of two-field form.

More FAQ blocks

View all FAQ
PRO

faq87

FAQ With Contact Panel

An accordion FAQ set against a column that sticks while the answers scroll, holding an image tile that floats a live card for the engineer who wrote them and a direct booking action.

PRO

faq96

Open Answers Grid

An FAQ with nothing to open: a serif heading that settles in word by word beside the intro and a pill action, then six questions and answers laid out in a three-column ruled grid that arrive in turn.

PRO

faq93

Always-Open Question Grid

A two-column question grid with every answer already visible on a hairline, so nothing is hidden behind a toggle, closed by a soft panel pointing at a direct reply.

FREE

faq80

Two Column Answer Grid

An always-open FAQ laid out as a two-column grid of numbered, hairline-separated question and answer entries, closing with a soft support panel that pairs a short prompt with two actions.

FREE

faq84

Hairline Answer Ledger

A compact FAQ with nothing hidden behind a click: three labelled groups of question and answer pairs set as two-column hairline rows, closing on a link to longer reading.

PRO

faq78

FAQ with Contact Aside

An accordion of studio FAQs paired with a bordered aside card inviting a direct conversation.