"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 ( ) }, )