|
import { FC, forwardRef } from 'react'; |
|
import { cn } from '~/utils/'; |
|
|
|
interface Props { |
|
svg: () => JSX.Element; |
|
text: string; |
|
clickHandler?: () => void; |
|
className?: string; |
|
} |
|
|
|
const NavLink: FC<Props> = forwardRef<HTMLAnchorElement, Props>((props, ref) => { |
|
const { svg, text, clickHandler, className = '' } = props; |
|
const defaultProps: { |
|
className: string; |
|
onClick?: () => void; |
|
} = { |
|
className: cn( |
|
'flex cursor-pointer items-center gap-3 rounded-md py-3 px-3 text-sm text-white transition-colors duration-200 hover:bg-gray-500/10', |
|
className, |
|
), |
|
}; |
|
|
|
if (clickHandler) { |
|
defaultProps.onClick = clickHandler; |
|
} |
|
|
|
return ( |
|
<a {...defaultProps} ref={ref}> |
|
{svg()} |
|
{text} |
|
</a> |
|
); |
|
}); |
|
|
|
export default NavLink; |
|
|