Version 1.1 App Store

This commit is contained in:
Scarriffle
2026-05-25 10:21:11 +02:00
parent 7ca511d37f
commit 15d8e71d09
17 changed files with 478 additions and 71 deletions

View File

@@ -5,9 +5,22 @@ struct LibraryGridView: View {
var onRefresh: (() async -> Void)? = nil
var onSelect: (LibraryItem) -> Void
@AppStorage("libraryCoverSize") private var coverSize: Double = Self.defaultCoverSize
var body: some View {
#if os(macOS)
VStack(spacing: 0) {
zoomBar
gridContent
}
#else
gridContent
#endif
}
private var gridContent: some View {
ScrollView {
LazyVGrid(columns: gridColumns, spacing: 8) {
LazyVGrid(columns: gridColumns, spacing: gridSpacing) {
ForEach(items) { item in
LibraryItemCell(item: item)
.onTapGesture { onSelect(item) }
@@ -25,14 +38,59 @@ struct LibraryGridView: View {
#endif
}
#if os(macOS)
private var zoomBar: some View {
HStack(spacing: 8) {
Spacer()
Image(systemName: "rectangle.grid.3x2")
.font(.caption2)
.foregroundStyle(.secondary)
Slider(value: $coverSize, in: Self.minCoverSize...Self.maxCoverSize)
.frame(maxWidth: 220)
Image(systemName: "square")
.font(.caption2)
.foregroundStyle(.secondary)
}
.padding(.horizontal, 12)
.padding(.vertical, 4)
}
#endif
private var gridColumns: [GridItem] {
[GridItem(.adaptive(minimum: CGFloat(coverSize)), spacing: gridSpacing)]
}
private var gridSpacing: CGFloat {
#if os(iOS)
// 3 equal columns compact spacing for full height utilization
[GridItem(.flexible(), spacing: 8),
GridItem(.flexible(), spacing: 8),
GridItem(.flexible())]
return 8
#else
[GridItem(.adaptive(minimum: 180), spacing: 20)]
return 20
#endif
}
// MARK: - Cover-Größen-Defaults (plattformabhängig)
private static var defaultCoverSize: Double {
#if os(iOS)
return 110
#else
return 180
#endif
}
private static var minCoverSize: Double {
#if os(iOS)
return 80
#else
return 120
#endif
}
private static var maxCoverSize: Double {
#if os(iOS)
return 200
#else
return 320
#endif
}
}