import type { MantineThemeComponent } from '../MantineProvider'; import type { ClassNames, PartialVarsResolver, Styles, VarsResolver } from '../styles-api'; export type DataAttributes = Record<`data-${string}`, any>; export interface FactoryPayload { props: Record; ctx?: any; ref?: any; stylesNames?: string; vars?: any; variant?: string; staticComponents?: Record; compound?: boolean; signature?: any; } export interface ExtendCompoundComponent { defaultProps?: Partial & DataAttributes; } export interface ExtendsRootComponent { defaultProps?: Partial & DataAttributes & { component?: any; }; classNames?: ClassNames; styles?: Styles; vars?: PartialVarsResolver; } export type ExtendComponent = Payload['compound'] extends true ? ExtendCompoundComponent : ExtendsRootComponent; export type StaticComponents = Input extends Record ? Input : Record; export interface ThemeExtend { extend: (input: ExtendComponent) => MantineThemeComponent; } export type ComponentClasses = { classes: Payload['stylesNames'] extends string ? Record : never; }; export type MantineComponentStaticProperties = ThemeExtend & ComponentClasses & StaticComponents & ComponentVariablesResolver & FactoryComponentWithProps; export interface PlaceholderPolymorphicProps { component?: any; renderRoot?: (props: Record) => React.ReactNode; } export type FactoryComponentWithProps = { withProps: (props: Partial) => React.NamedExoticComponent & PlaceholderPolymorphicProps>; }; export type ComponentVariablesResolver = Payload['vars'] extends Record ? { varsResolver: VarsResolver; } : {}; export type MantineComponent = React.NamedExoticComponent & { component?: any; renderRoot?: (props: Record) => React.ReactNode; }> & MantineComponentStaticProperties; export declare function identity(value: T): T; export declare function factory(ui: (props: Payload['props'] & { ref?: React.Ref; }) => React.ReactNode): MantineComponent; export declare function genericFactory(ui: Payload['signature']): Payload["signature"] & MantineComponentStaticProperties & { displayName?: string; };