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:
60
体己/Features/Quick/QuickCaptureFlow.swift
Normal file
60
体己/Features/Quick/QuickCaptureFlow.swift
Normal file
@@ -0,0 +1,60 @@
|
||||
import SwiftUI
|
||||
|
||||
private enum QuickStep: Hashable {
|
||||
case viewfinder
|
||||
case confirm
|
||||
case batch
|
||||
}
|
||||
|
||||
struct QuickCaptureFlow: View {
|
||||
var onClose: () -> Void
|
||||
|
||||
@State private var step: QuickStep = .viewfinder
|
||||
@State private var snapCount = 0
|
||||
|
||||
var body: some View {
|
||||
ZStack {
|
||||
switch step {
|
||||
case .viewfinder:
|
||||
A1ViewfinderView(
|
||||
onShoot: {
|
||||
snapCount += 1
|
||||
withAnimation(.easeInOut(duration: 0.25)) { step = .confirm }
|
||||
},
|
||||
onClose: onClose
|
||||
)
|
||||
.transition(.opacity)
|
||||
|
||||
case .confirm:
|
||||
A2ConfirmView(
|
||||
onSave: {
|
||||
if snapCount >= 2 {
|
||||
withAnimation { step = .batch }
|
||||
} else {
|
||||
onClose()
|
||||
}
|
||||
},
|
||||
onNext: {
|
||||
withAnimation { step = .viewfinder }
|
||||
},
|
||||
onBack: {
|
||||
withAnimation { step = .viewfinder }
|
||||
}
|
||||
)
|
||||
.transition(.opacity)
|
||||
|
||||
case .batch:
|
||||
A3BatchView(
|
||||
onAddMore: {
|
||||
withAnimation { step = .viewfinder }
|
||||
},
|
||||
onFinish: onClose,
|
||||
onBack: {
|
||||
withAnimation { step = .confirm }
|
||||
}
|
||||
)
|
||||
.transition(.opacity)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user