- Integrate Kingfisher for image caching with CachedAsyncImage component - Add CacheSettingsView for managing image cache size and clearing cache - Implement three card layout styles: compact, magazine (default), natural - Add AppearanceSettingsView with visual layout previews and theme settings - Create Clean Architecture for card layout with domain models and use cases - Implement FlowLayout for dynamic label width calculation - Add skeleton loading animation for initial bookmark loads - Replace delete confirmation dialogs with immediate delete + 3-second undo - Support multiple simultaneous undo operations with individual progress bars - Add grayed-out visual feedback for pending deletions - Centralize notification names in dedicated NotificationNames file - Remove pagination logic from label management (replaced with FlowLayout) - Update AsyncImage usage across BookmarkCardView, BookmarkDetailView, ImageViewerView - Improve UI consistency and spacing throughout the app
29 lines
711 B
Swift
29 lines
711 B
Swift
import Foundation
|
|
|
|
enum CardLayoutStyle: String, CaseIterable, Codable {
|
|
case compact = "compact"
|
|
case magazine = "magazine"
|
|
case natural = "natural"
|
|
|
|
var displayName: String {
|
|
switch self {
|
|
case .compact:
|
|
return "Compact"
|
|
case .magazine:
|
|
return "Magazine"
|
|
case .natural:
|
|
return "Natural"
|
|
}
|
|
}
|
|
|
|
var description: String {
|
|
switch self {
|
|
case .compact:
|
|
return "Small thumbnails with content focus"
|
|
case .magazine:
|
|
return "Fixed height headers for consistent layout"
|
|
case .natural:
|
|
return "Images in original aspect ratio"
|
|
}
|
|
}
|
|
} |