import SwiftUI struct FilledSlotView: View { let dishName: String let dishDescription: String? let tags: [(name: String, color: String)] let mealType: MealType var showsRuleWarning: Bool = false var onRemove: (() -> Void)? var body: some View { VStack(alignment: .leading, spacing: 4) { HStack { Image(systemName: mealType.icon) .font(.system(size: 12)) .foregroundColor(.mealMoodTextSecondary) if showsRuleWarning { Image(systemName: "exclamationmark.triangle.fill") .font(.system(size: 12)) .foregroundColor(.mealMoodWarning) } Spacer() if onRemove != nil { Button { onRemove?() } label: { Image(systemName: "xmark.circle.fill") .font(.system(size: 14)) .foregroundColor(.mealMoodTextSecondary.opacity(0.5)) } } } Text(dishName) .font(.system(size: 13, weight: .semibold)) .foregroundColor(.mealMoodTextPrimary) .lineLimit(1) .minimumScaleFactor(0.75) .frame(maxWidth: .infinity, alignment: .leading) HStack(spacing: 3) { ForEach(Array(tags.prefix(2).enumerated()), id: \.offset) { _, tag in TagDot(color: tag.color, size: 9) } if tags.count > 2 { Text("+\(tags.count - 2)") .font(.system(size: 10, weight: .medium)) .foregroundColor(.mealMoodTextSecondary) } } } .padding(10) .frame(maxWidth: .infinity, minHeight: 80, alignment: .topLeading) .mealCardStyle() } }