"use client"; import { BellIcon, BrainIcon, PaletteIcon, SparklesIcon, WrenchIcon, } from "lucide-react"; import { useMemo, useState } from "react"; import { Dialog, DialogContent, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { ScrollArea } from "@/components/ui/scroll-area"; import { AcknowledgePage } from "@/components/workspace/settings/acknowledge-page"; import { AppearanceSettingsPage } from "@/components/workspace/settings/appearance-settings-page"; import { MemorySettingsPage } from "@/components/workspace/settings/memory-settings-page"; import { NotificationSettingsPage } from "@/components/workspace/settings/notification-settings-page"; import { SkillSettingsPage } from "@/components/workspace/settings/skill-settings-page"; import { ToolSettingsPage } from "@/components/workspace/settings/tool-settings-page"; import { useI18n } from "@/core/i18n/hooks"; import { cn } from "@/lib/utils"; type SettingsSection = | "appearance" | "memory" | "tools" | "skills" | "notification" | "acknowledge"; type SettingsDialogProps = React.ComponentProps & { defaultSection?: SettingsSection; }; export function SettingsDialog(props: SettingsDialogProps) { const { defaultSection = "appearance", ...dialogProps } = props; const { t } = useI18n(); const [activeSection, setActiveSection] = useState(defaultSection); const sections = useMemo( () => [ { id: "appearance", label: t.settings.sections.appearance, icon: PaletteIcon, }, { id: "notification", label: t.settings.sections.notification, icon: BellIcon, }, { id: "memory", label: t.settings.sections.memory, icon: BrainIcon, }, { id: "tools", label: t.settings.sections.tools, icon: WrenchIcon }, { id: "skills", label: t.settings.sections.skills, icon: SparklesIcon }, ], [ t.settings.sections.appearance, t.settings.sections.memory, t.settings.sections.tools, t.settings.sections.skills, t.settings.sections.notification, ], ); return ( props.onOpenChange?.(open)} > {t.settings.title}

{t.settings.description}

{activeSection === "appearance" && } {activeSection === "memory" && } {activeSection === "tools" && } {activeSection === "skills" && ( props.onOpenChange?.(false)} /> )} {activeSection === "notification" && } {activeSection === "acknowledge" && }
); }