Download frontend-react/src/components/HeroSection.tsx from Aarav13/AuthriX: direct link, hf CLI and curl.
- Browser
- Download file 8.5 kB
-
https://huggingface.co/spaces/Aarav13/AuthriX/resolve/main/frontend-react/src/components/HeroSection.tsx
- Command line
-
hf download hf://spaces/Aarav13/AuthriX/frontend-react/src/components/HeroSection.tsx
-
curl -L -o HeroSection.tsx https://huggingface.co/spaces/Aarav13/AuthriX/resolve/main/frontend-react/src/components/HeroSection.tsx
8.5 kB
| import GridScan from './GridScan'; | |
| import AnalyzeButton from './AnalyzeButton'; | |
| interface HeroSectionProps { | |
| onAnalyze: () => void; | |
| } | |
| export default function HeroSection({ onAnalyze }: HeroSectionProps) { | |
| return ( | |
| <section className="relative w-full min-h-screen overflow-hidden"> | |
| {/* GridScan — true full-viewport background */} | |
| <div className="absolute inset-0 z-0"> | |
| <GridScan | |
| sensitivity={0.5} | |
| lineThickness={1} | |
| linesColor="#2a1a3e" | |
| gridScale={0.1} | |
| scanColor="#a855f7" | |
| scanOpacity={0.45} | |
| enablePost={true} | |
| bloomIntensity={0.7} | |
| bloomThreshold={0.1} | |
| bloomSmoothing={0.2} | |
| chromaticAberration={0.003} | |
| noiseIntensity={0.012} | |
| scanDirection="pingpong" | |
| scanDuration={2.5} | |
| scanDelay={1.2} | |
| scanGlow={0.7} | |
| scanSoftness={2.5} | |
| scanPhaseTaper={0.85} | |
| /> | |
| </div> | |
| {/* Dark purple gradient overlay */} | |
| <div | |
| className="absolute inset-0 z-[1] pointer-events-none" | |
| style={{ | |
| background: | |
| 'radial-gradient(ellipse 80% 60% at 50% 40%, rgba(88,28,135,0.18) 0%, rgba(10,5,20,0.55) 70%, rgba(5,2,12,0.85) 100%)', | |
| }} | |
| /> | |
| {/* ── Two-column layout: left content / right orb ── */} | |
| <div className="relative z-10 flex items-center min-h-screen pt-16 px-4 md:px-8 max-w-7xl mx-auto w-full"> | |
| <div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center w-full min-h-[calc(100vh-4rem)]"> | |
| {/* ── LEFT: text + buttons + stats ── */} | |
| <div className="flex flex-col items-start space-y-6 -ml-2 md:-ml-6 lg:-ml-10"> | |
| {/* Status badge */} | |
| <div | |
| className="inline-flex items-center gap-2 px-3 py-1.5 rounded-full backdrop-blur-md" | |
| style={{ | |
| background: 'rgba(88,28,135,0.3)', | |
| border: '1px solid rgba(168,85,247,0.25)', | |
| }} | |
| > | |
| <span | |
| className="w-2 h-2 rounded-full animate-pulse" | |
| style={{ background: '#a855f7', boxShadow: '0 0 8px #a855f7' }} | |
| /> | |
| <span className="font-bold text-[10px] text-purple-300/80 uppercase tracking-[0.18em]"> | |
| AI-Powered Authenticity Engine | |
| </span> | |
| </div> | |
| {/* Headline */} | |
| <h1 | |
| className="text-5xl md:text-6xl lg:text-7xl font-black leading-[1.05] tracking-tight" | |
| style={{ textShadow: '0 0 60px rgba(168,85,247,0.2)' }} | |
| > | |
| <span className="text-white">Verify Reality</span> | |
| <br /> | |
| <span className="text-white">in </span> | |
| <span | |
| className="text-transparent bg-clip-text" | |
| style={{ | |
| backgroundImage: | |
| 'linear-gradient(135deg, #c084fc 0%, #a855f7 40%, #7c3aed 70%, #4f46e5 100%)', | |
| }} | |
| > | |
| Real-Time | |
| </span> | |
| </h1> | |
| {/* Subtext */} | |
| <p className="text-base text-purple-200/55 max-w-lg leading-relaxed"> | |
| Deploy advanced neural networks to detect deepfakes, synthetic media, and manipulated | |
| data streams with military-grade precision. Establish an unbreakable perimeter of truth. | |
| </p> | |
| {/* CTAs */} | |
| <div className="flex flex-wrap items-center gap-4 pt-2"> | |
| <AnalyzeButton onClick={onAnalyze} /> | |
| </div> | |
| {/* Stats */} | |
| <div | |
| className="flex items-center gap-8 pt-6 mt-4 border-t w-full max-w-sm" | |
| style={{ borderColor: 'rgba(168,85,247,0.15)' }} | |
| > | |
| <div> | |
| <div | |
| className="text-xl font-black tracking-tight" | |
| style={{ color: '#c084fc', textShadow: '0 0 16px rgba(168,85,247,0.5)' }} | |
| > | |
| 99.9% | |
| </div> | |
| <div className="font-bold text-[10px] text-purple-400/50 mt-1 uppercase tracking-widest"> | |
| Accuracy Rate | |
| </div> | |
| </div> | |
| <div className="w-px h-8" style={{ background: 'rgba(168,85,247,0.2)' }} /> | |
| <div> | |
| <div | |
| className="text-xl font-black tracking-tight" | |
| style={{ color: '#a78bfa', textShadow: '0 0 16px rgba(139,92,246,0.5)' }} | |
| > | |
| <15ms | |
| </div> | |
| <div className="font-bold text-[10px] text-purple-400/50 mt-1 uppercase tracking-widest"> | |
| Latency Ping | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| {/* ── RIGHT: Orb visualizer ── */} | |
| <div className="relative w-full aspect-square max-w-lg mx-auto flex items-center justify-center lg:justify-end"> | |
| {/* Outer ambient glow */} | |
| <div | |
| className="absolute inset-0 rounded-full blur-[60px]" | |
| style={{ background: 'rgba(124,58,237,0.12)' }} | |
| /> | |
| {/* Orb shell */} | |
| <div | |
| className="relative w-4/5 h-4/5 rounded-full flex items-center justify-center" | |
| style={{ | |
| background: 'radial-gradient(circle at 40% 35%, rgba(124,58,237,0.15) 0%, rgba(8,4,18,0.7) 100%)', | |
| border: '1px solid rgba(168,85,247,0.15)', | |
| boxShadow: 'inset 0 0 40px rgba(0,0,0,0.7), 0 0 60px rgba(124,58,237,0.15)', | |
| }} | |
| > | |
| {/* Spinning rings */} | |
| <div | |
| className="absolute w-[115%] h-[115%] rounded-full animate-spin-slow" | |
| style={{ border: '1px solid rgba(168,85,247,0.1)' }} | |
| /> | |
| <div | |
| className="absolute w-full h-full rounded-full animate-spin-slow-reverse" | |
| style={{ border: '1px dashed rgba(139,92,246,0.15)' }} | |
| /> | |
| <div | |
| className="absolute w-4/5 h-4/5 rounded-full" | |
| style={{ border: '1px solid rgba(168,85,247,0.06)' }} | |
| /> | |
| {/* Core */} | |
| <div | |
| className="relative w-3/5 h-3/5 rounded-full flex items-center justify-center overflow-hidden" | |
| style={{ | |
| background: 'radial-gradient(circle, rgba(124,58,237,0.3) 0%, rgba(8,4,18,0.9) 100%)', | |
| border: '1px solid rgba(168,85,247,0.25)', | |
| boxShadow: '0 0 40px rgba(124,58,237,0.2)', | |
| }} | |
| > | |
| <span | |
| className="material-symbols-outlined" | |
| style={{ | |
| fontSize: 100, | |
| color: '#c084fc', | |
| opacity: 0.45, | |
| fontVariationSettings: "'FILL' 1", | |
| filter: 'drop-shadow(0 0 20px rgba(168,85,247,0.9))', | |
| }} | |
| > | |
| radar | |
| </span> | |
| {/* Spinning accent border */} | |
| <div | |
| className="absolute inset-0 rounded-full border-t-2 blur-[2px] animate-spin-fast" | |
| style={{ borderColor: 'rgba(168,85,247,0.6)' }} | |
| /> | |
| <div className="absolute inset-0 bg-gradient-to-t from-[#050210]/60 via-transparent to-transparent" /> | |
| </div> | |
| </div> | |
| {/* Floating HUD chips */} | |
| <div | |
| className="absolute top-8 -left-2 px-3 py-1 font-mono text-[10px] backdrop-blur-md rounded-sm" | |
| style={{ | |
| background: 'rgba(8,4,18,0.75)', | |
| border: '1px solid rgba(168,85,247,0.3)', | |
| color: '#c084fc', | |
| }} | |
| > | |
| SYS.OPT.OK | |
| </div> | |
| <div | |
| className="absolute bottom-16 -right-2 px-3 py-1 font-mono text-[10px] backdrop-blur-md rounded-sm flex items-center gap-1" | |
| style={{ | |
| background: 'rgba(8,4,18,0.75)', | |
| border: '1px solid rgba(139,92,246,0.3)', | |
| color: '#a78bfa', | |
| }} | |
| > | |
| <span className="material-symbols-outlined text-[11px]">sync</span> LIVE | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| ); | |
| } | |