import NextLink from "next/link"; import clsx from "clsx"; import objStr from "obj-str"; import config from "../../lib/config"; import type { ComponentPropsWithoutRef } from "react"; import styles from "./Link.module.css"; export type LinkProps = ComponentPropsWithoutRef & { plain?: boolean; // disable fancy text-decoration effect openInNewTab?: boolean; }; const Link = ({ href, rel, target, prefetch = false, plain, openInNewTab, className, ...rest }: LinkProps) => { // This component auto-detects whether or not this link should open in the same window (the default for internal // links) or a new tab (the default for external links). Defaults can be overridden with `openInNewTab={true}`. const isExternal = typeof href === "string" && !(["/", "#"].includes(href[0]) || href.startsWith(config.baseUrl)); if (openInNewTab || isExternal) { return ( ); } // If link is to an internal page, simply pass *everything* along as-is to next/link. return ( ); }; export default Link;