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 (
);
}
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')}
);
}