All files / src/app/HamburgerMenu/MenuContent LogoutMenuAction.tsx

100% Statements 65/65
100% Branches 2/2
100% Functions 2/2
100% Lines 65/65

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 661x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 7x 7x 7x 7x 7x 7x 7x 3x 3x 3x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x  
/**
 * @file LogoutMenuAction.tsx
 * @module app/HamburgerMenu/MenuContent/LogoutMenuAction
 *
 * @summary
 * Logout menu item component with logout icon and callback.
 * Handles logout action trigger with menu close integration.
 *
 * @example
 * ```tsx
 * <LogoutMenuAction onLogout={handleLogout} onClose={handleClose} />
 * ```
 */
 
import { MenuItem, Typography } from '@mui/material';
import LogoutIcon from '@mui/icons-material/Logout';
import { useTranslation } from 'react-i18next';
 
interface LogoutMenuActionProps {
  /** Callback when logout is clicked */
  onLogout: () => void;
 
  /** Callback to close menu before logout */
  onClose: () => void;
}
 
/**
 * Logout menu action component.
 *
 * Renders logout menu item with icon and label.
 * Closes menu before triggering logout callback.
 *
 * @param props - Component props
 * @returns JSX element rendering logout menu item
 */
export default function LogoutMenuAction({
  onLogout,
  onClose,
}: LogoutMenuActionProps) {
  const { t } = useTranslation(['common']);
 
  const handleLogoutClick = () => {
    onClose();
    onLogout();
  };
 
  return (
    <MenuItem
      onClick={handleLogoutClick}
      sx={{
        py: 1,
        px: 2,
        display: 'flex',
        gap: 1,
        alignItems: 'center',
        '&:hover': {
          bgcolor: 'action.hover',
        },
      }}
    >
      <LogoutIcon fontSize="small" />
      <Typography variant="body2">{t('nav.logout', 'Logout')}</Typography>
    </MenuItem>
  );
}