feat(ui): UI 骨架基线 — 3 Tab + RecordSheet + Quick/Archive 流程占位
替换 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>
This commit is contained in:
61
体己/Features/Archive/ArchiveFlow.swift
Normal file
61
体己/Features/Archive/ArchiveFlow.swift
Normal file
@@ -0,0 +1,61 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user