"use client"; import { useSearchParams } from "next/navigation"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { cn } from "@/lib/utils"; import { AIPanel } from "@/components/settings/settings-ai"; import { SigningPanel } from "@/components/settings/settings-billing"; import { CareTeamPanel } from "@/components/settings/settings-care-team"; import { DevelopersPanel } from "@/components/settings/settings-developers"; import { IntegrationsPanel } from "@/components/settings/settings-integrations"; import { ProfilePanel } from "@/components/settings/settings-preferences"; import { RecordsPanel } from "@/components/settings/settings-records"; import { VersionPanel } from "@/components/settings/settings-version"; import { useActiveRole } from "@/lib/roles"; const TABS = [ { id: "profile", labelKey: "settings.tabs.profile" }, { id: "ai", labelKey: "settings.tabs.ai" }, { id: "records", labelKey: "settings.tabs.records" }, { id: "signing", labelKey: "settings.tabs.signing" }, { id: "careTeam", labelKey: "settings.tabs.careTeam" }, { id: "integrations", labelKey: "settings.tabs.integrations" }, { id: "developers", labelKey: "settings.tabs.developers" }, { id: "version", labelKey: "settings.tabs.version" }, ] as const; // Per-user tabs every clinician sees; the rest are clinic-wide (admin only). // "version" (about / updates / network access) is useful to everyone. const PERSONAL_TABS = ["profile", "ai", "version"]; type Tab = (typeof TABS)[number]["id"]; export function SettingsView() { const { t } = useTranslation(); const role = useActiveRole(); const searchParams = useSearchParams(); // Deep-link support: /settings?tab=careTeam&member=. const urlTab = searchParams.get("tab") as Tab | null; const urlMember = searchParams.get("member"); const [tab, setTab] = useState(urlTab ?? "profile"); // Only clinic owners/admins manage clinic-wide settings (care team, records, // signing, developers). Everyone else gets their personal tabs (profile, AI). const isAdmin = role === "owner" || role === "admin"; const visibleTabs = isAdmin ? TABS : TABS.filter((item) => PERSONAL_TABS.includes(item.id)); const activeTab = visibleTabs.some((item) => item.id === tab) ? tab : "profile"; return (

{t(`settings.tabs.${activeTab}`)}

{activeTab === "profile" && } {activeTab === "ai" && } {activeTab === "records" && } {activeTab === "signing" && } {activeTab === "careTeam" && ( )} {activeTab === "integrations" && } {activeTab === "developers" && } {activeTab === "version" && }
); }