- .env.example: полный шаблон, защита секретов - .gitignore: явное исключение .env.* и секретов - layout.tsx: XSS — заменён dangerouslySetInnerHTML на next/script для SW - ESLint: no-console error (allow warn/error), ignore scripts/ - scripts/remove-console-logs.js: очистка console.log без glob - backend/routes/modules: README с планом рефакторинга крупных файлов - SECURITY.md: гид по секретам, XSS, CORS, auth, линту - .husky/pre-commit: запуск npm run lint + прочие правки приложения и бэкенда Co-authored-by: Cursor <cursoragent@cursor.com>
86 lines
2.4 KiB
TypeScript
86 lines
2.4 KiB
TypeScript
'use client';
|
||
|
||
import type { UserPreferences } from './types';
|
||
|
||
interface AdvancedSettingsProps {
|
||
preferences: UserPreferences;
|
||
onChange: (updater: (prev: UserPreferences) => UserPreferences) => void;
|
||
onReset: () => void;
|
||
}
|
||
|
||
export default function AdvancedSettings({
|
||
preferences,
|
||
onChange,
|
||
onReset,
|
||
}: AdvancedSettingsProps) {
|
||
return (
|
||
<div>
|
||
<h3 className="">
|
||
Дополнительные настройки
|
||
</h3>
|
||
|
||
<div className="flex gap-3 items-center">
|
||
<label className="flex gap-3 items-center">
|
||
<input
|
||
type="checkbox"
|
||
checked={preferences.shortcuts.enabled}
|
||
onChange={(e) =>
|
||
onChange((prev) => ({
|
||
...prev,
|
||
shortcuts: { ...prev.shortcuts, enabled: e.target.checked },
|
||
}))
|
||
}
|
||
className="w-full"
|
||
/>
|
||
<div>
|
||
<div className="">Клавиатурные сокращения</div>
|
||
<div className="">
|
||
Включить горячие клавиши для быстрой навигации
|
||
</div>
|
||
</div>
|
||
</label>
|
||
|
||
<label className="flex gap-3 items-center">
|
||
<input
|
||
type="checkbox"
|
||
checked={preferences.shortcuts.showHints}
|
||
onChange={(e) =>
|
||
onChange((prev) => ({
|
||
...prev,
|
||
shortcuts: { ...prev.shortcuts, showHints: e.target.checked },
|
||
}))
|
||
}
|
||
className="w-full"
|
||
disabled={!preferences.shortcuts.enabled}
|
||
/>
|
||
<div>
|
||
<div className="">
|
||
Показывать подсказки по горячим клавишам
|
||
</div>
|
||
<div className="">
|
||
Отображать подсказки по клавиатурным сокращениям
|
||
</div>
|
||
</div>
|
||
</label>
|
||
|
||
<div
|
||
|
||
>
|
||
<div className="">
|
||
⚠️ Сброс настроек
|
||
</div>
|
||
<div className="">
|
||
Сбросить все настройки к значениям по умолчанию
|
||
</div>
|
||
<button
|
||
onClick={onReset}
|
||
|
||
>
|
||
Сбросить настройки
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
);
|
||
}
|