mike dupont
init: retro-sync API server + viewer + 71 Bach tiles + catalog
1295969
import { motion } from "framer-motion";
import { Check, X, Zap, Target, BarChart, Lock, UserX, Share2 } from "lucide-react";
const comparisonData = [
{ feature: "Annual Fee", legacy: "$20–$100/yr", retro: "$0 Forever", icon: Zap },
{ feature: "Identity", legacy: "Personal Info Required", retro: "Completely Private", icon: UserX },
{ feature: "Payment Speed", legacy: "60–90 Days", retro: "Instant", icon: Zap },
{ feature: "Payout Accuracy", legacy: "Unverified Estimates", retro: "ZK-Proven", icon: Target },
{ feature: "Audio Monitoring", legacy: "Basic Tools", retro: "Pro Spectrum", icon: BarChart },
{ feature: "Security", legacy: "Centralized", retro: "Global Encryption", icon: Lock },
{ feature: "Ownership", legacy: "Platform-Owned", retro: "Sovereign", icon: Share2 },
];
const Comparison = () => {
return (
<section className="py-24 md:py-32 relative bg-background overflow-hidden">
<div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[600px] h-[600px] bg-primary/3 blur-[120px] rounded-full pointer-events-none" />
<div className="container mx-auto px-6 relative z-10">
{/* Offset header */}
<motion.div
className="mb-16 md:mb-20 lg:ml-[8%]"
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
>
<h2 className="text-3xl sm:text-4xl md:text-5xl font-bold mb-4 tracking-tight">
The <span className="text-gradient-primary">Upgrade</span>
</h2>
<p className="text-muted-foreground max-w-lg text-base">
Built for the way music is made and sold today.
</p>
</motion.div>
<div className="space-y-2 max-w-5xl mx-auto">
{comparisonData.map((item, i) => (
<motion.div
key={item.feature}
className="grid grid-cols-3 md:grid-cols-12 gap-px bg-border overflow-hidden"
initial={{ opacity: 0, x: i % 2 === 0 ? -15 : 15 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true }}
transition={{ delay: i * 0.04 }}
>
{/* Feature */}
<div className="col-span-1 md:col-span-4 bg-card p-4 md:p-5 flex items-center gap-3">
<item.icon className="w-4 h-4 text-muted-foreground shrink-0 hidden sm:block" />
<span className="font-medium text-sm text-foreground">{item.feature}</span>
</div>
{/* Legacy */}
<div className="col-span-1 md:col-span-4 bg-card p-4 md:p-5 flex items-center gap-2">
<X className="w-3.5 h-3.5 text-destructive/50 shrink-0" />
<span className="text-sm text-muted-foreground">{item.legacy}</span>
</div>
{/* Retrosync */}
<div className="col-span-1 md:col-span-4 bg-primary/5 p-4 md:p-5 flex items-center gap-2">
<Check className="w-3.5 h-3.5 text-primary shrink-0" />
<span className="text-sm font-medium text-primary">{item.retro}</span>
</div>
</motion.div>
))}
</div>
</div>
</section>
);
};
export default Comparison;