Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 6s
Build & Deploy / 🧪 QA (push) Successful in 1m22s
Build & Deploy / 🏗️ Build (push) Failing after 1m0s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Smoke Test (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 1s
- Added 'use client' to not-found.tsx - Refactored RelatedProducts to Server Component to fix 'fs' import error - Created RelatedProductLink for client-side analytics - Fixed lint syntax issues in RecordModeVisuals.tsx - Fixed rule-of-hooks violation in WebsiteVideo.tsx
40 lines
806 B
TypeScript
40 lines
806 B
TypeScript
'use client';
|
|
|
|
import Link from 'next/link';
|
|
import { useAnalytics } from './analytics/useAnalytics';
|
|
import { AnalyticsEvents } from './analytics/analytics-events';
|
|
|
|
interface RelatedProductLinkProps {
|
|
href: string;
|
|
productSlug: string;
|
|
productTitle: string;
|
|
children: React.ReactNode;
|
|
className?: string;
|
|
}
|
|
|
|
export function RelatedProductLink({
|
|
href,
|
|
productSlug,
|
|
productTitle,
|
|
children,
|
|
className,
|
|
}: RelatedProductLinkProps) {
|
|
const { trackEvent } = useAnalytics();
|
|
|
|
return (
|
|
<Link
|
|
href={href}
|
|
className={className}
|
|
onClick={() =>
|
|
trackEvent(AnalyticsEvents.PRODUCT_VIEW, {
|
|
product_id: productSlug,
|
|
product_name: productTitle,
|
|
location: 'related_products',
|
|
})
|
|
}
|
|
>
|
|
{children}
|
|
</Link>
|
|
);
|
|
}
|