"use client"; import { useState, useEffect, type FC, type ReactNode } from "react"; import { motion, AnimatePresence, MotionConfig } from "motion/react"; import { ChevronUpIcon } from "lucide-react"; export interface ActivityItemType { icon: ReactNode; title: string; desc: string; time: string; } export interface ActivitiesCardProps { headerIcon: ReactNode; title: string; subtitle: string; activities: ActivityItemType[]; } const ActivityItem: FC = ({ icon, title, desc, time }) => { return (
{icon}

{title}

{desc}

{time}
); }; export const ActivitiesCard: FC = ({ headerIcon, title, subtitle, activities, }) => { const [open, setOpen] = useState(false); const [isMobile, setIsMobile] = useState(false); useEffect(() => { const checkMobile = () => setIsMobile(window.innerWidth < 640); checkMobile(); window.addEventListener("resize", checkMobile); return () => window.removeEventListener("resize", checkMobile); }, []); return ( setOpen(!open)} className="flex w-full items-center justify-between gap-2 px-3 py-2 transition-colors sm:gap-3 sm:px-4 sm:py-3.5" >
{headerIcon}
{title} {!open && ( {subtitle} )}
{open && (
{activities.map((item, i) => ( ))}
)}
); };