feat(ui): replace loading indicators with Apple-style LoadingSpinner
- Add LoadingSpinner component with small/medium/large sizes using system gray color - Add LoadingPlaceholder for skeleton loading states - Add LoadingSheet for full-screen blocking overlays - Replace ThemedSpinner/ThemedSpinnerCompact across all views - Remove deprecated loading components from AnimatedComponents.swift - Delete LoadingTextGenerator.swift - Fix PhotoImportView layout to fill full width Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -23,7 +23,7 @@ struct PhotoImportView: View {
|
||||
|
||||
var body: some View {
|
||||
NavigationStack {
|
||||
VStack(spacing: 0) {
|
||||
Group {
|
||||
if viewModel.isProcessing {
|
||||
processingView
|
||||
} else if viewModel.processedPhotos.isEmpty {
|
||||
@@ -32,6 +32,7 @@ struct PhotoImportView: View {
|
||||
resultsView
|
||||
}
|
||||
}
|
||||
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
||||
.themedBackground()
|
||||
.navigationTitle("Import from Photos")
|
||||
.navigationBarTitleDisplayMode(.inline)
|
||||
@@ -161,15 +162,17 @@ struct PhotoImportView: View {
|
||||
VStack(spacing: Theme.Spacing.lg) {
|
||||
Spacer()
|
||||
|
||||
ThemedSpinner(size: 50, lineWidth: 4)
|
||||
LoadingSpinner(size: .large)
|
||||
|
||||
Text("Processing photos...")
|
||||
.font(.body)
|
||||
.foregroundStyle(Theme.textSecondary(colorScheme))
|
||||
VStack(spacing: Theme.Spacing.xs) {
|
||||
Text("Processing Photos")
|
||||
.font(.headline)
|
||||
.foregroundStyle(Theme.textPrimary(colorScheme))
|
||||
|
||||
Text("\(viewModel.processedCount) of \(viewModel.totalCount) photos")
|
||||
.font(.subheadline)
|
||||
.foregroundStyle(Theme.textMuted(colorScheme))
|
||||
Text("\(viewModel.processedCount) of \(viewModel.totalCount)")
|
||||
.font(.subheadline)
|
||||
.foregroundStyle(Theme.textSecondary(colorScheme))
|
||||
}
|
||||
|
||||
Spacer()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user