FAQ With Contact Panel

Before you commit

Answers, and the person who wrote them

Every answer below came from a real migration call. The engineer who ran most of them is on the right.

Room naming. Practices name rooms inconsistently across sites and it only shows up when two clinics share a waiting list. We catch it on the mapping call now, but it used to cost a day.

Soft blue gradient backdrop
Portrait of Priya Nandan

Priya Nandan

Migration engineer

Free from 09:30 today

Call length30 minutes
Based inBristol, UK
Has migrated40+ practices

Ask her directly

No form, no qualification call, and no handover to somebody else afterwards. She stays on your account through the switch and after it.

About this block

FAQ With Contact PanelPRO

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.

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.

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/faq87?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

This installs the block to components/beste/block/faq87.tsx, the card31 person piece it floats on the tile (installed to components/beste/piece/card31.tsx), and the badge23 and button21 components it uses for the eyebrow and the booking action.

Quick start

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

tsx
import { Faq87, faq87Demo } from "@/components/beste/block/faq87";

export default function FaqPage() {
  return <Faq87 {...faq87Demo} />;
}

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

tsx
import { Card31 } from "@/components/beste/piece/card31";
import { Faq87 } from "@/components/beste/block/faq87";

export default function FaqPage() {
  return (
    <Faq87
      badge={{ label: "Before you commit" }}
      heading="Answers, and the person who wrote them"
      description="Every answer below came from a real migration call."
      items={[
        {
          question: "What is the most common thing that goes wrong?",
          answer: "Room naming. It only shows up when two clinics share a waiting list.",
        },
        {
          question: "How much of our time does the migration take?",
          answer: "One hour with your practice lead, and roughly two across the dry run.",
        },
      ]}
      mediaTitle="Ask her directly"
      media={
        <Card31
          avatar={{ src: "/people/priya.jpg", alt: "Portrait of Priya Nandan" }}
          name="Priya Nandan"
          role="Migration engineer"
          status="Free from 09:30 today"
          availability="free"
          rows={[{ label: "Call length", value: "30 minutes" }]}
        />
      }
      image={{ src: "/backdrops/blue.jpg", alt: "Soft blue gradient backdrop" }}
      mediaBody="No form, no qualification call, and no handover to somebody else afterwards."
      button={{ label: "Book half an hour", href: "/demo" }}
    />
  );
}

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
itemsFaqItem[][]Questions in the accordion column
mediaTitlestringHeading under the tile in the sticky column
mediaReactNodeLive asset on the tile, card31 in the demo
image{ src: string; alt: string }Backdrop behind the media tile
mediaBodystringParagraph under that heading
button{ label: string; href: string }Booking action in the sticky column
classNamestringExtra classes for the outer section
ts
type ActionLink = {
  label: string;
  href: string;
};

type TileImage = {
  src: string;
  alt: string;
};

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

Behavior notes

  • Only one answer is open at a time. open starts at 0, and clicking the open question sets it to -1, so every answer can be closed and the column collapses to a plain list of hairlines.
  • The contact column is lg:sticky lg:top-24 lg:self-start. The self-start is required: without it the column stretches to the full grid row height and sticky positioning has nothing to travel within.
  • top-24 assumes a fixed header of roughly six rem. Adjust it to match your own navbar, otherwise the card slides under it.
  • Sticky is lg and above only. Below that the contact column scrolls normally and lands after the questions.
  • Because the accordion column grows and shrinks as answers open, the sticky column can outlast it on a short FAQ. Five or more questions is where the effect reads as intended.
  • Answers are conditionally rendered rather than hidden with CSS, and the panel carries pr-11 so the text clears the chevron button.
  • The layout is a 1.6fr to 1fr split, keeping the answers at a readable measure while the card column stays only as wide as the piece needs.

More FAQ blocks

View all FAQ
PRO

faq78

FAQ with Contact Aside

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

PRO

faq69

FAQ With Contact

Numbered FAQ accordion beside a contact card with image, prompt and a contact CTA.

PRO

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.

PRO

faq71

Minimal FAQ

Oversized single-column FAQ accordion with generous spacing.

PRO

faq86

Two Column Accordion

An FAQ split across two columns of independent accordions, so opening one answer never closes another, closing on a soft support panel with two actions.

PRO

faq73

Sticky FAQ

Sticky intro and CTA beside a single-column FAQ accordion.