import React from 'react'
import { getConfig } from '../config'
import { ThemeName } from '../types'
import { Theme } from './Theme'
let defaultFontClass = ''
/**
* Applies default font class and CSS variable inheritance via display:contents.
* Used by TamaguiProvider at the root and by portals to re-establish font scope.
* Pass trackMount to also handle the t_unmounted class for CSS animation gating.
*/
export function TamaguiRoot({
children,
theme,
isRootRoot,
passThrough,
style,
}: {
children: React.ReactNode
theme: ThemeName
isRootRoot?: boolean
passThrough?: boolean
style?: React.CSSProperties
}) {
const [mounted, setMounted] = React.useState(!isRootRoot)
React.useEffect(() => {
if (!mounted) {
setMounted(true)
}
}, [])
// cache the font class name
if (!defaultFontClass) {
const config = getConfig()
const defaultFont = config.defaultFont
if (defaultFont) {
defaultFontClass = `font_${defaultFont}`
}
}
const contents = (
{children}
)
// at root, ThemeProvider already applied theme - skip re-wrapping
// for portals/modals, we re-thread the theme so each root gets the right className setup
if (isRootRoot) {
return contents
}
return (
{contents}
)
}