import React, { ReactNode, forwardRef, AnchorHTMLAttributes } from 'react'; export interface LinkProps extends AnchorHTMLAttributes { children: ReactNode; variant?: 'primary' | 'secondary' | 'ghost' | 'inherit'; underline?: 'always' | 'hover' | 'none'; size?: string; weight?: string; letterSpacing?: string; block?: boolean; hoverColor?: string; transition?: boolean; } export const Link = forwardRef(({ children, variant = 'primary', underline = 'hover', size, weight, letterSpacing, block = false, hoverColor, transition = true, ...props }, ref) => { const variantClasses = { primary: 'text-[var(--ui-color-intent-primary)] hover:opacity-80', secondary: 'text-[var(--ui-color-text-med)] hover:text-[var(--ui-color-text-high)]', ghost: 'text-[var(--ui-color-text-low)] hover:text-[var(--ui-color-text-high)]', inherit: 'text-inherit', }; const underlineClasses = { always: 'underline', hover: 'hover:underline', none: 'no-underline', }; const classes = [ transition ? 'transition-all duration-150 ease-in-out' : '', 'cursor-pointer', block ? 'block' : 'inline', variantClasses[variant], underlineClasses[underline], ].join(' '); const style: React.CSSProperties = { ...(size ? { fontSize: size } : {}), ...(weight ? { fontWeight: weight } : {}), ...(letterSpacing ? { letterSpacing } : {}), }; return ( {children} ); }); Link.displayName = 'Link';