veza/apps/web/src/components/views/analytics-view/AnalyticsViewHeader.tsx
senke 24b4cce8ea refactor: Phase 2 — Font migration to SUMI stack
- Update Google Fonts: Inter + Space Grotesk + JetBrains Mono + Noto Serif JP
- Remove: Orbitron, Barlow, Source Serif 4, IBM Plex Mono, Noto Sans JP
- Replace all font-display (Orbitron) references with font-heading (Space Grotesk)
  across ~70 TSX files

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 01:49:07 +01:00

69 lines
2.2 KiB
TypeScript

import React from 'react';
import { Card } from '@/components/ui/card';
import { Button } from '@/components/ui/button';
import { Activity, Download } from 'lucide-react';
import { cn } from '@/lib/utils';
import type { DateRangeKey } from './types';
const RANGES: DateRangeKey[] = ['7d', '30d', '90d', 'ytd'];
interface AnalyticsViewHeaderProps {
dateRange: DateRangeKey;
onDateRangeChange: (range: DateRangeKey) => void;
onExportCsv: () => void;
onExportJson: () => void;
}
export function AnalyticsViewHeader({
dateRange,
onDateRangeChange,
onExportCsv,
onExportJson,
}: AnalyticsViewHeaderProps) {
return (
<div className="flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 border-b border-white/5 pb-8">
<div>
<h1 className="text-4xl font-heading font-bold text-white mb-2 flex items-center gap-3">
<Activity className="text-primary w-8 h-8" /> NEURAL ANALYTICS
</h1>
<p className="text-muted-foreground font-mono text-xs tracking-wide">
DEEP PACKET INSPECTION AUDIENCE METRICS
</p>
</div>
<div className="flex flex-wrap items-center gap-3">
<div className="bg-black/40 p-1 rounded-xl border border-white/10 backdrop-blur-md flex">
{RANGES.map((range) => (
<button
key={range}
type="button"
onClick={() => onDateRangeChange(range)}
className={cn(
'px-4 py-2 rounded-lg text-xs font-bold uppercase tracking-widest transition-all',
dateRange === range
? 'bg-primary text-black shadow-glow-cyan'
: 'text-muted-foreground hover:text-white'
)}
>
{range}
</button>
))}
</div>
<div className="flex gap-2">
<Button
variant="outline"
size="sm"
onClick={onExportCsv}
className="border-white/10 hover:border-primary/50"
>
<Download className="w-4 h-4 mr-2" /> CSV
</Button>
<Button variant="primary" size="sm" onClick={onExportJson} className="shadow-glow-cyan">
REPORT
</Button>
</div>
</div>
</div>
);
}