diff --git a/packages/web/src/components/modals/UserSettings.tsx b/packages/web/src/components/modals/UserSettings.tsx index dcdcdd75..51c8623c 100644 --- a/packages/web/src/components/modals/UserSettings.tsx +++ b/packages/web/src/components/modals/UserSettings.tsx @@ -8,9 +8,43 @@ import { VoicePanel } from './settingsPanels/VoicePanel'; import { PrivacyPanel } from './settingsPanels/PrivacyPanel'; import { ConnectionsPanel } from './settingsPanels/ConnectionsPanel'; import { InstancePanel } from './settingsPanels/InstancePanel'; +import { SettingsSectionsProvider, useSettingsSectionsContext } from './SettingsSectionsContext'; type SettingsTab = 'account' | 'voice' | 'privacy' | 'connections' | 'instance'; +function SidebarSubLinks() { + const ctx = useSettingsSectionsContext(); + if (!ctx || ctx.sections.length === 0) return null; + + return ( +
+ {ctx.sections.map((section) => ( + + ))} +
+ ); +} + +function SettingsScrollContainer({ children }: { children: React.ReactNode }) { + const ctx = useSettingsSectionsContext(); + return ( +
+ {children} +
+ ); +} + export function UserSettingsModal() { const activeModal = useUIStore((s) => s.activeModal); const modalData = useUIStore((s) => s.modalData); @@ -61,6 +95,7 @@ export function UserSettingsModal() { return ( +
{/* Desktop Sidebar */}
@@ -94,6 +129,7 @@ export function UserSettingsModal() {
Administration
+ {tab === 'instance' && } )} @@ -157,7 +193,7 @@ export function UserSettingsModal() { {/* Content area (desktop always, mobile only when viewing content) */} {(!isMobile || mobileView === 'content') && ( -
+
{/* Mobile back button */} {isMobile && ( @@ -178,9 +214,10 @@ export function UserSettingsModal() { {tab === 'connections' && } {tab === 'instance' && isAdmin && }
-
+ )}
+ ); }