mirror of
https://github.com/siteboon/claudecodeui.git
synced 2026-04-12 00:21:30 +00:00
78 lines
2.5 KiB
TypeScript
78 lines
2.5 KiB
TypeScript
import { Moon, Sun } from 'lucide-react';
|
|
import { useTranslation } from 'react-i18next';
|
|
import { DarkModeToggle } from '../../../shared/view/ui';
|
|
import LanguageSelector from '../../../shared/view/ui/LanguageSelector';
|
|
import {
|
|
INPUT_SETTING_TOGGLES,
|
|
SETTING_ROW_CLASS,
|
|
TOOL_DISPLAY_TOGGLES,
|
|
VIEW_OPTION_TOGGLES,
|
|
} from '../constants';
|
|
import type {
|
|
PreferenceToggleItem,
|
|
PreferenceToggleKey,
|
|
QuickSettingsPreferences,
|
|
} from '../types';
|
|
import QuickSettingsSection from './QuickSettingsSection';
|
|
import QuickSettingsToggleRow from './QuickSettingsToggleRow';
|
|
|
|
type QuickSettingsContentProps = {
|
|
isDarkMode: boolean;
|
|
preferences: QuickSettingsPreferences;
|
|
onPreferenceChange: (key: PreferenceToggleKey, value: boolean) => void;
|
|
};
|
|
|
|
export default function QuickSettingsContent({
|
|
isDarkMode,
|
|
preferences,
|
|
onPreferenceChange,
|
|
}: QuickSettingsContentProps) {
|
|
const { t } = useTranslation('settings');
|
|
|
|
const renderToggleRows = (items: PreferenceToggleItem[]) => (
|
|
items.map(({ key, labelKey, icon }) => (
|
|
<QuickSettingsToggleRow
|
|
key={key}
|
|
label={t(labelKey)}
|
|
icon={icon}
|
|
checked={preferences[key]}
|
|
onCheckedChange={(value) => onPreferenceChange(key, value)}
|
|
/>
|
|
))
|
|
);
|
|
|
|
return (
|
|
<div className="flex-1 space-y-6 overflow-y-auto overflow-x-hidden bg-background p-4">
|
|
<QuickSettingsSection title={t('quickSettings.sections.appearance')}>
|
|
<div className={SETTING_ROW_CLASS}>
|
|
<span className="flex items-center gap-2 text-sm text-gray-900 dark:text-white">
|
|
{isDarkMode ? (
|
|
<Moon className="h-4 w-4 text-gray-600 dark:text-gray-400" />
|
|
) : (
|
|
<Sun className="h-4 w-4 text-gray-600 dark:text-gray-400" />
|
|
)}
|
|
{t('quickSettings.darkMode')}
|
|
</span>
|
|
<DarkModeToggle />
|
|
</div>
|
|
<LanguageSelector compact />
|
|
</QuickSettingsSection>
|
|
|
|
<QuickSettingsSection title={t('quickSettings.sections.toolDisplay')}>
|
|
{renderToggleRows(TOOL_DISPLAY_TOGGLES)}
|
|
</QuickSettingsSection>
|
|
|
|
<QuickSettingsSection title={t('quickSettings.sections.viewOptions')}>
|
|
{renderToggleRows(VIEW_OPTION_TOGGLES)}
|
|
</QuickSettingsSection>
|
|
|
|
<QuickSettingsSection title={t('quickSettings.sections.inputSettings')}>
|
|
{renderToggleRows(INPUT_SETTING_TOGGLES)}
|
|
<p className="ml-3 text-xs text-gray-500 dark:text-gray-400">
|
|
{t('quickSettings.sendByCtrlEnterDescription')}
|
|
</p>
|
|
</QuickSettingsSection>
|
|
</div>
|
|
);
|
|
}
|