Bolt prompt for an FAQ section
Paste this into Bolt to add a grouped FAQ accordion — "Before you start" and "Once you're in" — rendered from a single data file. Enforced single-open behavior and arrow-key navigation make it accessible without pulling in a component library. Choose style, palette, typography, and motion in the customizer and the matching spec blocks slot into the prompt.
Last updated
In the current Bolt project, extend the {{product}} landing page with a FAQ accordion section, slotted between pricing and the footer. The audience is {{audience}}; the section's job is to clear the last objections standing between them and the final CTA.
Implementation: create src/components/FaqSection plus src/data/faqs.ts exporting an array of {question, answer} pairs, and render the accordion from that array so editing copy never means editing markup. Use native <details>/<summary> only if you also enforce single-open behavior with a small controller script; otherwise build button-driven rows where each button sets aria-expanded and toggles its named panel — one open at a time, so opening row N closes whichever row was open. Arrow-key navigation between question buttons is required, not optional.
Content: eight entries derived from {{product}}'s sales objections for {{audience}}, split into two groups with small labels — "Before you start" (pricing, setup time, migration, trial terms) and "Once you're in" (data ownership, limits, support, cancellation). Questions under twelve words; answers 40–70 words with one verifiable specific in each.
Anatomy top to bottom: an h2 in the "answers before you ask" register, reworded for {{product}}; the two labelled groups of rows; then a final strip with the text "Something we missed?" and a solid button reading "{{cta}}".
Visual direction:
{{style}}
Palette: {{palette}}
Typography: {{type}}
Motion: {{motion}}
Spacing: 6rem section padding, 2.5rem between the two groups, rows separated by 1px rules with 1.25rem of internal padding. Mobile: groups stay stacked and question text wraps without pushing the chevron off its row.
Use the live preview to confirm: opening any row closes the previously open one; both group labels render; keyboard arrows move between questions; the "{{cta}}" strip sits after the second group; the data file drives all eight rows.Customize it
Runs in your browser. Nothing you type here is sent anywhere.
In the current Bolt project, extend the a project management SaaS landing page with a FAQ accordion section, slotted between pricing and the footer. The audience is engineering managers at startups; the section's job is to clear the last objections standing between them and the final CTA.
Implementation: create src/components/FaqSection plus src/data/faqs.ts exporting an array of {question, answer} pairs, and render the accordion from that array so editing copy never means editing markup. Use native <details>/<summary> only if you also enforce single-open behavior with a small controller script; otherwise build button-driven rows where each button sets aria-expanded and toggles its named panel — one open at a time, so opening row N closes whichever row was open. Arrow-key navigation between question buttons is required, not optional.
Content: eight entries derived from a project management SaaS's sales objections for engineering managers at startups, split into two groups with small labels — "Before you start" (pricing, setup time, migration, trial terms) and "Once you're in" (data ownership, limits, support, cancellation). Questions under twelve words; answers 40–70 words with one verifiable specific in each.
Anatomy top to bottom: an h2 in the "answers before you ask" register, reworded for a project management SaaS; the two labelled groups of rows; then a final strip with the text "Something we missed?" and a solid button reading "start a free trial".
Visual direction:
Minimal dark style. Near-black canvas (#0A0A0B) with one elevated surface tone (#141416) for cards — never more than two surface steps. Hairline borders (1px, white at 8% opacity) instead of shadows; if a shadow is unavoidable use 0 1px 2px rgba(0,0,0,0.4) and nothing softer. Text in exactly three steps: white at 92% for headings, 60% for body, 40% for captions. Generous negative space — section padding at least 120px on desktop, 64px on mobile. The accent color appears only on interactive elements and one hero highlight, nowhere else.
Palette: a strict neutral ramp (white, #F5F5F5, #E5E5E5, #737373, #171717) carries the entire interface; pick one accent and use it only for primary CTAs, active states, and a single hero highlight. If the accent appears more than five times per viewport it stops being an accent. Keep semantic colors (success, error) desaturated so the accent stays in charge.
Typography: one geometric sans (a Futura/Poppins-class face) at three weights maximum (400/500/700). Scale: 64-88px hero, 32px section heads, 18px lede, 16px body, 13px caps labels with 0.08em tracking. Tight headline leading (1.05-1.1), relaxed body (1.6). Let the geometry carry the personality — no italics; weight and size do all hierarchy.
Motion: none. Zero scroll animations, zero entrance effects — the page is fully composed the instant it paints. Spend the motion budget on input feedback instead: 120-150ms ease-out color and transform transitions on hover and press states only. Hold this constraint absolutely; it is a statement, not an omission.
Spacing: 6rem section padding, 2.5rem between the two groups, rows separated by 1px rules with 1.25rem of internal padding. Mobile: groups stay stacked and question text wraps without pushing the chevron off its row.
Use the live preview to confirm: opening any row closes the previously open one; both group labels render; keyboard arrows move between questions; the "start a free trial" strip sits after the second group; the data file drives all eight rows.Same task in other tools
Questions about this prompt
What's the point of splitting the questions into two groups?
Separating "Before you start" from "Once you're in" mirrors the two anxieties a visitor actually has — buying the product and living with it. It also stops eight rows from reading as one undifferentiated stack, which is where long accordions lose people.
Bolt used <details> without single-open enforcement — is that a failure?
Partially. Native details/summary is fine markup, but the prompt requires that opening one row closes the others. Ask Bolt to add the small controller script the prompt mentions, or to rebuild rows as buttons with aria-expanded; either satisfies the acceptance checks.
Does this pair with the full landing-page prompts here?
Yes — run a full-page Bolt prompt from this site first, then this one; it names its slot (between pricing and the footer) so Bolt knows where to splice it. Keep customizer selections identical across both runs or the section will visibly mismatch the page.
Don't have Bolt yet? This link may be an affiliate link; it never changes what you pay.
Try BoltPart of the Bolt landing-page cluster — start from the main Bolt landing page prompt.