projects/deliberation_at_scale/packages/frontend/components/ChatActions.tsx (35 lines of code) (raw):

"use client"; import { motion, AnimatePresence } from 'framer-motion'; import { RoomAction } from '@/hooks/useRoomActions'; import Button from './Button'; interface Props { actions: RoomAction[]; } export default function ChatActions(props: Props) { const { actions } = props; const variants = { hidden: { opacity: 0, y: 50 }, visible: { opacity: 1, y: 0 }, exit: { opacity: 0, x: -50 }, }; return ( <div className="flex flex-col gap-2"> <AnimatePresence> {actions.map((action) => { const { id, icon, title, onClick } = action; return ( <motion.div key={id} variants={variants} initial="hidden" animate="visible" exit="exit" > <Button icon={icon} onClick={onClick}>{title}</Button> </motion.div> ); })} </AnimatePresence> </div> ); }