'use client'; import { BookOpenIcon, CodeIcon, LaptopIcon, UsersIcon, } from '@imphnen-frontend-service/shadcn-ui/atoms'; import { FeaturesSection } from 'apps/landing/src/payload-types'; import { motion, useInView } from 'framer-motion'; import { useRef } from 'react'; export function Features(props: FeaturesSection) { const { heading, subheading, features } = props; const featuresFormatted = features?.map((f) => ({ icon: IconMapper(String(f.icon)), title: f.title, description: f.description, })); const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.2 }); const containerVariants = { hidden: { opacity: 0 }, visible: { opacity: 1, transition: { staggerChildren: 0.1, }, }, }; const itemVariants = { hidden: { y: 20, opacity: 0 }, visible: { y: 0, opacity: 1, transition: { duration: 0.5 }, }, }; return (
Fitur Unggulan

{heading}

{subheading}

{featuresFormatted?.map((feature, index) => (
{feature.icon}

{feature.title}

{feature.description}

))}
); } function IconMapper(name: string) { switch (name) { case 'LaptopIcon': return ; case 'UsersIcon': return ; case 'BookOpenIcon': return ; case 'CodeIcon': return ; default: return null; } }