Visual feedback system that enlarges timeline event icons when active (expanded).
- Container: 48px × 48px
- Icon: 24px × 24px (h-6 w-6)
- Border: 2px
- Shadow: sm
- Scale: 1.0
- Container: 56px × 56px
- Icon: 28px × 28px (h-7 w-7)
- Border: 4px
- Shadow: lg
- Scale: 1.1 (10% larger)
- Duration: 300ms
- Timing: ease-in-out
- Smooth GPU-accelerated transitions
<div style={{ width: isExpanded ? '56px' : '48px' }}>
<div className={`
${isExpanded ? 'w-14 h-14' : 'w-12 h-12'}
${isExpanded ? 'border-4 shadow-lg scale-110' : 'border-2 shadow-sm'}
transition-all duration-300 ease-in-out
`}>
{getTimelineIcon(item, stateClasses.iconColor, isExpanded)}
</div>
</div>const getTimelineIcon = (item, iconColorClass, isExpanded = false) => {
const iconSize = isExpanded ? 'h-7 w-7' : 'h-6 w-6';
const transitionClass = 'transition-all duration-300 ease-in-out';
return <Icon className={`${iconSize} ${iconColorClass} ${transitionClass}`} />;
};- Activate: User clicks timeline event
- Deactivate: User clicks same event or different event
✅ Inactive (Gray) ✅ Urgent (Red) ✅ Active (Blue) ✅ Completed (Green) ✅ Personal Task (Yellow)
✓ Clear visual feedback ✓ Improved user orientation ✓ Smooth, professional animations ✓ Works across all event types ✓ Performance optimized
npm run build # ✅ Successfulsrc/components/BusinessUnitDetail.tsx- Icon container: Dynamic width and styling
- getTimelineIcon: Added isExpanded parameter
Open TIMELINE_ACTIVE_STATE_DEMO.html in browser to see interactive demo.