import type { ReactNode } from 'react'; import { useTranslation } from 'react-i18next'; import DarkModeToggle from '../../../DarkModeToggle'; import LanguageSelector from '../../../LanguageSelector'; import type { CodeEditorSettingsState, ProjectSortOrder } from '../../types/types'; type AppearanceSettingsTabProps = { projectSortOrder: ProjectSortOrder; onProjectSortOrderChange: (value: ProjectSortOrder) => void; codeEditorSettings: CodeEditorSettingsState; onCodeEditorThemeChange: (value: 'dark' | 'light') => void; onCodeEditorWordWrapChange: (value: boolean) => void; onCodeEditorShowMinimapChange: (value: boolean) => void; onCodeEditorLineNumbersChange: (value: boolean) => void; onCodeEditorFontSizeChange: (value: string) => void; }; type ToggleCardProps = { label: string; description: string; checked: boolean; onChange: (value: boolean) => void; onIcon?: ReactNode; offIcon?: ReactNode; ariaLabel: string; }; function ToggleCard({ label, description, checked, onChange, onIcon, offIcon, ariaLabel, }: ToggleCardProps) { return (
{label}
{description}
); } export default function AppearanceSettingsTab({ projectSortOrder, onProjectSortOrderChange, codeEditorSettings, onCodeEditorThemeChange, onCodeEditorWordWrapChange, onCodeEditorShowMinimapChange, onCodeEditorLineNumbersChange, onCodeEditorFontSizeChange, }: AppearanceSettingsTabProps) { const { t } = useTranslation('settings'); const codeEditorThemeLabel = t('appearanceSettings.codeEditor.theme.label'); return (
{t('appearanceSettings.darkMode.label')}
{t('appearanceSettings.darkMode.description')}
{t('appearanceSettings.projectSorting.label')}
{t('appearanceSettings.projectSorting.description')}

{t('appearanceSettings.codeEditor.title')}

{codeEditorThemeLabel}
{t('appearanceSettings.codeEditor.theme.description')}
onCodeEditorThemeChange(enabled ? 'dark' : 'light')} ariaLabel={codeEditorThemeLabel} />
{t('appearanceSettings.codeEditor.fontSize.label')}
{t('appearanceSettings.codeEditor.fontSize.description')}
); }