"use client" import * as React from "react" import Script from "next/script" import { useTheme } from "next-themes" import { useMetaColor } from "@/hooks/use-meta-color" import { Button } from "@/registry/new-york-v4/ui/button" import { Kbd } from "@/registry/new-york-v4/ui/kbd" import { Tooltip, TooltipContent, TooltipTrigger, } from "@/registry/new-york-v4/ui/tooltip" export const DARK_MODE_FORWARD_TYPE = "dark-mode-forward" export function ModeSwitcher() { const { setTheme, resolvedTheme } = useTheme() const { setMetaColor, metaColor } = useMetaColor() React.useEffect(() => { setMetaColor(metaColor) }, [metaColor, setMetaColor]) const toggleTheme = React.useCallback(() => { setTheme(resolvedTheme === "dark" ? "light" : "dark") }, [resolvedTheme, setTheme]) React.useEffect(() => { const down = (e: KeyboardEvent) => { if ( (e.key === "d" || e.key === "D") && !e.metaKey && !e.ctrlKey && !e.altKey ) { if ( (e.target instanceof HTMLElement && e.target.isContentEditable) || e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLSelectElement ) { return } e.preventDefault() toggleTheme() } } document.addEventListener("keydown", down) return () => document.removeEventListener("keydown", down) }, [toggleTheme]) return ( Toggle Mode D ) } export function DarkModeScript() { return (