|
| 1 | +const FOOTER_LINKS = { |
| 2 | + Platform: ['Research Papers', 'Benchmark', 'Methods Library', 'Idea Board', 'Open Problems'], |
| 3 | + Community: ['GitHub', 'Submit a Paper', 'Submit a Method', 'Mailing List', 'Contact'], |
| 4 | + Enterprise:['Partner with Us', 'Schedule an Audit', 'Case Studies', 'Compliance Guide', 'API Access'], |
| 5 | +}; |
| 6 | + |
| 7 | +export default function Footer() { |
| 8 | + const linkStyle = { |
| 9 | + display: 'block', fontSize: '.85rem', color: 'rgba(255,255,255,.55)', |
| 10 | + textDecoration: 'none', marginBottom: 8, transition: 'color .15s', |
| 11 | + }; |
| 12 | + |
| 13 | + return ( |
| 14 | + <footer style={{ background: '#0f172a', padding: '3rem 2rem 2rem', borderTop: '1px solid rgba(255,255,255,.06)' }}> |
| 15 | + <div style={{ maxWidth: 1440, margin: '0 auto' }}> |
| 16 | + <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit,minmax(200px,1fr))', gap: '2.5rem', marginBottom: '2.5rem' }}> |
| 17 | + |
| 18 | + {/* Brand */} |
| 19 | + <div> |
| 20 | + <div style={{ display: 'flex', alignItems: 'center', gap: 9, marginBottom: '1rem' }}> |
| 21 | + <div style={{ width: 30, height: 30, background: 'linear-gradient(135deg,#1e3a8a,#2563eb)', borderRadius: 7, display: 'flex', alignItems: 'center', justifyContent: 'center' }}> |
| 22 | + <svg width="16" height="16" viewBox="0 0 18 18" fill="none"> |
| 23 | + <path d="M3 9h4l2-5 2 10 2-5h4" stroke="white" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round" /> |
| 24 | + </svg> |
| 25 | + </div> |
| 26 | + <span style={{ fontWeight: 800, color: '#fff', fontSize: '.92rem' }}>AlgorithmicRecourse</span> |
| 27 | + </div> |
| 28 | + <p style={{ fontSize: '.82rem', color: 'rgba(255,255,255,.45)', lineHeight: 1.65, maxWidth: 240, marginBottom: '1rem' }}> |
| 29 | + The comprehensive hub for algorithmic recourse research, tools, and enterprise deployment. |
| 30 | + </p> |
| 31 | + <p style={{ fontSize: '.75rem', color: 'rgba(255,255,255,.28)', lineHeight: 1.6 }}> |
| 32 | + CHARM Lab · University of Waterloo<br />Waterloo, ON, Canada |
| 33 | + </p> |
| 34 | + </div> |
| 35 | + |
| 36 | + {/* Link columns */} |
| 37 | + {Object.entries(FOOTER_LINKS).map(([heading, items]) => ( |
| 38 | + <div key={heading}> |
| 39 | + <div style={{ fontSize: '.68rem', fontWeight: 700, color: 'rgba(255,255,255,.28)', textTransform: 'uppercase', letterSpacing: '.1em', marginBottom: '1rem' }}> |
| 40 | + {heading} |
| 41 | + </div> |
| 42 | + {items.map(l => ( |
| 43 | + <a key={l} href="#" style={linkStyle} |
| 44 | + onMouseEnter={e => e.currentTarget.style.color = '#fff'} |
| 45 | + onMouseLeave={e => e.currentTarget.style.color = 'rgba(255,255,255,.55)'}> |
| 46 | + {l} |
| 47 | + </a> |
| 48 | + ))} |
| 49 | + </div> |
| 50 | + ))} |
| 51 | + |
| 52 | + {/* Newsletter */} |
| 53 | + <div> |
| 54 | + <div style={{ fontSize: '.68rem', fontWeight: 700, color: 'rgba(255,255,255,.28)', textTransform: 'uppercase', letterSpacing: '.1em', marginBottom: '1rem' }}> |
| 55 | + Stay Updated |
| 56 | + </div> |
| 57 | + <p style={{ fontSize: '.82rem', color: 'rgba(255,255,255,.45)', lineHeight: 1.65, marginBottom: '1rem' }}> |
| 58 | + New papers, benchmarks, and tools — directly to your inbox. |
| 59 | + </p> |
| 60 | + <div style={{ display: 'flex', gap: 8 }}> |
| 61 | + <input type="email" placeholder="you@university.edu" |
| 62 | + style={{ flex: 1, padding: '9px 12px', background: 'rgba(255,255,255,.06)', border: '1px solid rgba(255,255,255,.12)', borderRadius: 7, color: '#fff', fontSize: '.82rem', outline: 'none', fontFamily: 'inherit' }} /> |
| 63 | + <button style={{ padding: '9px 16px', background: '#2563eb', color: '#fff', borderRadius: 7, fontWeight: 700, fontSize: '.85rem', border: 'none', cursor: 'pointer', fontFamily: 'inherit' }}>→</button> |
| 64 | + </div> |
| 65 | + </div> |
| 66 | + </div> |
| 67 | + |
| 68 | + {/* Bottom bar */} |
| 69 | + <div style={{ borderTop: '1px solid rgba(255,255,255,.08)', paddingTop: '1.5rem', display: 'flex', justifyContent: 'space-between', alignItems: 'center', flexWrap: 'wrap', gap: '1rem' }}> |
| 70 | + <span style={{ fontSize: '.75rem', color: 'rgba(255,255,255,.3)' }}> |
| 71 | + © 2025 CHARM Lab, University of Waterloo. All rights reserved. |
| 72 | + </span> |
| 73 | + <div style={{ display: 'flex', gap: '1.5rem' }}> |
| 74 | + {['Privacy', 'Terms', 'Accessibility'].map(l => ( |
| 75 | + <a key={l} href="#" style={{ fontSize: '.75rem', color: 'rgba(255,255,255,.3)', textDecoration: 'none', transition: 'color .15s' }} |
| 76 | + onMouseEnter={e => e.currentTarget.style.color = 'rgba(255,255,255,.7)'} |
| 77 | + onMouseLeave={e => e.currentTarget.style.color = 'rgba(255,255,255,.3)'}> |
| 78 | + {l} |
| 79 | + </a> |
| 80 | + ))} |
| 81 | + </div> |
| 82 | + </div> |
| 83 | + </div> |
| 84 | + </footer> |
| 85 | + ); |
| 86 | +} |
0 commit comments