import clsx from 'clsx' import { ReactNode } from 'react' import Link from 'next/link' export const SiteLink = (props: { href: string children?: ReactNode onClick?: () => void className?: string }) => { const { href, children, onClick, className } = props return ( <MaybeLink href={href}> <a className={clsx( 'z-10 break-words hover:underline hover:decoration-indigo-400 hover:decoration-2', className )} href={href} target={href.startsWith('http') ? '_blank' : undefined} style={{ /* For iOS safari */ wordBreak: 'break-word' }} onClick={(e) => { e.stopPropagation() if (onClick) onClick() }} > {children} </a> </MaybeLink> ) } function MaybeLink(props: { href: string; children: ReactNode }) { const { href, children } = props return href.startsWith('http') ? ( <>{children}</> ) : ( <Link href={href}>{children}</Link> ) }