import { useState, useEffect } from 'react'; import { Modal, Tabs, Text, Group, rem } from '@mantine/core'; import { Settings, Palette, SlidersHorizontal, GitBranch } from 'lucide-react'; import { GeneralTab } from '@/components/settings/GeneralTab'; import { VersionsTab } from '@/components/settings/VersionsTab'; import { AppearanceTab } from '@/components/settings/AppearanceTab'; interface SettingsModalProps { opened: boolean; onClose: () => void; currentScreen?: 'welcome' | 'download' | 'launch' | 'interface'; } export const SettingsModal = ({ opened, onClose, currentScreen, }: SettingsModalProps) => { const [activeTab, setActiveTab] = useState('general'); const showVersionsTab = currentScreen !== 'download' && currentScreen !== 'welcome'; useEffect(() => { if (!showVersionsTab && activeTab === 'versions') { setActiveTab('general'); } }, [showVersionsTab, activeTab]); useEffect(() => { if (opened) { setActiveTab('general'); const originalOverflow = document.body.style.overflow; const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth; document.body.style.overflow = 'hidden'; document.body.style.paddingRight = `${scrollbarWidth}px`; return () => { document.body.style.overflow = originalOverflow; document.body.style.paddingRight = ''; }; } }, [opened]); return ( Settings } size="xl" centered lockScroll={false} styles={{ body: { height: '400px', padding: 0, }, content: { height: '500px', }, }} transitionProps={{ duration: 200, }} > value && setActiveTab(value)} orientation="vertical" variant="pills" styles={{ root: { height: '100%', }, panel: { height: '100%', overflow: 'auto', paddingLeft: '24px', paddingRight: '24px', }, }} > } > General {showVersionsTab && ( } > Versions )} } > Appearance {showVersionsTab && ( )} ); };