@props([ 'groupBy' => 'priority', 'groupId' => null, 'label' => '', 'totalCount' => 0, 'statusCounts' => [], 'statusColumns' => [], 'expanded' => true, 'moreInfo' => null, 'timeAlert' => null ]) @php use Leantime\Domain\Tickets\Models\TicketDesignTokens; // Determine which icon component to use $iconComponent = match($groupBy) { 'priority' => 'thermometer-icon', 'storypoints' => 'tshirt-icon', 'effort' => 'tshirt-icon', 'editorId' => 'user-avatar', 'milestoneid' => 'milestone-icon', 'type' => 'type-icon', 'sprint' => 'sprint-icon', 'dueDate' => null, // No icon for due date buckets - label is sufficient default => null // Status and other groupings use FontAwesome icon below }; // For groupBy types without a component, use FontAwesome icon $faIcon = match($groupBy) { 'status' => 'fa-circle-dot', 'milestoneid' => null, // No icon for milestones 'dueDate' => null, // No icon for due date buckets - label is sufficient default => 'fa-layer-group' }; $iconProps = match($groupBy) { 'priority' => ['priority' => (int)$groupId], 'storypoints' => ['effort' => (float)$groupId], 'effort' => ['effort' => (float)$groupId], 'editorId' => ['userId' => $groupId, 'username' => $label], 'type' => ['type' => $groupId], default => ['label' => $label] }; // Effort groupby shows size label next to icon $effortLabel = ''; if (in_array($groupBy, ['storypoints', 'effort'])) { $effortLabel = TicketDesignTokens::getEffort((float)$groupId)['tshirtLabel'] ?? ''; } // Strip existing profileImage HTML from label for editorId (we use user-avatar component instead) if ($groupBy === 'editorId') { $label = preg_replace('/