import React from 'react'; import { useTranslation } from 'react-i18next'; import { CheckSquare2, Plus, Trash2 } from 'lucide-react'; import type { SubsonicPlaylist } from '../../api/subsonicTypes'; import { defaultSmartFilters, type SmartFilters, } from '../../utils/playlistsSmart'; interface Props { selectionMode: boolean; selectedIds: Set; selectedPlaylists: SubsonicPlaylist[]; isPlaylistDeletable: (pl: SubsonicPlaylist) => boolean; toggleSelectionMode: () => void; handleDeleteSelected: () => void; creating: boolean; setCreating: React.Dispatch>; setCreatingSmart: React.Dispatch>; newName: string; setNewName: React.Dispatch>; nameInputRef: React.RefObject; handleCreate: () => Promise; isNavidromeServer: boolean; setEditingSmartId: React.Dispatch>; setSmartFilters: React.Dispatch>; setGenreQuery: React.Dispatch>; } export default function PlaylistsHeader({ selectionMode, selectedIds, selectedPlaylists, isPlaylistDeletable, toggleSelectionMode, handleDeleteSelected, creating, setCreating, setCreatingSmart, newName, setNewName, nameInputRef, handleCreate, isNavidromeServer, setEditingSmartId, setSmartFilters, setGenreQuery, }: Props) { const { t } = useTranslation(); return (

{selectionMode && selectedIds.size > 0 ? t('playlists.selectionCount', { count: selectedIds.size }) : t('playlists.title')}

{!(selectionMode && selectedIds.size > 0) && (<> {creating ? ( <> setNewName(e.target.value)} onKeyDown={(e) => { if (e.key === 'Enter') handleCreate(); if (e.key === 'Escape') { setCreating(false); setNewName(''); } }} /> ) : ( )} {!creating && isNavidromeServer && ( )} )} {selectionMode && selectedIds.size > 0 && (() => { const deletableCount = selectedPlaylists.filter(isPlaylistDeletable).length; return ( ); })()}
); }