import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; import { HelpCircle } from "lucide-react"; import { Dictionary } from "@/lib/IDict"; import { pb } from "@/lib/pb"; interface PBFaq { id: string; question: string; answer: string; lang: string; order: number; } // Теперь это Server Component export async function FAQ({ dict, lang, }: { dict: Dictionary["faq"]; lang: string; }) { let faqs: PBFaq[] = []; // CMS-контент (в отличие от статичных dictionaries/*.json) переведён только // для части языков — коллекции `faqs_` для новых языков ещё не заведены // в PocketBase. Пока для них нет перевода, показываем английский, а не пустоту. for (const fallbackLang of Array.from(new Set([lang, "en"]))) { try { faqs = await pb.collection(`faqs_${fallbackLang}`).getFullList({ sort: "order", fetch: (url, config) => fetch(url, { ...config, next: { revalidate: 86400 } }), // Кэшируем на сутки }); break; } catch (error) { console.error(`Ошибка загрузки FAQ (${fallbackLang}):`, error); } } const formatAnswer = (text: string) => { return text.split("\n").map((line, i) => { const trimmedLine = line.trim(); if (trimmedLine.startsWith("•")) { return (
{trimmedLine.replace("•", "").trim()}
); } if (!trimmedLine) return
; return (

{line}

); }); }; return (

{dict.title}

{faqs.length === 0 ? (

0 protocols found in cache.

) : ( {faqs.map((faq) => ( {faq.question}
{formatAnswer(faq.answer)}
))}
)}
); }