Dieser Commit ist enthalten in:
Claude Project Manager
2025-09-20 21:31:04 +02:00
Commit 6b9b6d4f20
1821 geänderte Dateien mit 348527 neuen und 0 gelöschten Zeilen

Datei anzeigen

@ -0,0 +1,137 @@
import { useState } from 'react'
import { useThemeStore } from '../stores/themeStore'
export default function Settings() {
const { isDarkMode, toggleTheme } = useThemeStore()
// Barrierefreiheit-Einstellungen (Platzhalter mit sinnvollen Optionen)
const [a11y, setA11y] = useState({
highContrast: false,
largeText: false,
reduceMotion: false,
underlineLinks: true,
alwaysShowFocusOutline: true,
dyslexiaFriendlyFont: false
})
const handleSave = () => {
// TODO: Save settings to backend/electron store
console.log('Settings saved:', { syncConfig, isDarkMode })
}
return (
<div>
<h1 className="text-title-lg font-poppins font-bold text-primary mb-8">
Einstellungen
</h1>
<div className="max-w-4xl space-y-6">
<div className="card">
<h2 className="text-title-card font-poppins font-semibold text-primary mb-6">
Darstellung
</h2>
<div className="space-y-4">
<div className="flex items-center justify-between">
<div>
<h3 className="text-body font-medium text-secondary">Dark Mode</h3>
<p className="text-small text-tertiary">
Aktiviert das dunkle Farbschema der Anwendung
</p>
</div>
<button
onClick={toggleTheme}
className={`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${
isDarkMode ? 'bg-primary-blue' : 'bg-border-input'
}`}
>
<span
className={`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${
isDarkMode ? 'translate-x-6' : 'translate-x-1'
}`}
/>
</button>
</div>
</div>
</div>
<div className="card">
<h2 className="text-title-card font-poppins font-semibold text-primary mb-6">
Barrierefreiheit
</h2>
<div className="space-y-4">
<label className="flex items-center space-x-3">
<input type="checkbox" className="w-5 h-5 rounded border-border-input text-primary-blue" checked={a11y.highContrast} onChange={(e) => setA11y(prev => ({ ...prev, highContrast: e.target.checked }))} />
<div>
<span className="text-body font-medium text-secondary">Hoher Kontrast</span>
<p className="text-small text-tertiary">Erhöht den Kontrast für bessere Lesbarkeit (BITV-konform)</p>
</div>
</label>
<label className="flex items-center space-x-3">
<input type="checkbox" className="w-5 h-5 rounded border-border-input text-primary-blue" checked={a11y.largeText} onChange={(e) => setA11y(prev => ({ ...prev, largeText: e.target.checked }))} />
<div>
<span className="text-body font-medium text-secondary">Große Schrift</span>
<p className="text-small text-tertiary">Vergrößert die Schriftgröße für bessere Lesbarkeit</p>
</div>
</label>
<label className="flex items-center space-x-3">
<input type="checkbox" className="w-5 h-5 rounded border-border-input text-primary-blue" checked={a11y.reduceMotion} onChange={(e) => setA11y(prev => ({ ...prev, reduceMotion: e.target.checked }))} />
<div>
<span className="text-body font-medium text-secondary">Reduzierte Bewegungen</span>
<p className="text-small text-tertiary">Deaktiviert Animationen für weniger Ablenkung</p>
</div>
</label>
<label className="flex items-center space-x-3">
<input type="checkbox" className="w-5 h-5 rounded border-border-input text-primary-blue" checked={a11y.underlineLinks} onChange={(e) => setA11y(prev => ({ ...prev, underlineLinks: e.target.checked }))} />
<div>
<span className="text-body font-medium text-secondary">Links unterstreichen</span>
<p className="text-small text-tertiary">Links werden grundsätzlich unterstrichen dargestellt</p>
</div>
</label>
<label className="flex items-center space-x-3">
<input type="checkbox" className="w-5 h-5 rounded border-border-input text-primary-blue" checked={a11y.alwaysShowFocusOutline} onChange={(e) => setA11y(prev => ({ ...prev, alwaysShowFocusOutline: e.target.checked }))} />
<div>
<span className="text-body font-medium text-secondary">Fokusrahmen immer anzeigen</span>
<p className="text-small text-tertiary">Hebt fokussierte Elemente dauerhaft für Tastaturbedienung hervor</p>
</div>
</label>
<label className="flex items-center space-x-3">
<input type="checkbox" className="w-5 h-5 rounded border-border-input text-primary-blue" checked={a11y.dyslexiaFriendlyFont} onChange={(e) => setA11y(prev => ({ ...prev, dyslexiaFriendlyFont: e.target.checked }))} />
<div>
<span className="text-body font-medium text-secondary">Dyslexie-freundliche Schrift</span>
<p className="text-small text-tertiary">Verwendet eine besser unterscheidbare Schriftart</p>
</div>
</label>
</div>
</div>
<div className="card">
<h2 className="text-title-card font-poppins font-semibold text-primary mb-6">
Über SkillMate
</h2>
<div className="space-y-2 text-body">
<p className="text-secondary">
<span className="font-medium">Version:</span> 1.0.0
</p>
<p className="text-secondary">
<span className="font-medium">Entwickelt für:</span> Sicherheitsbehörden
</p>
<p className="text-small text-tertiary mt-4">
SkillMate ist eine spezialisierte Anwendung zur Verwaltung von
Mitarbeiterfähigkeiten und -kompetenzen in Sicherheitsbehörden.
</p>
</div>
</div>
<div className="flex justify-end space-x-3">
<button className="btn-secondary">
Abbrechen
</button>
<button onClick={handleSave} className="btn-primary">
Einstellungen speichern
</button>
</div>
</div>
</div>
)
}