diff --git a/apps/v4/components/mode-switcher.tsx b/apps/v4/components/mode-switcher.tsx
index 1cd845d0d9..d287df42ea 100644
--- a/apps/v4/components/mode-switcher.tsx
+++ b/apps/v4/components/mode-switcher.tsx
@@ -34,32 +34,6 @@ export function ModeSwitcher({
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 (
diff --git a/apps/v4/components/theme-provider.tsx b/apps/v4/components/theme-provider.tsx
index 27a68f9795..ea24e06fa7 100644
--- a/apps/v4/components/theme-provider.tsx
+++ b/apps/v4/components/theme-provider.tsx
@@ -1,7 +1,39 @@
"use client"
import * as React from "react"
-import { ThemeProvider as NextThemesProvider } from "next-themes"
+import { ThemeProvider as NextThemesProvider, useTheme } from "next-themes"
+
+function ThemeShortcut() {
+ const { setTheme, resolvedTheme } = useTheme()
+
+ 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()
+ setTheme(resolvedTheme === "dark" ? "light" : "dark")
+ }
+ }
+
+ document.addEventListener("keydown", down)
+ return () => document.removeEventListener("keydown", down)
+ }, [resolvedTheme, setTheme])
+
+ return null
+}
export function ThemeProvider({
children,
@@ -16,6 +48,7 @@ export function ThemeProvider({
enableColorScheme
{...props}
>
+
{children}
)