This commit is contained in:
Mackie 2026-05-25 02:13:14 +08:00
parent 4bc30ffc93
commit faf1e7ec29

View file

@ -250,19 +250,41 @@ function LogosSection({ isDark }: { isDark: boolean }) {
const logoFilter = isDark ? 'brightness-0 invert opacity-30' : 'brightness-0 opacity-25' const logoFilter = isDark ? 'brightness-0 invert opacity-30' : 'brightness-0 opacity-25'
return ( return (
<section className={cn('relative border-t py-8 px-6', border)}> <section className={cn('relative border-t py-8 overflow-hidden', border)}>
<p className={cn('mb-6 text-center text-xs tracking-widest uppercase', text)}> <p className={cn('mb-6 text-center text-xs tracking-widest uppercase px-6', text)}>
Skills Skills
</p> </p>
<div className="mx-auto flex max-w-3xl flex-wrap items-center justify-center gap-8">
{LOGOS.map(l => ( {/* Marquee track */}
<img key={l.alt} src={l.src} alt={l.alt} className={cn('h-5 w-auto transition-all', logoFilter)} /> <div className="relative flex overflow-hidden">
<div
className="flex gap-12 items-center"
style={{
animation: 'marquee 20s linear infinite',
whiteSpace: 'nowrap',
}}
>
{/* Duplicate logos for seamless loop */}
{[...LOGOS, ...LOGOS].map((l, i) => (
<img
key={i}
src={l.src}
alt={l.alt}
className={cn('h-5 w-auto flex-shrink-0 transition-all', logoFilter)}
/>
))} ))}
</div> </div>
</div>
<style>{`
@keyframes marquee {
0% { transform: translateX(0); }
100% { transform: translateX(-50%); }
}
`}</style>
</section> </section>
) )
} }
// ─── Main export ────────────────────────────────────────────────────────────── // ─── Main export ──────────────────────────────────────────────────────────────
interface HeroPageProps { interface HeroPageProps {