feat: Implement dynamic OG images

This commit is contained in:
gpt-engineer-app[bot]
2025-10-29 16:49:41 +00:00
parent 320df82329
commit ac63e1d2db
9 changed files with 166 additions and 0 deletions

View File

@@ -23,6 +23,7 @@ const RideModelForm = lazy(() => import('@/components/admin/RideModelForm').then
import { VersionIndicator } from '@/components/versioning/VersionIndicator';
import { EntityVersionHistory } from '@/components/versioning/EntityVersionHistory';
import { useDocumentTitle } from '@/hooks/useDocumentTitle';
import { useOpenGraph } from '@/hooks/useOpenGraph';
export default function RideModelDetail() {
const { manufacturerSlug, modelSlug } = useParams<{ manufacturerSlug: string; modelSlug: string }>();
@@ -37,6 +38,16 @@ export default function RideModelDetail() {
// Update document title when model changes
useDocumentTitle(model?.name || 'Ride Model Details');
// Update Open Graph meta tags
useOpenGraph({
title: model?.name ? `${model.name}${manufacturer?.name ? ` by ${manufacturer.name}` : ''}` : '',
description: model?.description || (model ? `${model.name} - A ride model${manufacturer?.name ? ` by ${manufacturer.name}` : ''}` : ''),
imageUrl: model?.banner_image_url,
imageId: model?.banner_image_id,
type: 'website',
enabled: !!model
});
const [statistics, setStatistics] = useState({ rideCount: 0, photoCount: 0 });
// Fetch technical specifications from relational table