From e47b2702fe95f5ab8dd6ebd158d318bbe6a4c8cb Mon Sep 17 00:00:00 2001 From: Haileyesus Date: Fri, 20 Feb 2026 09:18:16 +0300 Subject: [PATCH] refactor(settings): reuse DarkModeToggle for app and editor theme --- src/components/DarkModeToggle.tsx | 33 ++++++++++++++----- .../view/tabs/AppearanceSettingsTab.tsx | 28 +++++++++------- 2 files changed, 42 insertions(+), 19 deletions(-) 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 (