# /app/components/FAQViewer.py from __future__ import annotations import gradio as gr from typing import List, Dict def build_faq_viewer(faqs: List[Dict[str, str]] | None = None): """ Build a simple searchable FAQ viewer. Returns (search_box, results_html, set_data_fn) """ faqs = faqs or [] search = gr.Textbox(label="Search FAQs", placeholder="Type to filter…") results = gr.HTML() def _render(query: str): q = (query or "").strip().lower() items = [f for f in faqs if (q in f["q"].lower() or q in f["a"].lower())] if q else faqs if not items: return "No results." parts = [] for f in items[:50]: parts.append( f"