import { ExternalLink, Info } from 'lucide-react';
import {
Tooltip,
TooltipContent,
TooltipTrigger,
} from '@/components/ui/tooltip';
import { cn } from '@/lib/utils';
export interface DataSource {
id: string;
name: string;
url?: string;
lastUpdated?: string;
description?: string;
}
interface SourceLinkProps {
source: DataSource;
variant?: 'icon' | 'text' | 'badge';
className?: string;
}
const SourceLink = ({ source, variant = 'icon', className }: SourceLinkProps) => {
const handleClick = (e: React.MouseEvent) => {
e.stopPropagation();
if (source.url) {
window.open(source.url, '_blank', 'noopener,noreferrer');
}
};
const content = (
{source.name}
{source.url && }
{source.description && (
{source.description}
)}
{source.lastUpdated && (
Sidst opdateret: {source.lastUpdated}
)}
{source.url && (
Klik for at åbne kilde
)}
);
if (variant === 'badge') {
return (
{content}
);
}
if (variant === 'text') {
return (
{content}
);
}
// Default: icon variant
return (
{content}
);
};
export default SourceLink;
// Common data sources for the platform
export const dataSources: Record = {
systemMetrics: {
id: 'system-metrics',
name: 'System Metrics API',
url: 'https://api.cyberterm.io/metrics',
lastUpdated: new Date().toLocaleString('da-DK'),
description: 'Real-time system performance data fra intern overvågning'
},
userAnalytics: {
id: 'user-analytics',
name: 'User Analytics',
url: 'https://analytics.cyberterm.io',
lastUpdated: new Date().toLocaleString('da-DK'),
description: 'Brugerstatistik og engagement metrics'
},
securityLog: {
id: 'security-log',
name: 'Security Log',
url: 'https://security.cyberterm.io/logs',
lastUpdated: new Date().toLocaleString('da-DK'),
description: 'Sikkerhedslogfiler og trusselsvurderinger'
},
networkStatus: {
id: 'network-status',
name: 'Network Monitor',
url: 'https://network.cyberterm.io/status',
lastUpdated: new Date().toLocaleString('da-DK'),
description: 'Netværksstatus og forbindelsesdata'
},
cryptoMarket: {
id: 'crypto-market',
name: 'CoinGecko API',
url: 'https://www.coingecko.com',
lastUpdated: new Date().toLocaleString('da-DK'),
description: 'Cryptocurrency markedsdata'
},
weatherApi: {
id: 'weather-api',
name: 'OpenWeather',
url: 'https://openweathermap.org',
lastUpdated: new Date().toLocaleString('da-DK'),
description: 'Vejrdata og prognoser'
},
internalDb: {
id: 'internal-db',
name: 'Intern Database',
url: 'https://db.cyberterm.io',
lastUpdated: new Date().toLocaleString('da-DK'),
description: 'Intern datalagring og registre'
},
aiEngine: {
id: 'ai-engine',
name: 'AI Analysis Engine',
url: 'https://ai.cyberterm.io',
lastUpdated: new Date().toLocaleString('da-DK'),
description: 'Machine learning baserede analyser'
},
threatIntel: {
id: 'threat-intel',
name: 'Threat Intelligence Feed',
url: 'https://threatintel.cyberterm.io',
lastUpdated: new Date().toLocaleString('da-DK'),
description: 'Real-time trussel information og IOC feeds'
},
};