import React, { ElementType, FC, HTMLAttributes, MouseEvent } from 'react';
import classNames from 'classnames';
import { Icon } from '../Icon/Icon';
export interface BottomNavItemProps extends HTMLAttributes {
/** Utilizzarlo in caso di utilizzo di componenti personalizzati */
tag?: ElementType;
/** Classi aggiuntive da usare per il componente BottomNavItem */
className?: string;
/** Quando abilitato mostra l'elemento come attivo */
active?: boolean;
/** Indica l'URL a cui puntare (utilizzare o questo o onClick) */
url?: string;
/** Indica il link route a cui l'elemento deve puntare. */
to?: string;
/** Etichetta da associare all'elemento */
label?: string;
/** Testo esplicativo per dispositivi screen reader. */
srText?: string;
/** Icona da utilizzare per l'elemento */
iconName?: string;
/** Quando abilitato indica una sezione che richiede attenzione o presenta nuovi contenuti */
alert?: boolean;
/** Visualizza dei badge con indicazioni numeriche in alto a destra dell'icona */
badge?: number;
/** Da utilizzare al posto di url quando la gestione del click รจ in JS */
onLinkClick?: (event: MouseEvent) => void;
/**
* Indica l'URL a cui far puntare il componente BottomNavItem.
* @deprecated. Usare `url` o `onLinkClick`
* */
link?: string;
testId?: string;
}
export const BottomNavItem: FC = ({
active = false,
badge,
alert = false,
url,
to,
srText,
iconName = 'it-comment',
label,
tag = 'a',
onLinkClick,
link,
testId,
...attributes
}) => {
const Tag = tag;
const activeClass = classNames({ active });
const badgeWrapper = Boolean(badge) && (
{badge}
);
const alertWrapper = Boolean(alert) && (
);
return (
{badgeWrapper}
{alertWrapper}
{label}
{srText ? {srText} : null}
);
};