import { useEffect } from 'react' interface HelpPopupProps { isOpen: boolean onClose: () => void } export default function HelpPopup({ isOpen, onClose }: HelpPopupProps) { useEffect(() => { const handleEscape = (event: KeyboardEvent) => { if (event.key === 'Escape') { onClose() } } if (isOpen) { document.addEventListener('keydown', handleEscape) return () => document.removeEventListener('keydown', handleEscape) } }, [isOpen, onClose]) if (!isOpen) return null return (
e.stopPropagation()} >

About CoolSoup

CoolSoup generates visual patterns and converts them to audio through spectral/additive synthesis. Create images using mathematical expressions, waveforms, geometric patterns, or upload your own photos, then transform them into sound by treating the image as a spectrogram.

Created by{' '} Raphaël Forment {' • License: AGPL-3.0'}

) }