This component no longer exists. It was in ondo-ui’s manifest when we first indexed it and is not there now — the registry served its inventory on 2026-08-09 and this item was not on it. The install command below will fail. It is kept here because a tutorial somewhere still tells people to run it.
theme-provider
ondo-ui/theme-providerRemovedComponent
Theme provider built on next-themes with system preference support and a D hotkey to toggle dark mode.
Install it
npx shadcn@latest add https://ui.ondo.dou.so/r/theme-provider.jsonSource
1"use client"23import * as React from "react"4import { ThemeProvider as NextThemesProvider, useTheme } from "next-themes"56function ThemeProvider({7 children,8 ...props9}: React.ComponentProps<typeof NextThemesProvider>) {10 return (11 <NextThemesProvider12 attribute="class"13 defaultTheme="system"14 enableSystem15 disableTransitionOnChange16 {...props}17 >18 <ThemeHotkey />19 {children}20 </NextThemesProvider>21 )22}2324function isTypingTarget(target: EventTarget | null) {25 if (!(target instanceof HTMLElement)) {26 return false27 }2829 return (30 target.isContentEditable ||31 target.tagName === "INPUT" ||32 target.tagName === "TEXTAREA" ||33 target.tagName === "SELECT"34 )35}3637function ThemeHotkey() {38 const { resolvedTheme, setTheme } = useTheme()3940 React.useEffect(() => {41 function onKeyDown(event: KeyboardEvent) {42 if (event.defaultPrevented || event.repeat) {43 return44 }4546 if (event.metaKey || event.ctrlKey || event.altKey) {47 return48 }4950 if (event.key.toLowerCase() !== "d") {51 return52 }5354 if (isTypingTarget(event.target)) {55 return56 }5758 setTheme(resolvedTheme === "dark" ? "light" : "dark")59 }6061 window.addEventListener("keydown", onKeyDown)6263 return () => {64 window.removeEventListener("keydown", onKeyDown)65 }66 }, [resolvedTheme, setTheme])6768 return null69}7071export { ThemeProvider }
What it pulls in
npm packages
