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}