import type React from 'react' const clientRefSymbol = Symbol.for('react.client.reference') export function isReactServerComponentOrFunction( component: React.ComponentType | any, ): component is T { if (component === null || component === undefined) { return false } const hasClientComponentSymbol = component.$$typeof == clientRefSymbol const isFunctionalComponent = typeof component === 'function' // Anonymous functions are Client Components in Turbopack. RSCs should have a name const isAnonymousFunction = typeof component === 'function' && component.name === '' const isRSC = isFunctionalComponent && !isAnonymousFunction && !hasClientComponentSymbol return isRSC } export function isReactClientComponent( component: React.ComponentType | any, ): component is T { if (component === null || component === undefined) { return false } return !isReactServerComponentOrFunction(component) && component.$$typeof == clientRefSymbol } export function isReactComponentOrFunction( component: React.ComponentType | any, ): component is T { return isReactServerComponentOrFunction(component) || isReactClientComponent(component) }