|
|
import React from 'react';
|
|
|
import { Box, Chip, keyframes } from '@mui/material';
|
|
|
import CircleIcon from '@mui/icons-material/Circle';
|
|
|
|
|
|
interface ConnectionStatusProps {
|
|
|
isConnected: boolean;
|
|
|
}
|
|
|
|
|
|
|
|
|
const pulse = keyframes`
|
|
|
0%, 100% {
|
|
|
opacity: 1;
|
|
|
}
|
|
|
50% {
|
|
|
opacity: 0.5;
|
|
|
}
|
|
|
`;
|
|
|
|
|
|
export const ConnectionStatus: React.FC<ConnectionStatusProps> = ({ isConnected }) => {
|
|
|
return (
|
|
|
<Chip
|
|
|
label={isConnected ? 'Backend Online' : 'Backend Offline'}
|
|
|
deleteIcon={
|
|
|
<CircleIcon
|
|
|
sx={{
|
|
|
fontSize: 6,
|
|
|
animation: isConnected ? `${pulse} 2s ease-in-out infinite` : 'none',
|
|
|
}}
|
|
|
/>
|
|
|
}
|
|
|
onDelete={() => {}} // Required for deleteIcon to show
|
|
|
size="small"
|
|
|
sx={{
|
|
|
backgroundColor: 'action.hover',
|
|
|
border: '1px solid',
|
|
|
borderColor: 'divider',
|
|
|
color: 'text.primary',
|
|
|
fontSize: '0.7rem',
|
|
|
fontWeight: 500,
|
|
|
height: 'auto',
|
|
|
'& .MuiChip-label': {
|
|
|
px: 1,
|
|
|
py: 0.5,
|
|
|
},
|
|
|
'& .MuiChip-deleteIcon': {
|
|
|
color: isConnected ? '#10b981' : '#ef4444',
|
|
|
marginRight: 0.5,
|
|
|
'&:hover': {
|
|
|
color: isConnected ? '#10b981' : '#ef4444',
|
|
|
},
|
|
|
},
|
|
|
}}
|
|
|
/>
|
|
|
);
|
|
|
};
|
|
|
|