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 } }