import * as React from 'react'; import { ComponentProps, ElementType, HTMLAttributes } from 'react'; import { BorderProps, IColorProps, IFlexProps, IInteractivityProps, ILayoutProps, IMarginProps, IPaddingProps, IPositionProps, IRingProps, IShadowProps, ISizeProps, ITypographyProps, TransformProps } from '../../enhancers'; declare type EnhancerProps = ITypographyProps & ISizeProps & IMarginProps & IPaddingProps & IShadowProps & IColorProps & BorderProps & IRingProps & IInteractivityProps & IFlexProps & IPositionProps & TransformProps & ILayoutProps; export declare type DatasetProps = Record<`data-${string}`, string>; /** * Generic component props with "as" prop * @template P Additional props * @template T React component or string element */ export declare type BoxOwnProps = EnhancerProps & DatasetProps & { /** * Replaces the underlying element */ as?: E; className?: string; role?: string; noFocusRing?: boolean; children?: React.ReactNode; }; /** * Box supports standard HTML attributes * Box re-defines some props like color, so omit here to prevent clash */ export interface IBoxHTMLAttributes extends Omit, 'color'> { } export declare type BoxProps = BoxOwnProps & Omit, keyof BoxOwnProps | keyof P>; export declare type PolymorphicComponentProps = P & BoxProps; export declare type PolymorphicComponent = (props: PolymorphicComponentProps) => JSX.Element; export {};