// // HomeSupportViews.swift // suixinkan // // Created by Codex on 2026/6/22. // import SwiftUI extension HomeRoute { /// 将首页路由映射为真实页面或迁移占位页。 @ViewBuilder var destinationView: some View { switch self { case .profileSpace: ProfileView() case .scenicSelection: HomeScenicSelectionView() case .moreFunctions: HomeMoreFunctionsView() case let .modulePlaceholder(uri, title): HomeMigrationModuleView(title: title, uri: uri) } } } /// 首页迁移占位视图,用于承接尚未同步的功能入口。 struct HomeMigrationModuleView: View { let title: String let uri: String var body: some View { VStack(spacing: AppMetrics.Spacing.medium) { Image(systemName: "square.grid.2x2") .font(.system(size: 44, weight: .semibold)) .foregroundStyle(AppDesign.primary) Text(title) .font(.system(size: AppMetrics.FontSize.title2, weight: .semibold)) .foregroundStyle(AppDesign.textPrimary) Text(uri) .font(.system(size: AppMetrics.FontSize.subheadline)) .foregroundStyle(AppDesign.textSecondary) .lineLimit(2) .multilineTextAlignment(.center) .padding(.horizontal, AppMetrics.Spacing.large) } .frame(maxWidth: .infinity, maxHeight: .infinity) .background(Color(hex: 0xF5F7FA)) .navigationTitle(title) .navigationBarTitleDisplayMode(.inline) } } /// 首页景区选择视图,允许用户切换当前账号上下文中的景区。 struct HomeScenicSelectionView: View { @Environment(AccountContext.self) private var accountContext @Environment(\.dismiss) private var dismiss var body: some View { List(accountContext.scenicScopes) { scenic in Button { accountContext.selectScenic(id: scenic.id) dismiss() } label: { HStack { Text(scenic.name) .foregroundStyle(AppDesign.textPrimary) Spacer() if accountContext.currentScenic?.id == scenic.id { Image(systemName: "checkmark") .font(.system(size: AppMetrics.ControlSize.smallIcon, weight: .semibold)) .foregroundStyle(AppDesign.primary) } } } } .navigationTitle("景区选择") .navigationBarTitleDisplayMode(.inline) } }