@using Core.Calculation @TimeSlotName @foreach (var team in Teams.OrderBy(e => e.ToString())) { var removed = !ScheduledTeams.Contains(team); @team - @foreach (var student in team.Students) { var overlap = StudentHasOverlaps(student); var isAbsent = AbsentStudents.Contains(student); var color = overlap ? Color.Warning : Color.Default; var suffix = GetStudentSuffix(overlap, isAbsent); if (student != team.Students.First()) { , }  @student.FirstName@suffix } } @code { [Parameter] public string TimeSlotName { get; set; } = string.Empty; [Parameter] public IEnumerable Teams { get; set; } = []; [Parameter] public IEnumerable ScheduledTeams { get; set; } = []; [Parameter] public IEnumerable AbsentStudents { get; set; } = []; [Parameter] public Func StudentHasOverlaps { get; set; } = null!; [Parameter] public EventCallback OnToggleTeam { get; set; } private string GetStudentSuffix(bool overlap, bool isAbsent) { var suffix = overlap ? "*" : ""; suffix += isAbsent ? " (absent)" : ""; return suffix; } }