import { useState, useMemo } from 'react' import { HelpCircle } from 'lucide-react' import { Container } from '../Container' import { t, type Language } from '../../i18n/translations' import { FAQSearchBar } from './FAQSearchBar' import { FAQSidebar } from './FAQSidebar' import { FAQContent } from './FAQContent' import { faqCategories } from '../../data/faqData' import type { FAQCategory } from '../../data/faqData' interface FAQLayoutProps { language: Language } export function FAQLayout({ language }: FAQLayoutProps) { const [searchTerm, setSearchTerm] = useState('') const [activeItemId, setActiveItemId] = useState(null) // Filter categories based on search term const filteredCategories = useMemo(() => { if (!searchTerm.trim()) { return faqCategories } const term = searchTerm.toLowerCase() const filtered: FAQCategory[] = [] faqCategories.forEach((category) => { const matchingItems = category.items.filter((item) => { const question = t(item.questionKey, language).toLowerCase() const answer = t(item.answerKey, language).toLowerCase() return question.includes(term) || answer.includes(term) }) if (matchingItems.length > 0) { filtered.push({ ...category, items: matchingItems, }) } }) return filtered }, [searchTerm, language]) const handleItemClick = (_categoryId: string, itemId: string) => { const element = document.getElementById(itemId) if (element) { const offset = 100 const elementPosition = element.getBoundingClientRect().top const offsetPosition = elementPosition + window.pageYOffset - offset window.scrollTo({ top: offsetPosition, behavior: 'smooth', }) } } return ( {/* Page Header */}

{t('faqTitle', language)}

{t('faqSubtitle', language)}

{/* Search Bar */}
{/* Main Content */}
{/* Sidebar - Hidden on mobile, visible on desktop */} {/* Content Area */}
{filteredCategories.length > 0 ? ( ) : (

{language === 'zh' ? '没有找到匹配的问题' : 'No matching questions found'}

)}
{/* Contact Section */}

{t('faqStillHaveQuestions', language)}

{t('faqContactUs', language)}

GitHub {t('community', language)}
) }