diff --git a/frontend/src/components/activity/Activity.tsx b/frontend/src/components/activity/Activity.tsx index 48868a36e34..b8e223c3bcb 100644 --- a/frontend/src/components/activity/Activity.tsx +++ b/frontend/src/components/activity/Activity.tsx @@ -244,10 +244,19 @@ export function SingleActivityRenderer({ const rows = 5; const gapPx = 20; const box = container.getBoundingClientRect(); - const x = (box.width / cols) * (index % 3) + gapPx; - const y = (box.height / rows) * Math.floor(index / 3) + gapPx; - const width = box.width / cols - gapPx * (cols - 2); - const height = box.height / rows - gapPx * (rows - 2); + const row = Math.floor(index / 3); + const col = index % 3; + + // Calculate cell dimensions accounting for gaps + const cellWidth = (box.width - gapPx * (cols + 1)) / cols; + const cellHeight = Math.max(150, (box.height - gapPx * (rows + 1)) / rows); + + // Position with gaps + const x = gapPx + col * (cellWidth + gapPx); + const y = gapPx + row * (cellHeight + gapPx); + + const width = cellWidth; + const height = cellHeight; oldTranslation = activity.style.transform ?? ''; oldHeight = activity.style.height; @@ -390,16 +399,40 @@ export function SingleActivityRenderer({ {isOverview && ( - {icon} {title} + + {icon} + + + {title} + )} <> @@ -427,17 +460,18 @@ export function SingleActivityRenderer({ > {!hideTitleInHeader && ( <> - {icon} + {icon} {title} @@ -451,10 +485,19 @@ export function SingleActivityRenderer({ fontSize: '0.875rem', paddingX: 0.5, color: theme.palette.text.secondary, + display: 'flex', + alignItems: 'center', + gap: 0.5, + maxWidth: { xs: '80px', sm: '120px', md: 'none' }, + minWidth: 0, + overflow: 'hidden', + textOverflow: 'ellipsis', + whiteSpace: 'nowrap', + flexShrink: 1, })} > - - {cluster} + + {cluster} )} {!isOverview && ( @@ -1130,7 +1173,8 @@ export const ActivityBar = React.memo(function ({ position: 'relative', alignItems: 'center', display: 'flex', - minHeight: '56px', + flexWrap: 'nowrap', + minHeight: { xs: '80px', sm: '70px', md: '56px' }, overflowX: 'auto', scrollbarWidth: 'thin', })} @@ -1148,17 +1192,17 @@ export const ActivityBar = React.memo(function ({ borderTop: 0, borderColor: lastElement === it.id ? theme.palette.divider : 'transparent', background: lastElement === it.id ? theme.palette.background.default : 'transparent', + flexShrink: 0, })} >