import { useTranslation } from "~/hooks/useTranslation"; import { Theme, useTheme } from "~/modules/theme"; import { Button } from "../Button"; import { MoonIcon } from "../icons/Moon"; import { SunIcon } from "../icons/Sun"; import { SunAndMoonIcon } from "../icons/SunAndMoon"; import { Popover } from "../Popover"; import { SelectedThemeIcon } from "./SelectedThemeIcon"; const ThemeIcons = { [Theme.LIGHT]: SunIcon, [Theme.DARK]: MoonIcon, auto: SunAndMoonIcon, }; export function ThemeChanger({ children, plain, }: { children?: React.ReactNode; plain?: boolean; }) { const { userTheme, setUserTheme } = useTheme(); const { t } = useTranslation(); if (!userTheme) { return null; } return ( } triggerClassName={plain ? undefined : "layout__header__button"} >
{(["auto", Theme.DARK, Theme.LIGHT] as const).map((theme) => { const Icon = ThemeIcons[theme]; const selected = userTheme === theme; return ( ); })}
); }