import { noop } from 'lodash' import Link from 'next/link' import { AnchorHTMLAttributes, forwardRef } from 'react' import { cn } from 'ui' import type { Route } from 'components/ui/ui.types' import { useAppStateSnapshot } from 'state/app-state' interface NavigationIconButtonProps extends AnchorHTMLAttributes { route: Route isActive?: boolean } const NavigationIconLink = forwardRef( ({ route, isActive = false, onClick = noop, ...props }, ref) => { const snap = useAppStateSnapshot() const iconClasses = [ 'absolute left-0 top-0 flex rounded items-center h-10 w-10 items-center justify-center', // Layout ] const classes = [ 'relative', 'h-10 w-10 group-data-[state=expanded]:w-full', 'transition-all duration-200', 'flex items-center rounded', 'group-data-[state=collapsed]:justify-center', 'group-data-[state=expanded]:-space-x-2', 'text-foreground-lighter hover:text-foreground ', 'hover:bg-surface-200', `${isActive ? '!bg-selection !text-foreground shadow-sm' : ''}`, 'group/item', ] return route.link !== undefined ? ( {route.icon} {route.label} ) : ( ) } ) NavigationIconLink.displayName = 'NavigationIconLink' export default NavigationIconLink