@mcp-shark/mcp-shark
Version:
Aggregate multiple Model Context Protocol (MCP) servers into a single unified interface with a powerful monitoring UI. Prov deep visibility into every request and response.
93 lines (91 loc) • 2.61 kB
JSX
import { colors, fonts } from '../../theme';
import { IconX, IconExternalLink } from '@tabler/icons-react';
export default function ScanDetailHeader({ scanId, serverName, onClose }) {
return (
<div
style={{
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center',
marginBottom: '20px',
}}
>
<div>
<h2
style={{
fontSize: '16px',
fontWeight: '600',
color: colors.textPrimary,
fontFamily: fonts.body,
margin: 0,
marginBottom: '8px',
}}
>
{serverName}
</h2>
{scanId && (
<div
style={{
fontSize: '12px',
color: colors.textTertiary,
fontFamily: fonts.body,
}}
>
ID: {scanId}
</div>
)}
</div>
<div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>
{scanId && (
<a
href={`https://smart.mcpshark.sh/scan-results?id=${scanId}`}
target="_blank"
rel="noopener noreferrer"
style={{
padding: '6px 12px',
background: colors.buttonPrimary,
border: 'none',
color: colors.textInverse,
borderRadius: '6px',
fontSize: '12px',
fontFamily: fonts.body,
fontWeight: '500',
textDecoration: 'none',
cursor: 'pointer',
display: 'flex',
alignItems: 'center',
gap: '6px',
}}
>
<IconExternalLink size={14} stroke={1.5} />
View on Smart Scan
</a>
)}
<button
onClick={onClose}
style={{
padding: '6px',
background: 'transparent',
border: 'none',
color: colors.textSecondary,
cursor: 'pointer',
borderRadius: '4px',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
}}
onMouseEnter={(e) => {
e.currentTarget.style.background = colors.bgTertiary;
e.currentTarget.style.color = colors.textPrimary;
}}
onMouseLeave={(e) => {
e.currentTarget.style.background = 'transparent';
e.currentTarget.style.color = colors.textSecondary;
}}
>
<IconX size={20} stroke={1.5} />
</button>
</div>
</div>
);
}