UNPKG

raft-ui

Version:

React UI components for Raft.

37 lines (36 loc) 1.38 kB
import { cn } from "./cn.mjs"; import { createContext, use } from "react"; //#region src/lib/theme/theme-context.ts const ThemeContext = createContext("brutal"); const ThemeStateContext = createContext({ theme: "brutal", setTheme: () => void 0, mode: "light", resolvedMode: "light" }); //#endregion //#region src/lib/theme/use-theme.ts /** Read the active style family for theme-aware component recipes. */ function useThemeFamily() { return use(ThemeContext); } /** Read and update the application-level RUI theme selection. */ function useTheme() { return use(ThemeStateContext); } //#endregion //#region src/lib/theme/theme-scope.ts function resolveThemeScopeProps({ className, "data-theme": _dataTheme, ...props }, { theme, resolvedMode }) { const modeClassName = theme === "elegant" ? resolvedMode : void 0; const resolvedClassName = typeof className === "function" && modeClassName ? (state) => cn(className(state), modeClassName) : typeof className === "string" && modeClassName ? cn(className, modeClassName) : className ?? modeClassName; return { ...props, "data-theme": theme, className: resolvedClassName }; } function useThemeScopeProps(props) { return resolveThemeScopeProps(props, useTheme()); } //#endregion export { ThemeContext as a, useThemeFamily as i, useThemeScopeProps as n, ThemeStateContext as o, useTheme as r, resolveThemeScopeProps as t };