import { useState } from 'react'; import { AnimatePresence, motion } from 'framer-motion'; interface Experience { id: string; company: string; logo?: string; role: string; period: string; duration: string; description: string; missions: string[]; stack: string[]; type: string; current?: boolean; } interface Props { items: Experience[]; } function WaveformBar({ level }: { level: number }) { // ASCII-like progress bar with blocks const total = 12; const filled = Math.round(level * total); return ( ); } export default function Setlist({ items }: Props) { const [open, setOpen] = useState(items[0]?.id ?? null); return (
{items.map((exp, i) => { const isOpen = open === exp.id; const bpm = exp.current ? 174 : 160 - i * 10; const level = exp.current ? 1 : Math.max(0.2, 1 - i * 0.15); return (
{isOpen && (
{exp.logo && (
{exp.company}
)}
[type: {exp.type}]
[duration: {exp.duration}]

{exp.description}

{exp.missions.length > 0 && (
    {exp.missions.map((m, idx) => (
  • {m}
  • ))}
)} {exp.stack.length > 0 && (
{exp.stack.map((tech) => ( {tech} ))}
)}
)}
); })}
); }