feishin/src/remote/components/buttons/theme-button.tsx

29 lines
892 B
TypeScript
Raw Normal View History

2025-05-20 19:23:36 -07:00
import { useEffect } from 'react';
import { RiMoonLine, RiSunLine } from 'react-icons/ri';
2025-05-20 19:23:36 -07:00
import { RemoteButton } from '/@/remote/components/buttons/remote-button';
2025-05-20 19:23:36 -07:00
import { useIsDark, useToggleDark } from '/@/remote/store';
import { AppTheme } from '/@/shared/types/domain-types';
export const ThemeButton = () => {
const isDark = useIsDark();
const toggleDark = useToggleDark();
useEffect(() => {
const targetTheme: AppTheme = isDark ? AppTheme.DEFAULT_DARK : AppTheme.DEFAULT_LIGHT;
document.body.setAttribute('data-theme', targetTheme);
}, [isDark]);
return (
<RemoteButton
mr={5}
2025-05-20 19:23:36 -07:00
onClick={() => toggleDark()}
size="xl"
tooltip="Toggle Theme"
variant="default"
>
{isDark ? <RiSunLine size={30} /> : <RiMoonLine size={30} />}
</RemoteButton>
);
};