File size: 1,069 Bytes
c2adf08
 
3299552
 
 
 
 
 
 
c2adf08
 
 
 
3299552
 
 
c2adf08
3299552
 
 
c2adf08
 
 
 
 
 
3299552
 
c2adf08
3299552
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import React, { useCallback } from 'react';
import { IconButton, Tooltip, useTheme as useMuiTheme } from '@mui/material';
import { Brightness4, Brightness7 } from '@mui/icons-material';
import { useTheme } from '../../hooks/useTheme'; 

const ThemeToggle = ({ size = 'medium' }) => {
  const { toggleTheme, isDark } = useTheme();
  const theme = useMuiTheme();

  const handleToggle = useCallback(() => {
    toggleTheme();
  }, [toggleTheme]);

  return (
    <Tooltip title={`Switch to ${isDark ? 'light' : 'dark'} mode`}>
      <IconButton
        onClick={handleToggle}
        color="inherit"
        size={size}
        aria-label="toggle theme"
        sx={{
          transition: 'transform 0.3s ease',
          '&:hover': {
            transform: 'rotate(15deg)'
          }
        }}
      >
        {isDark ? (
          <Brightness7 sx={{ color: theme.palette.warning?.main || '#ffc107' }} />
        ) : (
          <Brightness4 sx={{ color: theme.palette.grey[600] }} />
        )}
      </IconButton>
    </Tooltip>
  );
};

export default ThemeToggle;