import React, { useState, useEffect } from 'react' import { useSearchParams } from 'react-router-dom' import { Settings, Palette, Map, Bell, Plug, CloudOff, User, Info } from 'lucide-react' import { useTranslation } from '../i18n' import { authApi } from '../api/client' import { useAddonStore } from '../store/addonStore' import Navbar from '../components/Layout/Navbar' import PageSidebar, { type PageSidebarTab } from '../components/Layout/PageSidebar' import DisplaySettingsTab from '../components/Settings/DisplaySettingsTab' import MapSettingsTab from '../components/Settings/MapSettingsTab' import NotificationsTab from '../components/Settings/NotificationsTab' import IntegrationsTab from '../components/Settings/IntegrationsTab' import AccountTab from '../components/Settings/AccountTab' import AboutTab from '../components/Settings/AboutTab' import OfflineTab from '../components/Settings/OfflineTab' export default function SettingsPage(): React.ReactElement { const { t } = useTranslation() const [searchParams] = useSearchParams() const { isEnabled: addonEnabled, loadAddons } = useAddonStore() const memoriesEnabled = addonEnabled('memories') const mcpEnabled = addonEnabled('mcp') const hasIntegrations = memoriesEnabled || mcpEnabled const [appVersion, setAppVersion] = useState(null) const [activeTab, setActiveTab] = useState('display') useEffect(() => { loadAddons() authApi.getAppConfig?.().then(c => setAppVersion(c?.version)).catch(() => {}) }, []) // Auto-switch to account tab when MFA is required useEffect(() => { if (searchParams.get('mfa') === 'required') { setActiveTab('account') } }, [searchParams]) const tabs: PageSidebarTab[] = [ { id: 'display', label: t('settings.tabs.display'), icon: Palette }, { id: 'map', label: t('settings.tabs.map'), icon: Map }, { id: 'notifications', label: t('settings.tabs.notifications'), icon: Bell }, ...(hasIntegrations ? [{ id: 'integrations', label: t('settings.tabs.integrations'), icon: Plug }] : []), { id: 'offline', label: t('settings.tabs.offline'), icon: CloudOff }, { id: 'account', label: t('settings.tabs.account'), icon: User }, ...(appVersion ? [{ id: 'about', label: t('settings.tabs.about'), icon: Info }] : []), ] return (
{/* Header */}

{t('settings.title')}

{t('settings.subtitle')}

{/* Sidebar layout */} {activeTab === 'display' && } {activeTab === 'map' && } {activeTab === 'notifications' && } {activeTab === 'integrations' && hasIntegrations && } {activeTab === 'offline' && } {activeTab === 'account' && } {activeTab === 'about' && appVersion && }
) }