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-soft/section/faq-contactSource
import { Mail, MessageCircle } from "lucide-react";
import { cn } from "@/lib/utils";
export interface FaqContactProps {
title?: string;
items?: { q: string; a: string }[];
contact?: { title: string; text: string; email: string; chatHref: string };
className?: string;
}
const DEFAULT_ITEMS = [
{
q: "Do I need a sustainability person to use Grove?",
a: "No. Most of our customers start with someone from finance or operations. Grove explains every step in plain language.",
},
{ q: "What happens after the trial?", a: "You choose a plan or stay on Seedling if you’re under 20 people. Your data stays yours either way." },
{ q: "Can we get help with our first report?", a: "Every paid plan includes a one-hour session with a climate advisor." },
];
/** 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. */
export function FaqContact({
title = "Still wondering?",
items = DEFAULT_ITEMS,
contact = { title: "Talk to a human", text: "Our climate team answers within a few hours, Monday to Friday.", email: "hello@grove.eco", chatHref: "#chat" },
className,
}: FaqContactProps) {
return (
<section aria-labelledby="os-fct-title" className={cn("da-section bg-da-bg text-da-fg", className)}>
<div className="da-container grid gap-10 lg:grid-cols-[1.6fr_1fr]">
<div>
<h2 id="os-fct-title" className="font-da-display text-[clamp(2.25rem,5vw,3.5rem)] tracking-da-display">
{title}
</h2>
<div className="mt-8 divide-y divide-da-border border-y border-da-border">
{items.map((it, i) => (
<details key={it.q} open={i === 0} className="group">
<summary className="da-focus flex cursor-pointer list-none items-center justify-between gap-4 rounded-da-sm py-6 font-da-display text-xl [&::-webkit-details-marker]:hidden">
{it.q}
<span aria-hidden className="text-2xl text-da-primary transition-transform duration-(--da-duration) group-open:rotate-45">
+
</span>
</summary>
<p className="pb-6 text-da-muted-fg">{it.a}</p>
</details>
))}
</div>
</div>
<aside className="flex flex-col rounded-da-lg bg-da-secondary p-8 text-da-secondary-fg">
<svg aria-hidden viewBox="0 0 120 80" className="h-20 w-28">
<path d="M60 78V36" stroke="currentColor" strokeWidth="3" strokeLinecap="round" />
<path d="M60 50c-16 0-26-10-26-26 16 0 26 10 26 26Zm0-8c14 0 22-8 22-22-14 0-22 8-22 22Z" fill="currentColor" opacity=".8" />
<ellipse cx="60" cy="78" rx="36" ry="3" fill="currentColor" opacity=".3" />
</svg>
<h3 className="mt-6 font-da-display text-3xl">{contact.title}</h3>
<p className="mt-2 opacity-90">{contact.text}</p>
<div className="mt-8 grid gap-2">
<a
href={`mailto:${contact.email}`}
className="da-focus inline-flex h-12 items-center justify-center gap-2 rounded-da-pill bg-da-surface font-medium text-da-surface-fg hover:bg-da-surface/90"
>
<Mail aria-hidden className="size-4" /> {contact.email}
</a>
<a
href={contact.chatHref}
className="da-focus inline-flex h-12 items-center justify-center gap-2 rounded-da-pill border border-current/40 font-medium hover:bg-current/10"
>
<MessageCircle aria-hidden className="size-4" /> Start a chat
</a>
</div>
</aside>
</div>
</section>
);
}
export default FaqContact;
modules/organic-soft/section/faq-contact/index.tsx
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| title | string | — | Heading. |
| items | { q: string; a: string }[] | — | Content items (see the exported types). |
| contact | { title: string; text: string; email: string; chatHref: string } | — | Contact. |
| className | string | — | Extra classes on the root. |
Other faq variants in Organic Soft
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
Faq Accordion
Two-column FAQ: heading + description + contact link on the left, bordered Radix accordion with plus icons rotating to × on the right.
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.
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.
Faq Support
Compact 2×3 grid of short Q&As followed by three bordered support channel cards (docs, chat, dedicated support).
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.
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.
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.
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.