import { ScrollArea, IconButton, Badge } from 'modern-sk'; import { useAppDispatch, useAppSelector } from '../../hooks/useAppDispatch'; import { goToIndex, removeFromQueue, clearQueue } from '../../store/slices/queue'; import { toggleQueue } from '../../store/slices/player'; import { formatDuration } from '../../lib/format'; export function QueuePanel() { const dispatch = useAppDispatch(); const queue = useAppSelector((s) => s.queue); const isOpen = useAppSelector((s) => s.player.isQueueOpen); if (!isOpen) return null; return (
Queue
{queue.sourceName && {queue.sourceName}} dispatch(clearQueue())} aria-label="Clear queue">✕ dispatch(toggleQueue())} aria-label="Close">✕
{queue.entries.length === 0 ? (

Queue is empty

) : ( queue.entries.map((entry, i) => (
dispatch(goToIndex(i))} style={{ display: 'grid', gridTemplateColumns: '1fr auto', padding: '0.5rem 1rem', gap: '0.5rem', alignItems: 'center', background: i === queue.currentIndex ? 'var(--color-surface-2)' : undefined, cursor: 'default', }} >
{entry.title}
{entry.artistName}
{formatDuration(entry.durationMs)} dispatch(removeFromQueue(i))} aria-label="Remove from queue">✕
)) )}
); }