fix(backup): hard-lock status area to 66pt on all pages for consistent stat alignment

Replace opacity(0) approach with a ZStack(.frame(height:66)) container.
ZStack is empty on pages 1/2 but still allocates exactly 66pt, so the
page indicator and stats strip sit at the same absolute Y on every page.

Co-Authored-By: Kutesir <kutesir@provoc.ug>
Co-Authored-By: Sentry <sentry@provoc.ug>
This commit is contained in:
Robin Kutesa
2026-05-22 03:35:38 +03:00
parent d14f0a3446
commit 3df8b61e52

View File

@@ -681,15 +681,20 @@ struct BackupView: View {
} }
.padding(.bottom, 4) .padding(.bottom, 4)
cascadingArrows // Fixed-height container guarantees identical Y for all pages
.frame(height: 16) ZStack(alignment: .top) {
.padding(.bottom, 8) if ringPage == 0 {
.opacity(ringPage == 0 ? 1 : 0) VStack(spacing: 0) {
cascadingArrows
circleStatusRow .frame(height: 16)
.padding(.horizontal, AppTheme.hPad) .padding(.bottom, 8)
.padding(.bottom, 10) circleStatusRow
.opacity(ringPage == 0 ? 1 : 0) .padding(.horizontal, AppTheme.hPad)
.padding(.bottom, 10)
}
}
}
.frame(height: 66)
} }
// Pull zone floats above the ring on all pages // Pull zone floats above the ring on all pages
.overlay(alignment: .top) { .overlay(alignment: .top) {