| 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); |