'use client' | |
import type React from 'react' | |
import { motion, AnimatePresence } from 'framer-motion' | |
import { useStickToBottomContext } from 'use-stick-to-bottom' | |
import { Button } from '@/components/ui/button' | |
import Icon from '@/components/ui/icon' | |
const ScrollToBottom: React.FC = () => { | |
const { isAtBottom, scrollToBottom } = useStickToBottomContext() | |
return ( | |
<AnimatePresence> | |
{!isAtBottom && ( | |
<motion.div | |
initial={{ opacity: 0, y: 20 }} | |
animate={{ opacity: 1, y: 0 }} | |
exit={{ opacity: 0, y: 20 }} | |
transition={{ duration: 0.3, ease: 'easeInOut' }} | |
className="absolute bottom-4 left-1/2 -translate-x-1/2" | |
> | |
<Button | |
onClick={() => scrollToBottom()} | |
type="button" | |
size="icon" | |
variant="secondary" | |
className="border border-border bg-background text-primary shadow-md transition-shadow duration-300 hover:bg-background-secondary" | |
> | |
<Icon type="arrow-down" size="xs" /> | |
</Button> | |
</motion.div> | |
)} | |
</AnimatePresence> | |
) | |
} | |
export default ScrollToBottom | |