import { useCallback } from "react"; import { useTranslation } from "react-i18next"; import { Menu } from "@/components/player/internals/ContextMenu"; import { useOverlayRouter } from "@/hooks/useOverlayRouter"; import { usePreviewThemeStore, useThemeStore } from "@/stores/theme"; import { SelectableLink } from "../../internals/ContextMenu/Links"; const availableThemes = [ { id: "default", selector: "theme-default", key: "settings.appearance.themes.default", }, { id: "classic", selector: "theme-classic", key: "settings.appearance.themes.classic", }, { id: "blue", selector: "theme-blue", key: "settings.appearance.themes.blue", }, { id: "teal", selector: "theme-teal", key: "settings.appearance.themes.teal", }, { id: "red", selector: "theme-red", key: "settings.appearance.themes.red", }, { id: "gray", selector: "theme-gray", key: "settings.appearance.themes.gray", }, { id: "green", selector: "theme-green", key: "settings.appearance.themes.green", }, { id: "forest", selector: "theme-forest", key: "settings.appearance.themes.forest", }, { id: "mocha", selector: "theme-mocha", key: "settings.appearance.themes.mocha", }, { id: "pink", selector: "theme-pink", key: "settings.appearance.themes.pink", }, { id: "noir", selector: "theme-noir", key: "settings.appearance.themes.noir", }, { id: "ember", selector: "theme-ember", key: "settings.appearance.themes.ember", }, { id: "acid", selector: "theme-acid", key: "settings.appearance.themes.acid", }, { id: "spark", selector: "theme-spark", key: "settings.appearance.themes.spark", }, { id: "grape", selector: "theme-grape", key: "settings.appearance.themes.grape", }, { id: "spiderman", selector: "theme-spiderman", key: "settings.appearance.themes.spiderman", }, { id: "wolverine", selector: "theme-wolverine", key: "settings.appearance.themes.wolverine", }, { id: "hulk", selector: "theme-hulk", key: "settings.appearance.themes.hulk", }, { id: "popsicle", selector: "theme-popsicle", key: "settings.appearance.themes.popsicle", }, ]; export function ThemeView({ id }: { id: string }) { const { t } = useTranslation(); const router = useOverlayRouter(id); const activeTheme = useThemeStore((s) => s.theme); const setTheme = useThemeStore((s) => s.setTheme); const setPreviewTheme = usePreviewThemeStore((s) => s.setPreviewTheme); const handleThemeChange = useCallback( (themeId: string) => { const newTheme = themeId === "default" ? null : themeId; setTheme(newTheme); setPreviewTheme(themeId); router.close(); }, [setTheme, setPreviewTheme, router], ); return ( <>