import React from 'react' import type { UnistylesThemes } from '../global' import { UnistylesRuntime, UnistylesShadowRegistry } from '../specs' import { AdaptiveTheme } from './AdaptiveTheme' import { NamedTheme } from './NamedTheme' type ThemeProps = { name: keyof UnistylesThemes, invertedAdaptive?: never reset?: never } | { name?: never, invertedAdaptive: boolean, reset?: never } | { name?: never, invertedAdaptive?: never, reset: boolean } export const ScopedTheme: React.FunctionComponent> = ({ name, children, invertedAdaptive, reset }) => { const hasAdaptiveThemes = UnistylesRuntime.hasAdaptiveThemes const isAdaptiveTheme = invertedAdaptive && hasAdaptiveThemes const previousScopedTheme = UnistylesShadowRegistry.getScopedTheme() switch (true) { case name !== undefined: return ( {children} ) case isAdaptiveTheme: return ( {children} ) case reset: return ( {children} ) default: return children } }