'use client' import { useState, useEffect } from 'react' import { X, Settings, Save, RotateCcw } from 'lucide-react' import { TeacherSettings, PhaseDurations } from '@/lib/companion/types' import { DEFAULT_TEACHER_SETTINGS, DEFAULT_PHASE_DURATIONS, PHASE_ORDER, PHASE_DISPLAY_NAMES, PHASE_COLORS, calculateTotalDuration, } from '@/lib/companion/constants' interface SettingsModalProps { isOpen: boolean onClose: () => void settings: TeacherSettings onSave: (settings: TeacherSettings) => void } export function SettingsModal({ isOpen, onClose, settings, onSave, }: SettingsModalProps) { const [localSettings, setLocalSettings] = useState(settings) const [durations, setDurations] = useState(settings.defaultPhaseDurations) useEffect(() => { setLocalSettings(settings) setDurations(settings.defaultPhaseDurations) }, [settings]) if (!isOpen) return null const totalDuration = calculateTotalDuration(durations) const handleDurationChange = (phase: keyof PhaseDurations, value: number) => { const newDurations = { ...durations, [phase]: Math.max(1, Math.min(60, value)) } setDurations(newDurations) } const handleReset = () => { setDurations(DEFAULT_PHASE_DURATIONS) setLocalSettings(DEFAULT_TEACHER_SETTINGS) } const handleSave = () => { const newSettings: TeacherSettings = { ...localSettings, defaultPhaseDurations: durations, } onSave(newSettings) onClose() } return (
{/* Backdrop */}
{/* Modal */}
{/* Header */}

Einstellungen

{/* Content */}
{/* Phase Durations */}

Standard-Phasendauern (Minuten)

{PHASE_ORDER.map((phase) => (
{PHASE_DISPLAY_NAMES[phase]}
handleDurationChange(phase, parseInt(e.target.value) || 1)} className="w-20 px-3 py-2 border border-slate-200 rounded-lg text-center focus:ring-2 focus:ring-blue-500 focus:border-blue-500" /> handleDurationChange(phase, parseInt(e.target.value))} className="flex-1" style={{ accentColor: PHASE_COLORS[phase].hex, }} />
))}
Gesamtdauer: {totalDuration} Minuten
{/* Other Settings */}

Weitere Einstellungen

{/* Auto Advance */} {/* Sound Notifications */} {/* Keyboard Shortcuts */} {/* High Contrast */}
{/* Footer */}
) }