import { FC } from 'react'; import { ComponentParameter, UniformText } from '@uniformdev/next-app-router/component'; import BaseIconLabel from '@/components/ui/IconLabel'; import BaseImage from '@/components/ui/Image'; import InlineSVG from '@/components/ui/InlineSVG'; import { ReplaceFieldsWithAssets } from '@/types/cskTypes'; import { formatUniformLink, isExternalLink } from '@/utils/routing'; import { cn, resolveViewPort } from '@/utils/styling'; import { withFlattenParameters } from '@/utils/withFlattenParameters'; import { NavigationLinkProps, NavigationLinkParameters } from '.'; import { Wrapper } from './wrapper'; const NavigationLink: FC> = ({ icon, link, activeState, size, tag, color, weight, font, transform, decoration, letterSpacing, alignment, component, context, hoverEffect = '', className, parameters, }) => { const href = formatUniformLink(link); const isActive = !activeState && context.pageState.routePath === href; const [resolvedImage] = icon || []; const { url, title = '' } = resolvedImage || {}; const renderUrl = () => { if (!url) return null; return url.endsWith('.svg') ? : ; }; const actionClassName = cn('transition-all duration-150', { [resolveViewPort(hoverEffect, 'group-hover:{value}')]: !!hoverEffect, [resolveViewPort(hoverEffect, '{value}')]: !!hoverEffect && isActive, }); return ( } className="whitespace-nowrap" component={component} /> ); }; export default withFlattenParameters(NavigationLink);