Akash4911's picture
Production Deploy: Improved robustness and logging
66b6851
Raw
History Blame Contribute Delete
9.35 kB
import { Link } from 'react-router-dom';
import logo from '../assets/logo.png';
const Footer = () => {
return (
<footer style={{ background: 'var(--panel-bg)', borderTop: '1px solid var(--panel-border)', padding: '4rem 0 3rem' }}>
<div style={{ maxWidth: '80rem', margin: '0 auto', padding: '0 1.5rem' }}>
{/* columns */}
<div style={{ display: 'grid', gridTemplateColumns: '2fr 1fr 1fr 1fr', gap: '3rem', marginBottom: '4rem' }}>
{/* logo + tagline */}
<div>
<Link to="/">
<img src={logo} alt="FakeShield" style={{ height: '5.5rem', width: 'auto', marginBottom: '1.25rem' }} />
</Link>
<p style={{ color: 'var(--text-secondary)', fontSize: '0.8125rem', lineHeight: 1.7, maxWidth: '16rem' }}>
AI-powered deepfake detection across text, image, audio, and video.
</p>
</div>
{/* Product */}
<div>
<h4 style={{ color: 'var(--text-primary)', fontSize: '0.6875rem', fontWeight: 700, textTransform: 'uppercase', letterSpacing: '0.1em', marginBottom: '1.25rem' }}>Product</h4>
<ul style={{ listStyle: 'none', padding: 0, margin: 0, display: 'flex', flexDirection: 'column', gap: '0.875rem' }}>
{[
{ label: 'Features', href: '/#labs' },
{ label: 'Pricing', href: '/subscription' },
{ label: 'Dashboard', href: '/dashboard' },
{ label: 'Analytics', href: '/dashboard' },
].map(l => (
<li key={l.label}>
{l.href.startsWith('#') || l.href.startsWith('/#') ? (
<a href={l.href} style={{ color: 'var(--text-secondary)', textDecoration: 'none', fontSize: '0.8125rem', transition: 'color 0.2s' }}
onMouseOver={e => e.currentTarget.style.color = 'var(--text-primary)'}
onMouseOut={e => e.currentTarget.style.color = 'var(--text-secondary)'}
>{l.label}</a>
) : (
<Link to={l.href} style={{ color: 'var(--text-secondary)', textDecoration: 'none', fontSize: '0.8125rem', transition: 'color 0.2s' }}
onMouseOver={e => e.currentTarget.style.color = 'var(--text-primary)'}
onMouseOut={e => e.currentTarget.style.color = 'var(--text-secondary)'}
>{l.label}</Link>
)}
</li>
))}
</ul>
</div>
{/* Company */}
<div>
<h4 style={{ color: 'var(--text-primary)', fontSize: '0.6875rem', fontWeight: 700, textTransform: 'uppercase', letterSpacing: '0.1em', marginBottom: '1.25rem' }}>Company</h4>
<ul style={{ listStyle: 'none', padding: 0, margin: 0, display: 'flex', flexDirection: 'column', gap: '0.875rem' }}>
{[
{ label: 'About Us', href: '/about' },
{ label: 'Contact', href: '/contact' },
{ label: 'GitHub', href: 'https://github.com/Akash4782' },
].map(l => (
<li key={l.label}>
{l.href.startsWith('http') ? (
<a href={l.href} target="_blank" rel="noopener noreferrer"
style={{ color: 'var(--text-secondary)', textDecoration: 'none', fontSize: '0.8125rem', transition: 'color 0.2s' }}
onMouseOver={e => e.currentTarget.style.color = 'var(--text-primary)'}
onMouseOut={e => e.currentTarget.style.color = 'var(--text-secondary)'}
>{l.label}</a>
) : (
<Link to={l.href}
style={{ color: 'var(--text-secondary)', textDecoration: 'none', fontSize: '0.8125rem', transition: 'color 0.2s' }}
onMouseOver={e => e.currentTarget.style.color = 'var(--text-primary)'}
onMouseOut={e => e.currentTarget.style.color = 'var(--text-secondary)'}
>{l.label}</Link>
)}
</li>
))}
</ul>
</div>
{/* Legal */}
<div>
<h4 style={{ color: 'var(--text-primary)', fontSize: '0.6875rem', fontWeight: 700, textTransform: 'uppercase', letterSpacing: '0.1em', marginBottom: '1.25rem' }}>Legal</h4>
<ul style={{ listStyle: 'none', padding: 0, margin: 0, display: 'flex', flexDirection: 'column', gap: '0.875rem' }}>
{[
{ label: 'Privacy Policy', href: '/privacy' },
{ label: 'Terms of Service', href: '/terms' },
{ label: 'FAQs', href: '/faq' },
].map(l => (
<li key={l.label}>
<Link to={l.href} style={{ color: 'var(--text-secondary)', textDecoration: 'none', fontSize: '0.8125rem', transition: 'color 0.2s' }}
onMouseOver={e => e.currentTarget.style.color = 'var(--text-primary)'}
onMouseOut={e => e.currentTarget.style.color = 'var(--text-secondary)'}
>{l.label}</Link>
</li>
))}
</ul>
</div>
</div>
{/* bottom bar */}
<div style={{ borderTop: '1px solid var(--panel-border)', paddingTop: '2rem', display: 'flex', alignItems: 'center', justifyContent: 'space-between', flexWrap: 'wrap', gap: '1rem' }}>
<p style={{ color: 'var(--text-muted)', fontSize: '0.8125rem' }}>© 2026 FakeShield. All rights reserved.</p>
<div style={{ display: 'flex', gap: '0.75rem', alignItems: 'center' }}>
{/* GitHub */}
<a href="https://github.com/Akash4782" target="_blank" rel="noopener noreferrer"
title="GitHub Profile"
style={{
color: 'var(--text-muted)',
transition: 'color 0.2s',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
width: '32px',
height: '32px',
borderRadius: '50%'
}}
onMouseOver={e => e.currentTarget.style.color = 'var(--text-primary)'}
onMouseOut={e => e.currentTarget.style.color = 'var(--text-muted)'}>
<svg width="20" height="20" fill="currentColor" viewBox="0 0 24 24"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
</a>
{/* LinkedIn */}
<a href="https://www.linkedin.com/in/akash-virdi-399ab4253/" target="_blank" rel="noopener noreferrer"
title="LinkedIn Profile"
style={{
color: 'var(--text-muted)',
transition: 'color 0.2s',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
width: '32px',
height: '32px',
borderRadius: '50%'
}}
onMouseOver={e => e.currentTarget.style.color = 'var(--text-primary)'}
onMouseOut={e => e.currentTarget.style.color = 'var(--text-muted)'}>
<svg width="20" height="20" fill="currentColor" viewBox="0 0 24 24"><path d="M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z"/></svg>
</a>
{/* Email Contact */}
<a href="mailto:virdiakash77@gmail.com"
title="Send an email to Akash Virdi"
style={{
color: 'var(--text-muted)',
transition: 'color 0.2s',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
width: '32px',
height: '32px',
borderRadius: '50%'
}}
onMouseOver={e => e.currentTarget.style.color = 'var(--text-primary)'}
onMouseOut={e => e.currentTarget.style.color = 'var(--text-muted)'}>
<svg width="20" height="20" fill="none" stroke="currentColor" strokeWidth="2" viewBox="0 0 24 24">
<path d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" strokeLinecap="round" strokeLinejoin="round"/>
</svg>
</a>
</div>
</div>
</div>
</footer>
);
};
export default Footer;