Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 474fa4f3df |
@@ -112,7 +112,11 @@ export default async function Layout(props: {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<html lang={safeLocale} className={`scroll-smooth overflow-x-hidden ${inter.variable}`}>
|
<html lang={safeLocale} className={`scroll-smooth overflow-x-hidden ${inter.variable}`}>
|
||||||
<head></head>
|
<head>
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
|
||||||
|
<link rel="preconnect" href="https://img.infra.mintel.me" />
|
||||||
|
</head>
|
||||||
<body className="flex flex-col min-h-screen font-sans selection:bg-accent selection:text-primary-dark antialiased overflow-x-hidden">
|
<body className="flex flex-col min-h-screen font-sans selection:bg-accent selection:text-primary-dark antialiased overflow-x-hidden">
|
||||||
<NextIntlClientProvider messages={messages} locale={safeLocale}>
|
<NextIntlClientProvider messages={messages} locale={safeLocale}>
|
||||||
<RecordModeProvider isEnabled={recordModeEnabled}>
|
<RecordModeProvider isEnabled={recordModeEnabled}>
|
||||||
|
|||||||
@@ -137,12 +137,12 @@ const containerVariants = {
|
|||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
const headingVariants = {
|
const headingVariants = {
|
||||||
hidden: { opacity: 1, y: 30, scale: 0.95 },
|
hidden: { opacity: 1, y: 10, scale: 0.98 },
|
||||||
visible: {
|
visible: {
|
||||||
opacity: 1,
|
opacity: 1,
|
||||||
y: 0,
|
y: 0,
|
||||||
scale: 1,
|
scale: 1,
|
||||||
transition: { duration: 0.8, ease: [0.25, 0.46, 0.45, 0.94] },
|
transition: { duration: 0.4, ease: [0.25, 0.46, 0.45, 0.94] },
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
@@ -167,12 +167,12 @@ const scribbleVariants = {
|
|||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
const subtitleVariants = {
|
const subtitleVariants = {
|
||||||
hidden: { opacity: 0, y: 40, scale: 0.95 },
|
hidden: { opacity: 0, y: 20, scale: 0.98 },
|
||||||
visible: {
|
visible: {
|
||||||
opacity: 1,
|
opacity: 1,
|
||||||
y: 0,
|
y: 0,
|
||||||
scale: 1,
|
scale: 1,
|
||||||
transition: { duration: 1, ease: [0.25, 0.46, 0.45, 0.94] },
|
transition: { duration: 0.6, ease: [0.25, 0.46, 0.45, 0.94], delay: 0.1 },
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
|
|||||||
@@ -154,15 +154,15 @@ export default function HeroIllustration() {
|
|||||||
<stop offset="70%" stopColor="white" stopOpacity="0.4" />
|
<stop offset="70%" stopColor="white" stopOpacity="0.4" />
|
||||||
<stop offset="100%" stopColor="white" stopOpacity="0" />
|
<stop offset="100%" stopColor="white" stopOpacity="0" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<filter id="glow" x="-50%" y="-50%" width="200%" height="200%">
|
<filter id="glow" x="-20%" y="-20%" width="140%" height="140%">
|
||||||
<feGaussianBlur stdDeviation="3" result="blur" />
|
<feGaussianBlur stdDeviation="1.5" result="blur" />
|
||||||
<feMerge>
|
<feMerge>
|
||||||
<feMergeNode in="blur" />
|
<feMergeNode in="blur" />
|
||||||
<feMergeNode in="SourceGraphic" />
|
<feMergeNode in="SourceGraphic" />
|
||||||
</feMerge>
|
</feMerge>
|
||||||
</filter>
|
</filter>
|
||||||
<filter id="soft-glow" x="-100%" y="-100%" width="300%" height="300%">
|
<filter id="soft-glow" x="-50%" y="-50%" width="200%" height="200%">
|
||||||
<feGaussianBlur stdDeviation="2" result="blur" />
|
<feGaussianBlur stdDeviation="1" result="blur" />
|
||||||
<feMerge>
|
<feMerge>
|
||||||
<feMergeNode in="blur" />
|
<feMergeNode in="blur" />
|
||||||
<feMergeNode in="SourceGraphic" />
|
<feMergeNode in="SourceGraphic" />
|
||||||
@@ -215,10 +215,10 @@ export default function HeroIllustration() {
|
|||||||
</g>
|
</g>
|
||||||
|
|
||||||
{/* ANIMATED ENERGY FLOW */}
|
{/* ANIMATED ENERGY FLOW */}
|
||||||
<g filter="url(#glow)">
|
<g>
|
||||||
{POWER_LINES.map((line, i) => {
|
{POWER_LINES.map((line, i) => {
|
||||||
// Only animate a subset of lines to reduce main-thread work
|
// Only animate a small subset of lines to reduce main-thread work significantly
|
||||||
if (i % 2 !== 0) return null;
|
if (i % 5 !== 0) return null;
|
||||||
const from = gridToScreen(line.from.col, line.from.row);
|
const from = gridToScreen(line.from.col, line.from.row);
|
||||||
const to = gridToScreen(line.to.col, line.to.row);
|
const to = gridToScreen(line.to.col, line.to.row);
|
||||||
const length = Math.sqrt(Math.pow(to.x - from.x, 2) + Math.pow(to.y - from.y, 2));
|
const length = Math.sqrt(Math.pow(to.x - from.x, 2) + Math.pow(to.y - from.y, 2));
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ export default function ProductCategories() {
|
|||||||
alt={category.title}
|
alt={category.title}
|
||||||
fill
|
fill
|
||||||
className="object-cover transition-transform duration-1000 group-hover:scale-110"
|
className="object-cover transition-transform duration-1000 group-hover:scale-110"
|
||||||
sizes="(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 25vw"
|
sizes="(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 24vw"
|
||||||
/>
|
/>
|
||||||
<div className="absolute inset-0 bg-primary-dark/40 group-hover:bg-primary-dark/60 transition-all duration-500" />
|
<div className="absolute inset-0 bg-primary-dark/40 group-hover:bg-primary-dark/60 transition-all duration-500" />
|
||||||
<div className="absolute inset-0 p-8 md:p-10 flex flex-col justify-end text-white">
|
<div className="absolute inset-0 p-8 md:p-10 flex flex-col justify-end text-white">
|
||||||
|
|||||||
@@ -6,14 +6,18 @@ export default function VideoSection() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="relative h-[70vh] overflow-hidden bg-primary">
|
<section className="relative h-[70vh] overflow-hidden bg-primary">
|
||||||
<video
|
<video
|
||||||
className="w-full h-full object-cover opacity-60"
|
className="w-full h-full object-cover opacity-60"
|
||||||
autoPlay
|
autoPlay
|
||||||
muted
|
muted
|
||||||
loop
|
loop
|
||||||
playsInline
|
playsInline
|
||||||
|
preload="none"
|
||||||
>
|
>
|
||||||
<source src="/uploads/2024/12/making-of-metal-cable-on-factory-2023-11-27-04-55-16-utc-2.webm" type="video/mp4" />
|
<source
|
||||||
|
src="/uploads/2024/12/making-of-metal-cable-on-factory-2023-11-27-04-55-16-utc-2.webm"
|
||||||
|
type="video/webm"
|
||||||
|
/>
|
||||||
</video>
|
</video>
|
||||||
<div className="absolute inset-0 bg-gradient-to-b from-primary/60 via-transparent to-primary/60 flex items-center justify-center">
|
<div className="absolute inset-0 bg-gradient-to-b from-primary/60 via-transparent to-primary/60 flex items-center justify-center">
|
||||||
<div className="max-w-5xl px-6 text-center animate-slide-up">
|
<div className="max-w-5xl px-6 text-center animate-slide-up">
|
||||||
@@ -22,9 +26,12 @@ export default function VideoSection() {
|
|||||||
future: (chunks) => (
|
future: (chunks) => (
|
||||||
<span className="relative inline-block mx-2">
|
<span className="relative inline-block mx-2">
|
||||||
<span className="relative z-10 italic text-accent">{chunks}</span>
|
<span className="relative z-10 italic text-accent">{chunks}</span>
|
||||||
<Scribble variant="underline" className="w-full h-4 -bottom-2 left-0 text-accent/40" />
|
<Scribble
|
||||||
|
variant="underline"
|
||||||
|
className="w-full h-4 -bottom-2 left-0 text-accent/40"
|
||||||
|
/>
|
||||||
</span>
|
</span>
|
||||||
)
|
),
|
||||||
})}
|
})}
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ const nextConfig = {
|
|||||||
// Make sure entries are not disposed too quickly
|
// Make sure entries are not disposed too quickly
|
||||||
maxInactiveAge: 60 * 1000,
|
maxInactiveAge: 60 * 1000,
|
||||||
},
|
},
|
||||||
|
productionBrowserSourceMaps: false,
|
||||||
logging: {
|
logging: {
|
||||||
fetches: {
|
fetches: {
|
||||||
fullUrl: true,
|
fullUrl: true,
|
||||||
@@ -353,4 +354,6 @@ const nextConfig = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default withMintelConfig(nextConfig);
|
export default withMintelConfig(nextConfig, {
|
||||||
|
hideSourceMaps: true,
|
||||||
|
});
|
||||||
|
|||||||
@@ -129,6 +129,11 @@
|
|||||||
"next": "16.1.6"
|
"next": "16.1.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"browserslist": [
|
||||||
|
"last 3 versions",
|
||||||
|
"not dead",
|
||||||
|
"not ie 11"
|
||||||
|
],
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@remotion/cli": "^4.0.421",
|
"@remotion/cli": "^4.0.421",
|
||||||
"@remotion/google-fonts": "^4.0.421",
|
"@remotion/google-fonts": "^4.0.421",
|
||||||
|
|||||||
Reference in New Issue
Block a user