"use client"; import clsx from "clsx"; import type { ChangeEventHandler, FunctionComponent, PropsWithChildren, } from "react"; import Cookies from "js-cookie"; import React, { useContext, useState, createContext } from "react"; import { DEFAULT_THEME, Theme, THEME_COOKIE_NAME } from "./theme"; const ThemeContext = createContext(null); export function useTheme(): Theme { return useContext(ThemeContext); } interface Props extends PropsWithChildren { defaultTheme: Theme; } const ThemeClientContextProvider: FunctionComponent = ({ defaultTheme, children, }) => { const [theme, setTheme] = useState(defaultTheme); const onChange: ChangeEventHandler = (e) => { const value = e.target.value as Theme; setTheme(value); if (value === DEFAULT_THEME) { Cookies.remove(THEME_COOKIE_NAME); } else { Cookies.set(THEME_COOKIE_NAME, value); } }; const onReset = () => { setTheme(DEFAULT_THEME); Cookies.remove(THEME_COOKIE_NAME); }; return (

Theme Switcher

{children}
); }; export default ThemeClientContextProvider;