import { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Shuffle, Star } from 'lucide-react'; import { useAuthStore } from '../../store/authStore'; import { MIX_MIN_RATING_FILTER_MAX_STARS } from '../../store/authStoreDefaults'; import SettingsSubSection from '../SettingsSubSection'; import { SettingsGroup } from './SettingsGroup'; import { SettingsToggle } from './SettingsToggle'; import StarRating from '../StarRating'; import AnalyticsStrategySection from './AnalyticsStrategySection'; const AUDIOBOOK_GENRES_DISPLAY = ['Hörbuch', 'Hoerbuch', 'Hörspiel', 'Hoerspiel', 'Audiobook', 'Audio Book', 'Spoken Word', 'Spokenword', 'Podcast', 'Kapitel', 'Thriller', 'Krimi', 'Speech', 'Fantasy', 'Comedy', 'Literature']; export function LibraryTab() { const { t } = useTranslation(); const [newGenre, setNewGenre] = useState(''); const auth = useAuthStore(); return ( <> {/* Random Mix Blacklist */} } >

{t('settings.randomMixBlacklistDesc')}

{t('settings.randomMixBlacklistTitle')}
{auth.customGenreBlacklist.length === 0 ? ( {t('settings.randomMixBlacklistEmpty')} ) : ( auth.customGenreBlacklist.map(genre => ( {genre} )) )}
setNewGenre(e.target.value)} onKeyDown={e => { if (e.key === 'Enter' && newGenre.trim()) { const trimmed = newGenre.trim(); if (!auth.customGenreBlacklist.includes(trimmed)) { auth.setCustomGenreBlacklist([...auth.customGenreBlacklist, trimmed]); } setNewGenre(''); } }} placeholder={t('settings.randomMixBlacklistPlaceholder')} style={{ fontSize: 13 }} />
{t('settings.randomMixHardcodedTitle')}
{AUDIOBOOK_GENRES_DISPLAY.map(genre => ( {genre} ))}
{/* Ratings */} } >
{t('settings.ratingsSkipStarTitle')}
{t('settings.ratingsSkipStarDesc')}
{auth.skipStarOnManualSkipsEnabled && ( <> auth.setSkipStarManualSkipThreshold(Number(e.target.value))} style={{ width: 72, padding: '6px 10px', fontSize: 13 }} aria-label={t('settings.ratingsSkipStarThresholdLabel')} /> )}
{auth.mixMinRatingFilterEnabled && ( <>
{([ { key: 'song', label: t('settings.ratingsMixMinSong'), value: auth.mixMinRatingSong, set: auth.setMixMinRatingSong }, { key: 'album', label: t('settings.ratingsMixMinAlbum'), value: auth.mixMinRatingAlbum, set: auth.setMixMinRatingAlbum }, { key: 'artist', label: t('settings.ratingsMixMinArtist'), value: auth.mixMinRatingArtist, set: auth.setMixMinRatingArtist }, ] as const).map(row => (
{row.label}
))}
)}
); }