- homepage page.tsx was passing productLocale (SR/EN) instead of locale (sr/en) to ProductCard - ProductShowcase default locale was "SR" instead of "sr" - ProductBenefits default locale was "SR" instead of "sr" These caused URLs like /en/SR/products/... when clicking products
96 lines
4.5 KiB
TypeScript
96 lines
4.5 KiB
TypeScript
"use client";
|
|
|
|
import { motion } from "framer-motion";
|
|
import { useTranslations } from "next-intl";
|
|
|
|
interface ProductBenefitsProps {
|
|
locale?: string;
|
|
}
|
|
|
|
export default function ProductBenefits({ locale = "sr" }: ProductBenefitsProps) {
|
|
const t = useTranslations("ProductBenefits");
|
|
|
|
const benefits = [
|
|
{
|
|
icon: (
|
|
<svg className="w-10 h-10" fill="none" viewBox="0 0 24 24" strokeWidth={1.5}>
|
|
<path stroke="#c9a962" d="M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09z" />
|
|
<path stroke="#c9a962" strokeLinecap="round" strokeLinejoin="round" d="M15.75 10.5V6a3.75 3.75 0 10-7.5 0v4.5m11.356-1.993l1.263 12c.07.665-.45 1.243-1.119 1.243H4.25a1.125 1.125 0 01-1.12-1.243l1.264-12A1.125 1.125 0 015.513 7.5h12.974c.576 0 1.059.435 1.119 1.007zM8.625 10.5a.375.375 0 11-.75 0 .375.375 0 01.75 0zm7.5 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z" />
|
|
</svg>
|
|
),
|
|
title: t("pureNatural"),
|
|
description: t("pureNaturalDesc"),
|
|
},
|
|
{
|
|
icon: (
|
|
<svg className="w-10 h-10" viewBox="0 0 24 24" fill="none">
|
|
<path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" fill="#e8967a"/>
|
|
<path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#c9a962" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"/>
|
|
</svg>
|
|
),
|
|
title: t("crueltyFree"),
|
|
description: t("crueltyFreeDesc"),
|
|
},
|
|
{
|
|
icon: (
|
|
<svg className="w-10 h-10" viewBox="0 0 24 24" fill="none">
|
|
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" fill="#7eb89e"/>
|
|
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" stroke="#c9a962" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"/>
|
|
</svg>
|
|
),
|
|
title: t("madeWithLove"),
|
|
description: t("madeWithLoveDesc"),
|
|
},
|
|
{
|
|
icon: (
|
|
<svg className="w-10 h-10" viewBox="0 0 24 24" fill="none">
|
|
<path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z" fill="#c9a962"/>
|
|
<path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z" stroke="#b8944f" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"/>
|
|
</svg>
|
|
),
|
|
title: t("visibleResults"),
|
|
description: t("visibleResultsDesc"),
|
|
},
|
|
];
|
|
|
|
return (
|
|
<section className="py-20 bg-gradient-to-b from-white to-[#faf9f7]">
|
|
<div className="container mx-auto px-4">
|
|
<motion.div
|
|
className="text-center mb-12"
|
|
initial={{ opacity: 0, y: 20 }}
|
|
whileInView={{ opacity: 1, y: 0 }}
|
|
viewport={{ once: true }}
|
|
transition={{ duration: 0.6 }}
|
|
>
|
|
<span className="text-xs uppercase tracking-[0.2em] text-[#c9a962] mb-3 block font-medium">
|
|
{t("whyChoose")}
|
|
</span>
|
|
<h2 className="text-3xl md:text-4xl font-medium">
|
|
{t("manoonDifference")}
|
|
</h2>
|
|
</motion.div>
|
|
|
|
<div className="grid grid-cols-2 lg:grid-cols-4 gap-6 lg:gap-8 max-w-5xl mx-auto">
|
|
{benefits.map((benefit, index) => (
|
|
<motion.div
|
|
key={index}
|
|
className="text-center p-6 bg-white rounded-2xl shadow-md border border-[#f0ede8] hover:shadow-xl hover:border-[#c9a962]/30 transition-all duration-300"
|
|
initial={{ opacity: 0, y: 20 }}
|
|
whileInView={{ opacity: 1, y: 0 }}
|
|
viewport={{ once: true }}
|
|
transition={{ duration: 0.4, delay: index * 0.1 }}
|
|
whileHover={{ y: -5 }}
|
|
>
|
|
<div className="w-20 h-20 mx-auto mb-5 rounded-2xl bg-gradient-to-br from-[#faf9f7] to-[#f5f0e8] flex items-center justify-center shadow-sm border border-[#e8e4dc]">
|
|
{benefit.icon}
|
|
</div>
|
|
<h3 className="text-base font-medium mb-2 text-[#1a1a1a]">{benefit.title}</h3>
|
|
<p className="text-sm text-[#666666] leading-relaxed">{benefit.description}</p>
|
|
</motion.div>
|
|
))}
|
|
</div>
|
|
</div>
|
|
</section>
|
|
);
|
|
} |