import SwiftUI struct CollectionsView: View { @Bindable var viewModel: BookmarksViewModel @Environment(\.dismiss) private var dismiss var body: some View { NavigationStack { Group { if viewModel.isGeneratingCollections { VStack(spacing: 16) { ProgressView() Text("Building smart collections…") .font(.system(size: 15)) .foregroundStyle(.secondary) } .frame(maxWidth: .infinity, maxHeight: .infinity) } else if viewModel.smartCollections.isEmpty { ContentUnavailableView( "No Collections Yet", systemImage: "sparkles", description: Text("Tap \"Smart Collections\" to group your bookmarks by topic.") ) } else { List(viewModel.smartCollections) { collection in Section { let items = viewModel.bookmarks.filter { collection.bookmarkIds.contains($0.id) } ForEach(items) { bookmark in BookmarkRow(bookmark: bookmark) .listRowInsets(EdgeInsets(top: 0, leading: 20, bottom: 0, trailing: 20)) } } header: { VStack(alignment: .leading, spacing: 2) { Text(collection.name) .font(.system(size: 14, weight: .semibold)) .foregroundStyle(.primary) if !collection.description.isEmpty { Text(collection.description) .font(.system(size: 12)) .foregroundStyle(.secondary) } } .padding(.vertical, 4) } } .listStyle(.insetGrouped) } } .navigationTitle("Smart Collections") .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .topBarLeading) { Button { Task { await viewModel.generateSmartCollections() } } label: { Image(systemName: "arrow.clockwise") } .disabled(viewModel.isGeneratingCollections) } ToolbarItem(placement: .topBarTrailing) { Button("Done") { dismiss() } } } } } }