import { useState } from 'react'; 
 | 
import { useStore, useTranslate, ToggleThemeButton } from 'react-admin'; 
 | 
import { IconButton, Menu, MenuItem, Tooltip } from '@mui/material'; 
 | 
import ColorLensIcon from '@mui/icons-material/ColorLens'; 
 | 
import { DEFAULT_THEME_NAME } from '@/config/setting'; 
 | 
  
 | 
import { themes } from './themes'; 
 | 
  
 | 
export const ThemeSwapper = () => { 
 | 
    const [anchorEl, setAnchorEl] = useState(null); 
 | 
    const open = Boolean(anchorEl); 
 | 
    const handleClick = (event) => { 
 | 
        setAnchorEl(event.currentTarget); 
 | 
    }; 
 | 
    const handleClose = () => { 
 | 
        setAnchorEl(null); 
 | 
    }; 
 | 
  
 | 
    const [themeName, setThemeName] = useStore('themeName', DEFAULT_THEME_NAME); 
 | 
    const handleChange = (_, index) => { 
 | 
        const newTheme = themes[index]; 
 | 
        setThemeName(newTheme.name); 
 | 
        setAnchorEl(null); 
 | 
    }; 
 | 
    const currentTheme = themes.find(theme => theme.name === themeName); 
 | 
  
 | 
    const translate = useTranslate(); 
 | 
    const toggleThemeTitle = translate('pos.action.change_theme', { 
 | 
        _: 'Change Theme', 
 | 
    }); 
 | 
  
 | 
    return ( 
 | 
        <> 
 | 
            <Tooltip title={toggleThemeTitle} enterDelay={300}> 
 | 
                <IconButton 
 | 
                    onClick={handleClick} 
 | 
                    color="inherit" 
 | 
                    aria-label={toggleThemeTitle} 
 | 
                > 
 | 
                    <ColorLensIcon /> 
 | 
                </IconButton> 
 | 
            </Tooltip> 
 | 
            {currentTheme?.dark ? <ToggleThemeButton /> : null} 
 | 
            <Menu open={open} onClose={handleClose} anchorEl={anchorEl}> 
 | 
                {themes.map((theme, index) => ( 
 | 
                    <MenuItem 
 | 
                        onClick={event => handleChange(event, index)} 
 | 
                        value={theme.name} 
 | 
                        key={theme.name} 
 | 
                        selected={theme.name === themeName} 
 | 
                    > 
 | 
                        {ucFirst(theme.name)} 
 | 
                    </MenuItem> 
 | 
                ))} 
 | 
            </Menu> 
 | 
        </> 
 | 
    ); 
 | 
}; 
 | 
  
 | 
const ucFirst = (str) => str.charAt(0).toUpperCase() + str.slice(1); 
 |