// Podcast section with animated waveform const { useEffect: useE3, useState: useS3, useRef: useR3 } = React; function Waveform({ playing }) { // animated bars const bars = Array.from({ length: 60 }); return (
{bars.map((_, i) => { const base = 0.2 + Math.abs(Math.sin(i * 0.6)) * 0.8; return (
); })}
); } function Podcast({ t }) { const ref = useR3(null); const [inView, setInView] = useS3(false); const [playing, setPlaying] = useS3(false); const [current, setCurrent] = useS3(0); useE3(() => { const io = new IntersectionObserver(([e]) => e.isIntersecting && setInView(true), { threshold: 0.15 }); if (ref.current) io.observe(ref.current); return () => io.disconnect(); }, []); const ep = t.podcast.episodes[current]; return (
{/* decorative circle */}
{t.podcast.eyebrow}

{t.podcast.title1} {t.podcast.title2}.

{t.podcast.available}
{[ { name: 'Spotify', url: 'https://open.spotify.com/show/06IFnuG3RIpVc34QUu3BSG' }, { name: 'Apple', url: '#' }, { name: 'YouTube', url: '#' }, ].map(p => ( {p.name} ))}
{/* Main player card */}
{/* Cover */}
{[ { c: '#f4a8b8', x: 30, y: 45, s: 55 }, { c: '#f06b8f', x: 55, y: 35, s: 55 }, { c: '#e85a5a', x: 52, y: 62, s: 55 }, ].map((d, i) => (
))}
EP. {String(current + 1).padStart(2, '0')} / {String(t.podcast.episodes.length).padStart(2, '0')}
{ep.title}
w/ {ep.guest} · {ep.length}
{/* Player body */}
{t.podcast.featured} · {ep.date}

{ep.title}

{ep.desc}

{/* Waveform + controls */}
00:42 {ep.length}
{/* Episode list */}
{t.podcast.allEpisodes} {t.podcast.viewAll} →
{t.podcast.episodes.map((e, i) => ( ))}
); } window.Podcast = Podcast;