import { RefreshCw } from 'lucide-react';
import { Button, ButtonProps } from './button';

interface RefreshButtonProps extends Omit<ButtonProps, 'loading' | 'loadingText'> {
  onRefresh: () => void | Promise<void>;
  isLoading?: boolean;
  children?: React.ReactNode;
}

export const RefreshButton = ({
  onRefresh,
  isLoading = false,
  size = 'default',
  variant = 'outline',
  children = 'Refresh',
  className,
  ...props
}: RefreshButtonProps) => {
  return (
    <Button
      variant={variant}
      size={size}
      onClick={onRefresh}
      loading={isLoading}
      loadingText="Refreshing..."
      className={className}
      trackingLabel="refresh-data"
      {...props}
    >
      <RefreshCw className="w-4 h-4 mr-2" />
      {children}
    </Button>
  );
};
