/** * `SettingsView` — the Settings surface shell (ticket #68). * * Settings is a **main surface**, not a dockable project view: it deliberately * has no `PanelId` and stays outside the `viewPlacement` model. It takes over * the main area while the menu bar stays visible above it. * * Ticket #68 gives it a second section, so the section list becomes real * navigation (a left column) instead of the old single toggle. That also kills * the alternating "Close AI Profiles" menu label, which never scaled past one * entry: the menu now names sections, the active one is marked, and closing is * an explicit action inside the view. * * `EmbedderSettings` / `ModelServersPanel` are **not** pulled in here — that is * a separate lateral rework. The section list is the seam they would slot into. */ import { Button, cn } from "@/shared"; import { ProfilesSettings } from "@/features/first-run"; import { DeploymentSettings } from "./DeploymentSettings"; /** The Settings sections, in menu/nav order. */ export type SettingsSection = "aiProfiles" | "deployment"; /** Human labels, shared by the nav column and the `Settings` menu. */ export const SETTINGS_SECTION_LABEL: Record = { aiProfiles: "AI Profiles", deployment: "Deployment", }; /** Section order — the single source of truth for both nav and menu. */ export const SETTINGS_SECTIONS: SettingsSection[] = ["aiProfiles", "deployment"]; interface SettingsViewProps { section: SettingsSection; onSectionChange: (section: SettingsSection) => void; onClose: () => void; } export function SettingsView({ section, onSectionChange, onClose, }: SettingsViewProps) { return (
{section === "aiProfiles" ? : }
); }