import React, { FC, ButtonHTMLAttributes, ElementType, Ref } from 'react';
import classNames from 'classnames';
import { Button as ButtonBase } from 'reactstrap';
import { CSSModule } from 'reactstrap/types/lib/utils';
// reactstrap wrapper
export interface ButtonProps extends ButtonHTMLAttributes {
/** Quando abilitato, estende il componente Button fino a prendere tutta la larghezza disponibile */
block?: boolean;
/** Utilizzarlo disabilitare il colore di sfondo, ed applicarlo invece al bordo. */
outline?: boolean;
/** Utilizzarlo in caso di componenti personalizzati */
tag?: ElementType;
/** Classi aggiuntive da usare per il componente Button */
className?: string;
/** Oggetto contenente la nuova mappatura per le classi CSS. */
cssModule?: CSSModule;
innerRef?: Ref;
/** Da utilizzare si usa una icona nel contenuto del Button */
icon?: boolean;
/** Da utilizzare per le varianti di dimensione del componente Button */
size?: 'lg' | 'sm' | 'xs';
/** Da utilizzare per i bottoni di chiusura all'interno di altri componenti (i.e. Chips, Modali, etc...) */
close?: boolean;
active?: boolean;
href?: string;
testId?: string;
}
export const Button: FC = ({
tag = 'button',
icon = false,
color = '',
className,
testId,
...attributes
}) => {
const classes = classNames(className, {
'btn-icon': icon
});
const ariaAttributes = {
...(attributes.disabled && { 'aria-disabled': true })
};
const baseProps = { color, tag };
return ;
};