← 返回列表blockFAQ
常见问题折叠组件,支持展开/收起。适用于 Landing 页、帮助中心。
"use client";
import React, { useState } from "react";
export interface FAQItem {
question: string;
answer: string;
}
export interface FAQProps {
items: FAQItem[];
title?: string;
}
export function FAQ({ items, title = "Frequently Asked Questions" }: FAQProps) {
const [openIndex, setOpenIndex] = useState<number | null>(null);
return (
<section className="py-16 px-6 max-w-3xl mx-auto">
<h2 className="text-2xl font-bold mb-8">{title}</h2>
<div className="space-y-2">
{items.map((item, index) => (
<div
key={index}
className="border rounded-lg overflow-hidden"
>
<button
className="w-full px-4 py-3 text-left font-medium flex justify-between items-center hover:bg-gray-50"
onClick={() => setOpenIndex(openIndex === index ? null : index)}
>
{item.question}
<span className="text-gray-500">
{openIndex === index ? "−" : "+"}
</span>
</button>
{openIndex === index && (
<div className="px-4 py-3 bg-gray-50 text-gray-600 border-t">
{item.answer}
</div>
)}
</div>
))}
</div>
</section>
);
}