feat: add SmartLink component for internal and external links

The component automatically detects link type and applies appropriate
rendering with proper attributes for external links.
This commit is contained in:
anime
2025-07-24 15:03:03 +08:00
parent 8e95616b04
commit fc4817e669

27
components/SmartLink.js Normal file
View File

@@ -0,0 +1,27 @@
import Link from 'next/link'
import { siteConfig } from '@/lib/config'
const SmartLink = ({ href, children, ...rest }) => {
const LINK = siteConfig('LINK')
const isExternal = href.startsWith('http') && !href.startsWith(LINK)
if (isExternal) {
return (
<a
href={href}
target='_blank'
rel='noopener noreferrer'
{...rest}>
{children}
</a>
)
}
return (
<Link href={href} {...rest}>
{children}
</Link>
)
}
export default SmartLink