import { HeaderToggleButton } from './Header';
import { ThemeMode, useThemeConfig } from '@/components/Layout/ThemeProvider';
import { usePopoverState } from '@/hooks';
import { MoonOutlined, SunOutlined } from '@ant-design/icons';
import { ClickAwayListener, List, ListItemButton, Paper, Popper, Typography, useTheme } from '@mui/material';
import { Transitions } from '@/components/@extended';
import { MainCard } from '@/components/MainCard';
import { Brightness6 } from '@mui/icons-material';
import { useCallback } from 'react';
import { useTranslate } from 'ra-core';
type ThemeModePopoverProps = {
open: boolean;
anchorEl: HTMLElement | null;
handleClose: () => void;
theme: any;
mode: ThemeMode;
toggleThemeMode: (theme: ThemeMode) => void;
};
function ThemeModePopover({ open, anchorEl, handleClose, theme, mode, toggleThemeMode }: ThemeModePopoverProps) {
const translate = useTranslate();
return (
{({ TransitionProps }) => (
toggleThemeMode('light')}>
{translate('ra.preferences.theme.light')}
toggleThemeMode('dark')}>
{translate('ra.preferences.theme.dark')}
toggleThemeMode('auto')}>
{translate('ra.preferences.theme.auto')}
)}
);
}
function ThemeToggler(): JSX.Element {
const theme = useTheme();
const { mode, setMode } = useThemeConfig();
const { open, anchorEl, handleToggle, handleClose } = usePopoverState();
const toggleThemeMode = useCallback(
(theme: ThemeMode) => {
setMode(theme);
},
[setMode]
);
const ThemeIcon = useCallback(() => {
switch (mode) {
case 'light':
return ;
case 'dark':
return ;
default:
return ;
}
}, [mode]);
return (
{open ? (
) : null}
);
}
export { ThemeToggler };