index.tsx raw

   1  import { Button } from '@/components/ui/button'
   2  import { cn } from '@/lib/utils'
   3  import { RefreshCcw } from 'lucide-react'
   4  import { useState } from 'react'
   5  
   6  export function RefreshButton({ onClick }: { onClick: () => void }) {
   7    const [refreshing, setRefreshing] = useState(false)
   8  
   9    return (
  10      <Button
  11        variant="ghost"
  12        size="titlebar-icon"
  13        disabled={refreshing}
  14        onClick={() => {
  15          setRefreshing(true)
  16          onClick()
  17          setTimeout(() => setRefreshing(false), 500)
  18        }}
  19        className="text-muted-foreground focus:text-foreground [&_svg]:size-4"
  20      >
  21        <RefreshCcw className={cn(refreshing ? 'animate-spin' : '')} />
  22      </Button>
  23    )
  24  }
  25