diff --git a/src/frontend/src/components/previews/AttributeGrid.tsx b/src/frontend/src/components/previews/AttributeGrid.tsx
index e63e79e8b6..0da3aeead5 100644
--- a/src/frontend/src/components/previews/AttributeGrid.tsx
+++ b/src/frontend/src/components/previews/AttributeGrid.tsx
@@ -1,4 +1,5 @@
-import { Divider, Table, Title } from '@mantine/core';
+import { StylishText } from '@lib/components/StylishText';
+import { Divider, Table } from '@mantine/core';
import type { ReactNode } from 'react';
export interface AttributeRow {
@@ -22,7 +23,7 @@ export function AttributeGrid({
return (
<>
-
{title}
+ {title}
{valid.map((item) => (
diff --git a/src/frontend/src/components/previews/PreviewDrawer.tsx b/src/frontend/src/components/previews/PreviewDrawer.tsx
index b1af737a6c..ebcb8ee58c 100644
--- a/src/frontend/src/components/previews/PreviewDrawer.tsx
+++ b/src/frontend/src/components/previews/PreviewDrawer.tsx
@@ -1,9 +1,10 @@
-import { Divider, Drawer, LoadingOverlay, Stack } from '@mantine/core';
+import { Anchor, Divider, Drawer, LoadingOverlay, Stack } from '@mantine/core';
import { StylishText } from '@lib/components/StylishText';
import { ModelInformationDict } from '@lib/enums/ModelInformation';
-import type { ModelType } from '@lib/index';
-import { useMemo } from 'react';
+import { type ModelType, getDetailUrl, navigateToLink } from '@lib/index';
+import { useCallback, useMemo } from 'react';
+import { useNavigate } from 'react-router-dom';
import { useInstance } from '../../hooks/UseInstance';
import { getModelInfo } from '../render/ModelType';
import { type PreviewType, getPreviewComponentForModel } from './PreviewType';
@@ -26,6 +27,8 @@ export default function PreviewDrawer({
opened: boolean;
onClose: () => void;
}>) {
+ const navigate = useNavigate();
+
const modelInfo = modelType ? getModelInfo(modelType) : null;
const apiEndpoint = modelType
? ModelInformationDict[modelType].api_endpoint
@@ -66,13 +69,32 @@ export default function PreviewDrawer({
return component;
}, [providedPreview, modelType, id, instance]);
+ const clickTitle = useCallback(
+ (event: MouseEvent) => {
+ if (!modelType || !id) return;
+
+ onClose();
+ navigateToLink(getDetailUrl(modelType!, id!), navigate, event);
+ },
+ [modelType, id, navigate]
+ );
+
return (
{previewComponent.title}
+ !!modelType && !!id ? (
+ clickTitle(e)}
+ >
+ {previewComponent.title}
+
+ ) : (
+ {previewComponent.title}
+ )
) : null
}
opened={opened}