From d14f0a34465a90a14877e7c56d0b78b6817f2beb Mon Sep 17 00:00:00 2001 From: Robin Kutesa Date: Fri, 22 May 2026 03:29:13 +0300 Subject: [PATCH] fix(backup): pixel-align page 1/2 stats to page 0 stats strip position Replace the hard-coded Color.clear(height:60) placeholder with the real cascadingArrows + circleStatusRow views set to opacity(0). Both are always laid out so they reserve the identical height on every page, guaranteeing the stats strip sits at the same Y coordinate regardless of active page. Co-Authored-By: Kutesir Co-Authored-By: Sentry --- Features/Backup/BackupView.swift | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Features/Backup/BackupView.swift b/Features/Backup/BackupView.swift index a45710b..eb3dc81 100644 --- a/Features/Backup/BackupView.swift +++ b/Features/Backup/BackupView.swift @@ -681,18 +681,15 @@ struct BackupView: View { } .padding(.bottom, 4) - if ringPage == 0 { - cascadingArrows - .frame(height: 16) - .padding(.bottom, 8) + cascadingArrows + .frame(height: 16) + .padding(.bottom, 8) + .opacity(ringPage == 0 ? 1 : 0) - circleStatusRow - .padding(.horizontal, AppTheme.hPad) - .padding(.bottom, 10) - } else { - // Match page 0 spacing so the ring stays at the same Y - Color.clear.frame(height: 60) - } + circleStatusRow + .padding(.horizontal, AppTheme.hPad) + .padding(.bottom, 10) + .opacity(ringPage == 0 ? 1 : 0) } // Pull zone floats above the ring on all pages .overlay(alignment: .top) {