All checks were successful
Build & Deploy / 🔍 Prepare (push) Successful in 11s
Build & Deploy / 🧪 QA (push) Successful in 2m6s
Build & Deploy / 🏗️ Build (push) Successful in 7m29s
Build & Deploy / 🚀 Deploy (push) Successful in 30s
Build & Deploy / 🧪 Smoke Test (push) Successful in 1m13s
Build & Deploy / 🔔 Notify (push) Successful in 1s
93 lines
3.8 KiB
TypeScript
93 lines
3.8 KiB
TypeScript
'use client';
|
|
|
|
import { cn } from '@/components/ui/utils';
|
|
import { useTranslations } from 'next-intl';
|
|
import { useAnalytics } from './analytics/useAnalytics';
|
|
import { AnalyticsEvents } from './analytics/analytics-events';
|
|
|
|
interface DatasheetDownloadProps {
|
|
datasheetPath: string;
|
|
className?: string;
|
|
}
|
|
|
|
export default function DatasheetDownload({ datasheetPath, className }: DatasheetDownloadProps) {
|
|
const t = useTranslations('Products');
|
|
const { trackEvent } = useAnalytics();
|
|
|
|
return (
|
|
<div className={cn('mt-8 animate-slight-fade-in-from-bottom', className)}>
|
|
<a
|
|
href={datasheetPath}
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
onClick={() =>
|
|
trackEvent(AnalyticsEvents.DOWNLOAD, {
|
|
file_name: datasheetPath.split('/').pop(),
|
|
file_path: datasheetPath,
|
|
location: 'product_page',
|
|
})
|
|
}
|
|
className="group relative block w-full overflow-hidden rounded-[32px] bg-primary-dark p-1 transition-all duration-500 hover:shadow-[0_20px_50px_rgba(0,0,0,0.2)] hover:-translate-y-1"
|
|
>
|
|
{/* Animated Background Gradient */}
|
|
<div className="absolute inset-0 bg-gradient-to-r from-accent via-saturated to-accent opacity-20 group-hover:opacity-40 transition-opacity duration-500 animate-gradient-x" />
|
|
|
|
{/* Inner Content */}
|
|
<div className="relative flex items-center gap-6 rounded-[31px] bg-primary-dark/90 backdrop-blur-xl p-6 md:p-8 border border-white/10">
|
|
{/* Icon Container */}
|
|
<div className="relative flex h-16 w-16 flex-shrink-0 items-center justify-center rounded-2xl bg-white/5 border border-white/10 group-hover:bg-accent group-hover:border-white/20 transition-all duration-500">
|
|
<div className="absolute inset-0 rounded-2xl bg-accent/20 blur-xl opacity-0 group-hover:opacity-100 transition-opacity duration-500" />
|
|
<svg
|
|
className="relative h-8 w-8 text-white transition-transform duration-500 group-hover:scale-110 group-hover:rotate-3"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
viewBox="0 0 24 24"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
strokeLinecap="round"
|
|
strokeLinejoin="round"
|
|
strokeWidth={1.5}
|
|
d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"
|
|
/>
|
|
</svg>
|
|
</div>
|
|
|
|
{/* Text Content */}
|
|
<div className="flex-1">
|
|
<div className="flex items-center gap-2 mb-1">
|
|
<span className="text-[10px] font-black uppercase tracking-[0.2em] text-accent">
|
|
PDF Datasheet
|
|
</span>
|
|
</div>
|
|
<h3 className="text-xl md:text-2xl font-black text-white uppercase tracking-tighter leading-none group-hover:text-accent transition-colors duration-300">
|
|
{t('downloadDatasheet')}
|
|
</h3>
|
|
<p className="mt-2 text-sm font-medium text-white/60 leading-relaxed">
|
|
{t('downloadDatasheetDesc')}
|
|
</p>
|
|
</div>
|
|
|
|
{/* Arrow Icon */}
|
|
<div className="flex h-10 w-10 items-center justify-center rounded-full bg-white/5 text-white/20 group-hover:bg-accent group-hover:text-white group-hover:translate-x-1 transition-all duration-500">
|
|
<svg
|
|
className="h-6 w-6"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
viewBox="0 0 24 24"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
strokeLinecap="round"
|
|
strokeLinejoin="round"
|
|
strokeWidth={2.5}
|
|
d="M9 5l7 7-7 7"
|
|
/>
|
|
</svg>
|
|
</div>
|
|
</div>
|
|
</a>
|
|
</div>
|
|
);
|
|
}
|