← back to Wine Finder Next

components/EmptyState.tsx

30 lines

interface EmptyStateProps {
  icon: string
  title: string
  message: string
  action?: {
    label: string
    onClick: () => void
  }
}

export default function EmptyState({ icon, title, message, action }: EmptyStateProps) {
  return (
    <div className="text-center py-16 px-4 animate-scale-in">
      <div className="max-w-md mx-auto">
        <div className="text-7xl mb-6 animate-bounce-subtle">{icon}</div>
        <h3 className="text-2xl font-bold text-gray-900 mb-3">{title}</h3>
        <p className="text-gray-600 mb-8 text-lg">{message}</p>
        {action && (
          <button
            onClick={action.onClick}
            className="px-8 py-3 bg-gradient-to-r from-wine-600 to-burgundy-600 text-white font-semibold rounded-full hover:from-wine-700 hover:to-burgundy-700 transition-all duration-300 hover:shadow-wine-lg transform hover:scale-105 min-h-[44px]"
          >
            {action.label}
          </button>
        )}
      </div>
    </div>
  )
}