Files
ABS-Client/ABS Client/Audiobookshelf swift/Views/LibraryGridView.swift
2026-05-17 21:06:59 +02:00

39 lines
1.0 KiB
Swift

import SwiftUI
struct LibraryGridView: View {
let items: [LibraryItem]
var onRefresh: (() async -> Void)? = nil
var onSelect: (LibraryItem) -> Void
var body: some View {
ScrollView {
LazyVGrid(columns: gridColumns, spacing: 8) {
ForEach(items) { item in
LibraryItemCell(item: item)
.onTapGesture { onSelect(item) }
}
}
#if os(iOS)
.padding(.horizontal, 8)
.padding(.vertical, 4)
#else
.padding(20)
#endif
}
#if os(iOS)
.refreshable { await onRefresh?() }
#endif
}
private var gridColumns: [GridItem] {
#if os(iOS)
// 3 equal columns compact spacing for full height utilization
[GridItem(.flexible(), spacing: 8),
GridItem(.flexible(), spacing: 8),
GridItem(.flexible())]
#else
[GridItem(.adaptive(minimum: 180), spacing: 20)]
#endif
}
}