diff --git a/frontend/src/components/heaps/HeapsPanel.tsx b/frontend/src/components/heaps/HeapsPanel.tsx index 4cf0bf0..75fd9cb 100644 --- a/frontend/src/components/heaps/HeapsPanel.tsx +++ b/frontend/src/components/heaps/HeapsPanel.tsx @@ -338,17 +338,13 @@ export function HeapsPanel() { )} - {/* Right-aligned cluster. Active indicator + count are - * always visible; set-active and kebab appear on hover - * to the RIGHT of the count, displacing it slightly so - * the count column lines up with the rest of the - * sidebar in the resting state. */} - {isActive && ( - - )} + {/* Right cluster. Count is the rightmost element in the + * resting state — set-active and kebab use display:none + * (not invisible) so they reserve no width until hover, + * keeping the count column aligned with the rest of the + * sidebar. The active heap is signaled by font-semibold + * on the name above; the standalone Target indicator + * was making heap counts sit left of the others. */} {heap.photo_count > 0 ? ( {heap.photo_count} @@ -362,7 +358,7 @@ export function HeapsPanel() { e.stopPropagation() setActiveMutation.mutate(heap.id) }} - className="invisible flex-shrink-0 rounded p-0.5 text-text-muted hover:bg-surface-offset hover:text-text group-hover:visible" + className="hidden flex-shrink-0 rounded p-0.5 text-text-muted hover:bg-surface-offset hover:text-text group-hover:block" title="Set as active heap (T target)" aria-label="Set as active heap" > @@ -372,16 +368,18 @@ export function HeapsPanel() { {/* Kebab menu — collects rename / duplicate / convert / * delete so the row stays compact. */} -
+