/* eslint-disable @typescript-eslint/no-empty-object-type */ /* eslint-disable prettier/prettier */ /* eslint-disable no-unused-vars */ "use client"; import type { IconButtonProps, SpanProps } from "@chakra-ui/react"; import { ClientOnly, IconButton, Skeleton, Span } from "@chakra-ui/react"; import { ThemeProvider, useTheme } from "next-themes"; import type { ThemeProviderProps } from "next-themes"; import * as React from "react"; import { LuMoon, LuSun } from "react-icons/lu"; export interface ColorModeProviderProps extends ThemeProviderProps {} export function ColorModeProvider(props: ColorModeProviderProps) { return ( ); } export type ColorMode = "light" | "dark"; export interface UseColorModeReturn { colorMode: ColorMode; setColorMode: (colorMode: ColorMode) => void; toggleColorMode: () => void; } export function useColorMode(): UseColorModeReturn { const { resolvedTheme, setTheme, forcedTheme } = useTheme(); const colorMode = forcedTheme || resolvedTheme; const toggleColorMode = () => { setTheme(resolvedTheme === "dark" ? "light" : "dark"); }; return { colorMode: colorMode as ColorMode, setColorMode: setTheme, toggleColorMode }; } export function useColorModeValue(light: T, dark: T) { const { colorMode } = useColorMode(); return colorMode === "dark" ? dark : light; } export function ColorModeIcon() { const { colorMode } = useColorMode(); return colorMode === "dark" ? : ; } interface ColorModeButtonProps extends Omit {} export const ColorModeButton = React.forwardRef< HTMLButtonElement, ColorModeButtonProps >(function ColorModeButton(props, ref) { const { toggleColorMode } = useColorMode(); return ( }> ); }); export const LightMode = React.forwardRef( function LightMode(props, ref) { return ( ); } ); export const DarkMode = React.forwardRef( function DarkMode(props, ref) { return ( ); } );