import { useTranslation } from 'react-i18next'; import { RiAddBoxFill, RiAddCircleFill, RiMoreFill, RiPlayFill } from 'react-icons/ri'; import { QueueSong } from '/@/renderer/api/types'; import { Button, DropdownMenu, PageHeader, Paper, SpinnerIcon } from '/@/renderer/components'; import { usePlayQueueAdd } from '/@/renderer/features/player'; import { LibraryHeaderBar } from '/@/renderer/features/shared'; import { usePlayButtonBehavior } from '/@/renderer/store/settings.store'; import { Play } from '/@/renderer/types'; interface AlbumArtistDetailTopSongsListHeaderProps { data: QueueSong[]; itemCount?: number; title: string; } export const AlbumArtistDetailTopSongsListHeader = ({ data, itemCount, title, }: AlbumArtistDetailTopSongsListHeaderProps) => { const { t } = useTranslation(); const handlePlayQueueAdd = usePlayQueueAdd(); const playButtonBehavior = usePlayButtonBehavior(); const handlePlay = async (playType: Play) => { handlePlayQueueAdd?.({ byData: data, playType, }); }; return ( handlePlay(playButtonBehavior)} /> {t('page.albumArtistDetail.topSongsFrom', { title })} {itemCount === null || itemCount === undefined ? : itemCount} } onClick={() => handlePlay(Play.NOW)} > {t('player.play', { postProcess: 'sentenceCase' })} } onClick={() => handlePlay(Play.LAST)} > {t('player.addLast', { postProcess: 'sentenceCase' })} } onClick={() => handlePlay(Play.NEXT)} > {t('player.addNext', { postProcess: 'sentenceCase' })} ); };