import type { JSX, Signal } from 'solid-js'; import type { OmitAndMerge } from './types'; export type ValidElements = keyof JSX.IntrinsicElements; export type ValidComponent

= (props: P) => JSX.Element; export type ValidConstructor = ValidElements | ValidComponent | (string & {}); export type DynamicProps = T extends ValidElements ? JSX.IntrinsicElements[T] : T extends ValidComponent ? U : Record; type UnboxIntrinsicElements = T extends JSX.HTMLAttributes ? U : never; type RefCallback = (el: T) => void; type RefField = T | RefCallback; type UnboxComponentProp = U extends { ref: infer X; } ? X : never; export type DynamicNode = T extends ValidElements ? UnboxIntrinsicElements : T extends ValidComponent ? UnboxComponentProp : never; export interface WithRef { ref?: RefField>; } export interface DynamicComponent { as?: T; } export interface DynamicComponentWithRef extends WithRef { as?: T; } export type HeadlessProps = OmitAndMerge, DynamicProps>; export type HeadlessPropsWithRef = OmitAndMerge, DynamicProps>; export declare function createForwardRef(props: WithRef): Signal | undefined>; export {}; //# sourceMappingURL=dynamic-prop.d.ts.map