diff --git a/src/components/DarkModeToggle.tsx b/src/components/DarkModeToggle.tsx index 0d6acb1..7f12b9b 100644 --- a/src/components/DarkModeToggle.tsx +++ b/src/components/DarkModeToggle.tsx @@ -1,24 +1,41 @@ import { Moon, Sun } from 'lucide-react'; import { useTheme } from '../contexts/ThemeContext'; -function DarkModeToggle() { +type DarkModeToggleProps = { + checked?: boolean; + onToggle?: (nextValue: boolean) => void; + ariaLabel?: string; +}; + +function DarkModeToggle({ checked, onToggle, ariaLabel = 'Toggle dark mode' }: DarkModeToggleProps) { const { isDarkMode, toggleDarkMode } = useTheme(); + const isControlled = typeof checked === 'boolean' && typeof onToggle === 'function'; + const isEnabled = isControlled ? checked : isDarkMode; + + const handleToggle = () => { + if (isControlled) { + onToggle(!isEnabled); + return; + } + + toggleDarkMode(); + }; return (