import { motion } from "motion/react"; import type { LucideIcon } from "lucide-react"; import Button from "@/components/ui/Button"; import TextAnimation from "@/components/ui/TextAnimation"; import ImageOrVideo from "@/components/ui/ImageOrVideo"; import GridOrCarousel from "@/components/ui/GridOrCarousel"; import { resolveIcon } from "@/utils/resolve-icon"; type FeatureItem = { icon: string | LucideIcon; title: string; description: string; mediaItems: [ ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never }), ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never }) ]; }; interface FeaturesDualMediaProps { tag: string; title: string; description: string; primaryButton?: { text: string; href: string }; secondaryButton?: { text: string; href: string }; items: FeatureItem[]; } const FeaturesDualMedia = ({ tag, title, description, primaryButton, secondaryButton, items, }: FeaturesDualMediaProps) => { return (
{tag} {(primaryButton || secondaryButton) && (
{primaryButton &&
)}
{items.map((item) => { const IconComponent = resolveIcon(item.icon); return (

{item.title}

{item.description}

{item.mediaItems.map((mediaItem, mediaIndex) => (
))}
); })}
); }; export default FeaturesDualMedia;