import React from 'react'
import {
Tooltip,
TooltipContent,
TooltipProvider,
TooltipTrigger,
} from '@/components/ui/tooltip'
export type TaskStatus = 'todo' | 'in_progress' | 'done' | 'blocked'
interface StatusIconProps {
status: TaskStatus
showTooltip?: boolean
className?: string
size?: 'sm' | 'md' | 'lg'
}
const statusConfig = {
todo: {
icon: '⏳',
label: 'To Do',
description: 'Task is waiting to be started',
color: 'text-blue-400'
},
in_progress: {
icon: '🔄',
label: 'In Progress',
description: 'Task is currently being worked on',
color: 'text-purple-400'
},
done: {
icon: '✅',
label: 'Done',
description: 'Task has been completed',
color: 'text-green-400'
},
blocked: {
icon: '🚫',
label: 'Blocked',
description: 'Task cannot proceed due to dependencies or issues',
color: 'text-red-400'
}
}
export function StatusIcon({ status, showTooltip = true, className = '', size = 'md' }: StatusIconProps) {
const config = statusConfig[status]
const sizeClasses = {
sm: 'text-sm',
md: 'text-base',
lg: 'text-lg'
}
const iconElement = (
{config.icon}
)
if (!showTooltip) {
return iconElement
}
return (
{iconElement}
{config.label}
{config.description}
)
}
// Helper function to get just the icon without tooltip (for backwards compatibility)
export function getStatusIcon(status: TaskStatus): string {
return statusConfig[status]?.icon || '❓'
}
// Helper function to get status color
export function getStatusColor(status: TaskStatus): string {
return statusConfig[status]?.color || 'text-gray-400'
}
// Helper function to get status label
export function getStatusLabel(status: TaskStatus): string {
return statusConfig[status]?.label || 'Unknown'
}