import React, { ReactNode, ElementType } from 'react'; import { IComponentBaseProps, ComponentColor, ComponentShape, ComponentSize } from '../types'; type ITagProps = { a: { attr: React.AnchorHTMLAttributes; ele: HTMLAnchorElement; }; button: { attr: React.ButtonHTMLAttributes; ele: HTMLButtonElement; }; div: { attr: React.HTMLAttributes; ele: HTMLDivElement; }; img: { attr: React.ImgHTMLAttributes; ele: HTMLImageElement; }; input: { attr: React.InputHTMLAttributes; ele: HTMLInputElement; }; label: { attr: React.LabelHTMLAttributes; ele: HTMLLabelElement; }; span: { attr: React.HTMLAttributes; ele: HTMLSpanElement; }; }; type GetTagProps = T extends keyof ITagProps ? ITagProps[T] : ITagProps['button']; export type ButtonProps = GetTagProps['attr']> = Omit & IComponentBaseProps & { shape?: ComponentShape; size?: ComponentSize; variant?: 'outline' | 'link'; color?: ComponentColor; glass?: boolean; wide?: boolean; fullWidth?: boolean; responsive?: boolean; animation?: boolean; loading?: boolean; active?: boolean; startIcon?: ReactNode; endIcon?: ReactNode; disabled?: boolean; tag?: T; }; declare const _default: = "button", E extends HTMLElement = GetTagProps["ele"], A extends React.HTMLAttributes = GetTagProps["attr"]>(props: Omit & IComponentBaseProps & { shape?: "circle" | "square" | undefined; size?: "lg" | "md" | "sm" | "xs" | undefined; variant?: "link" | "outline" | undefined; color?: "neutral" | "primary" | "secondary" | "accent" | "ghost" | "info" | "success" | "warning" | "error" | undefined; glass?: boolean | undefined; wide?: boolean | undefined; fullWidth?: boolean | undefined; responsive?: boolean | undefined; animation?: boolean | undefined; loading?: boolean | undefined; active?: boolean | undefined; startIcon?: React.ReactNode; endIcon?: React.ReactNode; disabled?: boolean | undefined; tag?: T | undefined; } & { ref?: React.Ref | undefined; }) => JSX.Element; export default _default;