'use client' | |
import * as React from 'react' | |
import { cn } from '@/lib/utils' | |
import { useAtBottom } from '@/lib/hooks/use-at-bottom' | |
import { Button, type ButtonProps } from '@/components/ui/button' | |
import { IconArrowDown } from '@/components/ui/icons' | |
export function ButtonScrollToBottom({ className, ...props }: ButtonProps) { | |
const isAtBottom = useAtBottom() | |
return ( | |
<Button | |
variant="outline" | |
size="icon" | |
className={cn( | |
'fixed right-4 bottom-24 z-50 bg-background transition-opacity duration-300 sm:right-20', | |
isAtBottom ? 'opacity-0' : 'opacity-100', | |
className | |
)} | |
onClick={() => | |
window.scrollTo({ | |
top: document.body.offsetHeight, | |
behavior: 'smooth' | |
}) | |
} | |
{...props} | |
> | |
<IconArrowDown /> | |
<span className="sr-only">Scroll to bottom</span> | |
</Button> | |
) | |
} | |