import { ActionIcon, type ComboboxItem, Group, Menu, Select, Stack, Text, Tooltip, } from '@mantine/core'; import { useCommonHooks, useQueryAPI } from 'hooks'; import { useEffect, useState } from 'react'; import { FaDice } from 'react-icons/fa'; import { FiShuffle } from 'react-icons/fi'; import { actionIconClasses, selectClasses, stackClasses } from 'styles'; import type { Theme, ThemePlaylist } from 'types'; function ThemingCard() { const { data: themePlaylistData } = useQueryAPI({ endpoint: 'api/themePlaylists', }); const { data: allThemeData, isFetched: allThemeDataIsFetched } = useQueryAPI({ endpoint: 'api/themes', }); const [allThemes, setAllThemes] = useState([]); useEffect(() => { if (allThemeData && allThemeDataIsFetched) { setAllThemes(allThemeData); } }, [allThemeData, allThemeDataIsFetched]); const { isMobile, currentTheme, setCurrentTheme, setThemeName, handleThemeChange, theme, currentThemePlaylist, setCurrentThemePlaylist, } = useCommonHooks(); return ( Themes { setCurrentTheme(currentTheme === 'random' ? theme.name : 'random'); setCurrentThemePlaylist('All'); }} > { const themeList = JSON.parse( themePlaylistData?.find( (t: ThemePlaylist) => t?.name === currentThemePlaylist, )?.themeList ?? '[]', ); if (themeList.length > 0) { const filteredThemes = allThemes.filter((t: Theme) => themeList.includes(t.id), ); handleThemeChange(filteredThemes, false); } else if (currentThemePlaylist === 'All') { handleThemeChange(allThemes, true); } else if (currentThemePlaylist === 'Backgrounds') { handleThemeChange( allThemes.filter( (a: any) => !a.backgroundImage.toLowerCase().includes('none'), ), false, ); } else if (currentThemePlaylist === 'No Backgrounds') { handleThemeChange( allThemes.filter((a: any) => a.backgroundImage.toLowerCase().includes('none'), ), false, ); } }} > Currently:{' '} {theme.name} Playlist:{' '}