Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import React, { createContext, useContext, type ReactNode, type JSX } from "react"; import { useTheme, type UseThemeResult } from "../hooks/useTheme.js"; const ThemeContext: React.Context<UseThemeResult | undefined> = createContext< UseThemeResult | undefined >(undefined); /** Provides theme state to the component tree. */ export function ThemeProvider({ children }: { children: ReactNode }): JSX.Element { const themeState = useTheme(); return <ThemeContext.Provider value={themeState}>{children}</ThemeContext.Provider>; } /** Consumes the theme context; must be called within a ThemeProvider. */ export function useThemeContext(): UseThemeResult { const ctx = useContext(ThemeContext); if (!ctx) { throw new Error("useThemeContext must be used within ThemeProvider"); } return ctx; } |