"use client";
import { motion, useReducedMotion } from "framer-motion";
import { MaterialIcon } from "@/components/ui/MaterialIcon";
import { Spotlight } from "@/components/ui/Spotlight";
import { fadeUp, staggerContainer, staggerSlow, viewport } from "@/lib/animations";
// 1. Trust Graphic (Emerald Shield & Checkmark)
function TrustGraphic({ reduce = false }: { reduce?: boolean }) {
return (
);
}
// 2. AI Graphic (Purple Sparkles Cluster)
function AIGraphic({ reduce = false }: { reduce?: boolean }) {
return (
);
}
// 3. Merchant First Graphic (Golden Storefront & Canopy)
function MerchantGraphic({ reduce = false }: { reduce?: boolean }) {
return (
);
}
// 4. Local Graphic (Sky Pin & Radar Pulse)
function LocalGraphic({ reduce = false }: { reduce?: boolean }) {
return (
);
}
const CARD_MOTES = [
{ left: "20%", top: "35%", size: 4, duration: 4.5, delay: 0 },
{ left: "75%", top: "60%", size: 3, duration: 5.5, delay: 0.8 },
];
const PRINCIPLES = [
{
word: "Trust",
icon: "verified_user",
line: "Local relationships cannot be replaced.",
badgeStyle: "bg-emerald-500/15 border-emerald-500/30 text-emerald-400",
dotColor: "bg-emerald-400",
spotlightColor: "rgba(52,211,153,0.18)",
renderGraphic: (reduce: boolean) => ,
},
{
word: "AI",
icon: "psychology",
line: "Removes complexity instead of adding more choices.",
badgeStyle: "bg-[#7C3AED]/20 border-[#7C3AED]/40 text-[#C084FC]",
dotColor: "bg-[#C084FC]",
spotlightColor: "rgba(168,85,247,0.20)",
renderGraphic: (reduce: boolean) => ,
},
{
word: "Merchant First",
icon: "storefront",
line: "Technology should empower neighbourhood businesses.",
badgeStyle: "bg-amber-500/15 border-amber-500/30 text-amber-400",
dotColor: "bg-amber-400",
spotlightColor: "rgba(251,191,36,0.18)",
renderGraphic: (reduce: boolean) => ,
},
{
word: "Local",
icon: "near_me",
line: "Every recommendation starts with nearby trusted merchants.",
badgeStyle: "bg-sky-500/15 border-sky-500/30 text-sky-400",
dotColor: "bg-sky-400",
spotlightColor: "rgba(56,189,248,0.18)",
renderGraphic: (reduce: boolean) => ,
},
];
export function CorePrinciples() {
const reduce = useReducedMotion();
return (
{/* Ambient purple wash */}
What We Build On
Four principles behind{" "}
every decision.
{/* Editorial principle blocks with left text and right distinct SVG graphic */}
{PRINCIPLES.map((principle) => (
{/* Floating Flying Particle Glow Dots (Motes) - Shown ONLY on Hover */}
{CARD_MOTES.map((mote, idx) => (
))}
{/* Corner Hover Glowing Dot */}
{/* Ambient Corner Glow Orb */}
{/* Left Column: Badge + Title + Description */}
{principle.word}
{principle.line}
{/* Right Column: Tailored Animated SVG Graphic */}
{principle.renderGraphic(!!reduce)}
))}
);
}