| 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; | |