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