'use client' import { Suspense } from 'react' import { SettingsRail } from './SettingsRail' import { SettingsLoadingSkeleton } from './SettingsLoadingSkeleton' import { SETTINGS_SECTIONS } from './sections' interface SettingsShellProps { variant: 'page' | 'modal' /** Resolved section id. Required for the modal (drives which content renders); * optional for the page where `{children}` is the route's own content. */ activeSection?: string children?: React.ReactNode } /** * Shared two-pane settings layout (category rail + content). The full-page * route renders it via `settings/layout.tsx` (content = the route's children); * the routed modal renders it inside a Dialog (content resolved from the * section map). Keeping one shell means page and modal stay visually identical. */ export function SettingsShell({ variant, activeSection, children }: SettingsShellProps) { if (variant === 'modal') { const Section = activeSection ? SETTINGS_SECTIONS[activeSection] : undefined return (