"use client"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { cn } from "@/lib/utils"; import { SettingsCard, SettingsSection, } from "@/components/settings/settings-parts"; import { SigningPanel } from "@/components/settings/settings-billing"; import { CareTeamPanel } from "@/components/settings/settings-care-team"; import { ProfilePanel } from "@/components/settings/settings-preferences"; import { useActiveRole } from "@/lib/roles"; const TABS = [ { id: "profile", labelKey: "settings.tabs.profile" }, { id: "records", labelKey: "settings.tabs.records" }, { id: "signing", labelKey: "settings.tabs.signing" }, { id: "careTeam", labelKey: "settings.tabs.careTeam" }, { id: "developers", labelKey: "settings.tabs.developers" }, ] as const; type Tab = (typeof TABS)[number]["id"]; function PlaceholderPanel({ title, description, }: { title: string; description: string; }) { const { t } = useTranslation(); return ( {t("settings.empty")} ); } export function SettingsView() { const { t } = useTranslation(); const role = useActiveRole(); const [tab, setTab] = useState("profile"); // Only clinic owners/admins manage clinic-wide settings (care team, records, // signing, developers). Everyone else gets their own profile only. const isAdmin = role === "owner" || role === "admin"; const visibleTabs = isAdmin ? TABS : TABS.filter((item) => item.id === "profile"); const activeTab = visibleTabs.some((item) => item.id === tab) ? tab : "profile"; return ( {t(`settings.tabs.${activeTab}`)} {visibleTabs.map((item) => ( setTab(item.id)} type="button" > {t(item.labelKey)} ))} {activeTab === "profile" && } {activeTab === "records" && ( )} {activeTab === "signing" && } {activeTab === "careTeam" && } {activeTab === "developers" && ( )} ); }
{t("settings.empty")}