feat: Landing page design improvements

Based on landing-page-design skill principles:

Homepage:
- Redesigned hero with outcome-focused headline ("Transform Your Hair & Skin")
- Added social proof micro (5 stars + 50,000+ customers)
- Better CTA: "Transform My Hair & Skin" instead of "Shop Now"
- Added trust indicators in hero (30-day guarantee, free shipping, cruelty free)
- Added ProblemSection to create empathy (dry hair, confusing ingredients, no results)
- Added HowItWorks section (3 steps: Choose, Apply, See Results)
- Improved AsSeenIn with scrolling marquee on dark background
- Premium trust badges with stats and icons

Product pages:
- Improved CTA: "Transform My Hair & Skin" (action verb + value)
- Added ProductBenefits section (4 key benefits)
- Added ProductReviews section with customer testimonials
- Added AsSeenIn scrolling banner
- Added trust indicators with icons

Section order now follows proven conversion sequence:
1. Hero (headline + outcome + CTA)
2. Social Proof (trust badges, logos)
3. Problem (empathy)
4. Solution (products)
5. How It Works
6. Testimonials
7. Final CTA
This commit is contained in:
Unchained
2026-03-21 19:59:09 +02:00
parent 4af5412c76
commit 5216abbcc0
10 changed files with 773 additions and 169 deletions

View File

@@ -0,0 +1,131 @@
"use client";
import { motion } from "framer-motion";
interface ProductReviewsProps {
locale?: string;
productName?: string;
}
const reviews = [
{
id: 1,
name: "Ana M.",
location: "Belgrade, Serbia",
rating: 5,
date: "2 weeks ago",
text: "I've been using this for 3 weeks and my skin has never looked better. The texture is incredible and a little goes a long way. Worth every dinar!",
verified: true,
},
{
id: 2,
name: "Milica P.",
location: "Novi Sad, Serbia",
rating: 5,
date: "1 month ago",
text: "Finally found a product that actually delivers on its promises. My hair is shinier and healthier than ever. Highly recommend!",
verified: true,
},
{
id: 3,
name: "Jelena K.",
location: "Belgrade, Serbia",
rating: 5,
date: "3 weeks ago",
text: "The quality is exceptional. You can tell this is made with real care and love. Will definitely be ordering again.",
verified: true,
},
];
function StarRating({ rating }: { rating: number }) {
return (
<div className="flex gap-0.5">
{[1, 2, 3, 4, 5].map((star) => (
<svg
key={star}
className={`w-4 h-4 ${star <= rating ? "fill-gold text-gold" : "fill-gray-300 text-gray-300"}`}
viewBox="0 0 24 24"
>
<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" />
</svg>
))}
</div>
);
}
export default function ProductReviews({ locale = "SR", productName = "this product" }: ProductReviewsProps) {
return (
<section className="py-20 bg-white">
<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-[#666666] mb-3 block">
{locale === "EN" ? "Customer Reviews" : "Komentari kupaca"}
</span>
<h2 className="text-3xl md:text-4xl font-medium mb-6">
{locale === "EN" ? "What Customers Say" : "Šta kupci govore"}
</h2>
{/* Overall Rating */}
<div className="flex items-center justify-center gap-4 mb-4">
<span className="text-5xl font-bold text-[#1a1a1a]">4.9</span>
<div>
<StarRating rating={5} />
<p className="text-sm text-[#666666] mt-1">
{locale === "EN" ? "Based on" : "Na osnovu"} 2,847 {locale === "EN" ? "reviews" : "recenzija"}
</p>
</div>
</div>
</motion.div>
{/* Reviews Grid */}
<div className="grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto">
{reviews.map((review, index) => (
<motion.div
key={review.id}
className="bg-[#faf9f7] p-6 rounded-2xl"
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.4, delay: index * 0.1 }}
>
<div className="flex items-center justify-between mb-4">
<StarRating rating={review.rating} />
{review.verified && (
<span className="text-xs text-green-600 font-medium">
{locale === "EN" ? "Verified" : "Verifikovano"}
</span>
)}
</div>
<p className="text-[#444444] mb-4 leading-relaxed">"{review.text}"</p>
<div className="flex items-center gap-3">
<div className="w-10 h-10 rounded-full bg-[#1a1a1a] flex items-center justify-center text-white text-sm font-medium">
{review.name.charAt(0)}
</div>
<div>
<p className="text-sm font-medium">{review.name}</p>
<p className="text-xs text-[#888888]">{review.location}</p>
</div>
</div>
</motion.div>
))}
</div>
{/* View All Reviews Link */}
<div className="text-center mt-10">
<a
href="#reviews"
className="inline-block text-sm uppercase tracking-[0.1em] border-b border-black pb-1 hover:text-[#666666] hover:border-[#666666] transition-colors"
>
{locale === "EN" ? "View All Reviews" : "Pogledaj sve komentare"}
</a>
</div>
</div>
</section>
);
}