diff --git a/src/app/page.tsx b/src/app/page.tsx
index 82d47ea..67ea35c 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -1,12 +1,12 @@
import * as React from 'react';
-import NextLink from 'next/link';
-
import { unstable_noStore as noStore } from 'next/cache';
+import { Link } from '@/components/link';
+
+import { cn } from '@/utils/cn';
import { api } from '@/trpc/server';
import { getServerAuthSession } from '@/server/auth';
-import { cn } from '@/utils/cn';
export default async function Page() {
noStore();
@@ -31,7 +31,7 @@ export default async function Page() {
) : null}
-
{session ? 'Sign out' : 'Sign in'}
-
+
diff --git a/src/components/link.tsx b/src/components/link.tsx
new file mode 100644
index 0000000..84e1628
--- /dev/null
+++ b/src/components/link.tsx
@@ -0,0 +1,26 @@
+import * as React from 'react';
+
+import NextLink, { type LinkProps } from 'next/link';
+
+export type TLinkProps = {
+ openNewTab?: boolean;
+} & React.ComponentPropsWithRef<'a'> &
+ LinkProps;
+
+export const Link = React.forwardRef(function _Link({ href, openNewTab = false, children, ...props }, ref) {
+ const isNewTab = openNewTab ? openNewTab : !href.startsWith('/') && !href.startsWith('#') && !href.startsWith('?');
+
+ if (!isNewTab) {
+ return (
+
+ {children}
+
+ );
+ }
+
+ return (
+
+ {children}
+
+ );
+});