UNPKG

@furystack/shades

Version:

A lightweight UI framework for FuryStack with JSX support

18 lines (15 loc) 649 B
import type { ChildrenList } from './children-list.js' /** * Callable that produces a JSX element from props (and optional children). * Both `Shade(...)` factories and plain functional components conform to * this shape. */ export type ShadeComponent<TProps = object> = (arg: TProps, children?: ChildrenList) => JSX.Element /** * Discriminates {@link ShadeComponent} from intrinsic-element tag names. * Intentionally permissive — any function is treated as a component since * VNodes carry no other discriminator. */ export const isShadeComponent = <T = any>(obj: any): obj is ShadeComponent<T> => { return typeof obj === 'function' }