import SwiftUI struct TodoItemView: View { let todo: Todo let onToggle: () -> Void let onTap: () -> Void var body: some View { Button(action: onTap) { HStack(spacing: 12) { // Checkbox toggle Button(action: onToggle) { Image(systemName: todo.completed ? "checkmark.circle.fill" : "circle") .font(.title2) .foregroundStyle(todo.completed ? Color.accentColor : Color(.systemGray3)) } .buttonStyle(.plain) // Title and metadata VStack(alignment: .leading, spacing: 4) { Text(todo.title) .font(.body) .strikethrough(todo.completed) .foregroundStyle(todo.completed ? .secondary : .primary) .lineLimit(2) .multilineTextAlignment(.leading) HStack(spacing: 8) { // Category tag Text(todo.category) .font(.caption) .padding(.horizontal, 8) .padding(.vertical, 3) .background( Capsule() .fill(Color(.systemGray5)) ) .foregroundStyle(.secondary) // Priority dot and label HStack(spacing: 4) { Circle() .fill(priorityColor(todo.priority)) .frame(width: 8, height: 8) Text(todo.priority.displayName) .font(.caption) .foregroundStyle(.secondary) } } } Spacer() Image(systemName: "chevron.right") .font(.caption) .foregroundStyle(Color(.systemGray3)) } .padding(.vertical, 8) .padding(.horizontal, 16) .contentShape(Rectangle()) } .buttonStyle(.plain) } private func priorityColor(_ priority: Priority) -> Color { switch priority { case .low: return .green case .medium: return .orange case .high: return .red } } }