import { ScrollArea } from "@/components/ui/scroll-area"; import { cn } from "@/lib/utils"; import { useNavigate } from "@tanstack/react-router"; import { useEffect, useState } from "react"; const SETTINGS_SECTIONS = [ { id: "general-settings", label: "General" }, { id: "workflow-settings", label: "Workflow" }, { id: "ai-settings", label: "AI" }, { id: "provider-settings", label: "Model Providers" }, { id: "telemetry", label: "Telemetry" }, { id: "integrations", label: "Integrations" }, { id: "experiments", label: "Experiments" }, { id: "danger-zone", label: "Danger Zone" }, ]; export function SettingsList({ show }: { show: boolean }) { const navigate = useNavigate(); const [activeSection, setActiveSection] = useState( "general-settings", ); useEffect(() => { const observer = new IntersectionObserver( (entries) => { for (const entry of entries) { if (entry.isIntersecting) { setActiveSection(entry.target.id); return; } } }, { rootMargin: "-20% 0px -80% 0px", threshold: 0 }, ); for (const section of SETTINGS_SECTIONS) { const el = document.getElementById(section.id); if (el) { observer.observe(el); } } return () => { observer.disconnect(); }; }, []); if (!show) { return null; } const handleScrollAndNavigateTo = async (id: string) => { await navigate({ to: "/settings", }); const element = document.getElementById(id); if (element) { element.scrollIntoView({ behavior: "smooth", block: "start" }); setActiveSection(id); } }; return (

Settings

{SETTINGS_SECTIONS.map((section) => ( ))}
); }