替换 Xcode 默认模板: - 删除 ContentView/Item/__App - 新增 App/TijiApp(SwiftData ModelContainer)、RootView(3 Tab + RecordSheet) - DesignSystem:Tokens(色板/字体/圆角)+ Components(卡片/按钮/Chip) - Models:Indicator / Report / DiaryEntry @Model 初版 - Features:Home / Quick(A1-A3)/ Archive(B1-B5)/ Record / Trends / Me 静态 UI W2 AI 基座工作将在此基线上叠加。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
62 lines
1.7 KiB
Swift
62 lines
1.7 KiB
Swift
import SwiftUI
|
|
|
|
private enum ArchiveStep: Hashable {
|
|
case guide
|
|
case scan
|
|
case meta
|
|
case progress
|
|
case result
|
|
}
|
|
|
|
struct ArchiveFlow: View {
|
|
var onClose: () -> Void
|
|
|
|
@State private var step: ArchiveStep = .guide
|
|
@State private var capturedPages: Int = 1
|
|
@State private var totalPages: Int = 3
|
|
|
|
var body: some View {
|
|
ZStack {
|
|
switch step {
|
|
case .guide:
|
|
B1GuideView(
|
|
onSingle: { withAnimation { totalPages = 1; step = .scan } },
|
|
onMulti: { withAnimation { totalPages = 3; step = .scan } },
|
|
onSkip: onClose
|
|
)
|
|
.transition(.opacity)
|
|
|
|
case .scan:
|
|
B2ScanView(
|
|
onShoot: { capturedPages = min(capturedPages + 1, totalPages) },
|
|
onDone: { withAnimation { step = .meta } },
|
|
onClose: onClose,
|
|
page: capturedPages,
|
|
total: totalPages
|
|
)
|
|
.transition(.opacity)
|
|
|
|
case .meta:
|
|
B3MetaView(
|
|
onAnalyze: { withAnimation { step = .progress } },
|
|
onBack: { withAnimation { step = .scan } }
|
|
)
|
|
.transition(.opacity)
|
|
|
|
case .progress:
|
|
B4ProgressView(onComplete: {
|
|
withAnimation { step = .result }
|
|
})
|
|
.transition(.opacity)
|
|
|
|
case .result:
|
|
B5ResultView(
|
|
onSave: onClose,
|
|
onBack: { withAnimation { step = .meta } }
|
|
)
|
|
.transition(.opacity)
|
|
}
|
|
}
|
|
}
|
|
}
|