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' }, };