/* eslint-disable */ import type { Component, FunctionalComponent, NativeElements } from 'vue' import type { RecipeDefinition, RecipeSelection, RecipeVariantRecord } from './recipe'; import type { Assign, DistributiveOmit, DistributiveUnion, JsxHTMLProps, JsxStyleProps, Pretty } from './system-types'; export type IntrinsicElement = keyof NativeElements export type ElementType = IntrinsicElement | Component export type ComponentProps = T extends IntrinsicElement ? NativeElements[T] : T extends Component ? Props : never interface Dict { [k: string]: unknown } export type DataAttrs = Record<`data-${string}`, unknown> export interface UnstyledProps { /** * Whether to remove recipe styles */ unstyled?: boolean | undefined } export interface AsProps { /** * The element to render as */ as?: ElementType | undefined } export interface PixelComponent extends FunctionalComponent< JsxHTMLProps & UnstyledProps & AsProps, Assign> > {} interface RecipeFn { __type: any } export interface JsxFactoryOptions { dataAttr?: boolean defaultProps?: Partial & DataAttrs shouldForwardProp?: (prop: string, variantKeys: string[]) => boolean forwardProps?: string[] } export type JsxRecipeProps = JsxHTMLProps & UnstyledProps & AsProps, Assign>; export type JsxElement = T extends PixelComponent ? PixelComponent>> : PixelComponent export interface JsxFactory { (component: T): PixelComponent (component: T, recipe: RecipeDefinition

, options?: JsxFactoryOptions>>): JsxElement< T, RecipeSelection

> (component: T, recipeFn: P, options?: JsxFactoryOptions> ): JsxElement } export type JsxElements = { [K in IntrinsicElement]: PixelComponent } export type Pixel = JsxFactory & JsxElements export type HTMLPixelProps = JsxHTMLProps & UnstyledProps & AsProps, JsxStyleProps> export type PixelVariantProps> = T extends PixelComponent ? Props : never