Problem
The import sheet (Backups → Restore → Import Backup / Import & Merge / Import & Override) doesn't match the rest of the app. The Restore page that opens it has a BackupHeroHeader, but every screen inside the sheet uses the older style: grey section headers, PlaceholderView cards, long footers and almost no animation or haptics.
The model to follow is the backup password screen (BackupKeyChangeView), and the App Lock Password screens that share its style:
- A centred
BackupHeroHeader with a large symbol, a title and a short subtitle. It sits in its own section, and the title stays inline.
- The field or action that matters most comes straight after it.
- Status and errors appear as a short label in the section footer, not as a card that replaces the screen.
- Success replaces the form with a green hero header that bounces once (
bouncesOnAppear), plus .sensoryFeedback(.success).
- Changes between states use
.snappy animations. Wrong passwords use wrongPasswordFeedback(trigger:) (a shake and an error haptic).
The screens in the flow, with their sub-issues:
- VAULT-78: the source picker, the root of
BackupImportFlowView, with "Automatic Import" (PDF) and "QR Code Import".
- VAULT-79: Decrypt Backup (
BackupKeyDecryptorView).
- VAULT-80: the QR code scanner (
BackupImportCodeScannerView + BackupImportCodeStateVisualizerView).
- VAULT-81: Ready to Import, and the Imported confirmation:
readyToImportView in BackupImportFlowView.
Plan
The sub-issues are in build order, and each is one PR. VAULT-78 comes first because it sets the pattern for the rest.
Keep the animations modest ("a bit"): a bounce or a symbol swap at the moments that matter, a haptic, and smooth changes between states. Don't add new scenes. Everything has to respect Reduce Motion, as EncryptedItemDetailView and wrongPasswordFeedback already do.
Done when
- Every sub-issue is done.
- Walking through a PDF import and a QR import on a device feels like the same app as setting a backup password.
- The snapshot tests for the import screens are re-recorded, with the Dynamic Type sizes
BackupKeyChangeViewSnapshotTests uses (xSmall, medium, xxLarge; light and dark).
Related: VAULT-1 and VAULT-5 (the backup password screen this copies), VAULT-20 (the Restore page header), VAULT-71 (the shield marks the backup password).