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)
// Fixed-height container guarantees identical Y for all pages
ZStack(alignment: .top) {
if ringPage == 0 {
VStack(spacing: 0) {
cascadingArrows cascadingArrows
.frame(height: 16) .frame(height: 16)
.padding(.bottom, 8) .padding(.bottom, 8)
.opacity(ringPage == 0 ? 1 : 0)
circleStatusRow circleStatusRow
.padding(.horizontal, AppTheme.hPad) .padding(.horizontal, AppTheme.hPad)
.padding(.bottom, 10) .padding(.bottom, 10)
.opacity(ringPage == 0 ? 1 : 0) }
}
}
.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) {