helloya20's picture
Upload 2345 files
f0743f4 verified
import React, { FC, forwardRef } from 'react';
import { cn } from '~/utils/';
interface Props {
svg: () => JSX.Element;
text: string;
clickHandler?: React.MouseEventHandler<HTMLButtonElement>;
className?: string;
disabled?: boolean;
}
const NavLink: FC<Props> = forwardRef<HTMLButtonElement, Props>((props, ref) => {
const { svg, text, clickHandler, disabled, className = '' } = props;
const defaultProps: {
className: string;
onClick?: React.MouseEventHandler<HTMLButtonElement>;
} = {
className: cn(
'w-full flex gap-2 rounded p-2.5 text-sm cursor-pointer group items-center transition-colors duration-200 text-text-primary',
className,
{
'opacity-50 pointer-events-none': disabled,
},
),
};
if (clickHandler) {
defaultProps.onClick = clickHandler;
}
return (
<button {...defaultProps} ref={ref}>
{svg()}
{text}
</button>
);
});
export default NavLink;