Reorganize targets into LuminateUI with Components and Utilities
This commit is contained in:
parent
cd2c435a04
commit
662ec0caac
19 changed files with 56 additions and 63 deletions
|
|
@ -59,26 +59,7 @@ let package = Package(
|
||||||
.product(name: "Adwaita", package: "adwaita-swift"),
|
.product(name: "Adwaita", package: "adwaita-swift"),
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
.target(
|
|
||||||
name: "LuminateHome",
|
|
||||||
dependencies: [
|
|
||||||
"LuminateCore",
|
|
||||||
"LuminateDI",
|
|
||||||
"LuminateUI",
|
|
||||||
"LuminateObservationMacros",
|
|
||||||
.product(name: "Adwaita", package: "adwaita-swift"),
|
|
||||||
]
|
|
||||||
),
|
|
||||||
.target(
|
|
||||||
name: "LuminateLibrary",
|
|
||||||
dependencies: [
|
|
||||||
"LuminateCore",
|
|
||||||
"LuminateDI",
|
|
||||||
"LuminateUI",
|
|
||||||
"LuminateObservationMacros",
|
|
||||||
.product(name: "Adwaita", package: "adwaita-swift"),
|
|
||||||
]
|
|
||||||
),
|
|
||||||
.target(
|
.target(
|
||||||
name: "LuminatePlayer",
|
name: "LuminatePlayer",
|
||||||
dependencies: [
|
dependencies: [
|
||||||
|
|
@ -92,8 +73,6 @@ let package = Package(
|
||||||
.executableTarget(
|
.executableTarget(
|
||||||
name: "Luminate",
|
name: "Luminate",
|
||||||
dependencies: [
|
dependencies: [
|
||||||
"LuminateHome",
|
|
||||||
"LuminateLibrary",
|
|
||||||
"LuminatePlayer",
|
"LuminatePlayer",
|
||||||
"LuminateUI",
|
"LuminateUI",
|
||||||
"LuminateDI",
|
"LuminateDI",
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,6 @@ import Adwaita
|
||||||
import Foundation
|
import Foundation
|
||||||
import LuminateCore
|
import LuminateCore
|
||||||
import LuminateDI
|
import LuminateDI
|
||||||
import LuminateHome
|
|
||||||
import LuminateLibrary
|
|
||||||
import LuminatePlayer
|
import LuminatePlayer
|
||||||
import LuminateUI
|
import LuminateUI
|
||||||
|
|
||||||
|
|
@ -20,6 +18,7 @@ struct Luminate: App {
|
||||||
if let store = try? SQLiteStore(dbURL: SQLiteStore.defaultDatabaseURL()) {
|
if let store = try? SQLiteStore(dbURL: SQLiteStore.defaultDatabaseURL()) {
|
||||||
DIContainer.shared.register(\.persistence, value: store)
|
DIContainer.shared.register(\.persistence, value: store)
|
||||||
}
|
}
|
||||||
|
DIContainer.shared.register(\.imageService, value: ImageService())
|
||||||
DIContainer.shared.register(\.pageAnimationTracker, value: PageAnimationTracker())
|
DIContainer.shared.register(\.pageAnimationTracker, value: PageAnimationTracker())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -41,9 +40,6 @@ struct Luminate: App {
|
||||||
ServerSetupView { client, id in
|
ServerSetupView { client, id in
|
||||||
DIContainer.shared.register(\.client, value: client)
|
DIContainer.shared.register(\.client, value: client)
|
||||||
DIContainer.shared.register(\.userId, value: id)
|
DIContainer.shared.register(\.userId, value: id)
|
||||||
DIContainer.shared.register(\.imageService, value: ImageService())
|
|
||||||
DIContainer.shared.register(
|
|
||||||
\.pageAnimationTracker, value: PageAnimationTracker())
|
|
||||||
|
|
||||||
self.client = client
|
self.client = client
|
||||||
self.userId = id
|
self.userId = id
|
||||||
|
|
@ -75,8 +71,6 @@ struct Luminate: App {
|
||||||
|
|
||||||
DIContainer.shared.register(\.client, value: client)
|
DIContainer.shared.register(\.client, value: client)
|
||||||
DIContainer.shared.register(\.userId, value: auth.userId)
|
DIContainer.shared.register(\.userId, value: auth.userId)
|
||||||
DIContainer.shared.register(\.imageService, value: ImageService())
|
|
||||||
DIContainer.shared.register(\.pageAnimationTracker, value: PageAnimationTracker())
|
|
||||||
|
|
||||||
self.client = client
|
self.client = client
|
||||||
self.userId = auth.userId
|
self.userId = auth.userId
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import Adwaita
|
import Adwaita
|
||||||
import LuminateCore
|
import LuminateCore
|
||||||
import LuminateDI
|
import LuminateDI
|
||||||
|
import LuminateUI
|
||||||
|
|
||||||
public struct HomeView: View {
|
public struct HomeView: View {
|
||||||
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
import Adwaita
|
import Adwaita
|
||||||
import LuminateCore
|
import LuminateCore
|
||||||
|
import LuminateUI
|
||||||
|
|
||||||
public struct LibraryPage: View {
|
public struct LibraryPage: View {
|
||||||
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
import Adwaita
|
|
||||||
import Foundation
|
|
||||||
import LuminateCore
|
|
||||||
|
|
||||||
struct LibraryGrid: View {
|
|
||||||
|
|
||||||
var libraries: [Components.Schemas.BaseItemDto]
|
|
||||||
@Binding var navigation: NavigationStack<Page>
|
|
||||||
var title: String?
|
|
||||||
|
|
||||||
var view: Body {
|
|
||||||
VStack(spacing: 16) {
|
|
||||||
Text(title ?? "Libraries")
|
|
||||||
.title3()
|
|
||||||
.halign(.start)
|
|
||||||
.padding(10, .horizontal)
|
|
||||||
FlowBox(libraries) { library in
|
|
||||||
HomePosterCell(item: library)
|
|
||||||
}
|
|
||||||
.columnSpacing(16)
|
|
||||||
.rowSpacing(16)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
import Adwaita
|
|
||||||
import LuminateCore
|
|
||||||
|
|
||||||
public struct LuminateLibrary {}
|
|
||||||
34
Sources/LuminateUI/Components/LibraryGrid.swift
Normal file
34
Sources/LuminateUI/Components/LibraryGrid.swift
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
import Adwaita
|
||||||
|
import Foundation
|
||||||
|
import LuminateCore
|
||||||
|
|
||||||
|
public struct LibraryGrid: View {
|
||||||
|
|
||||||
|
public var libraries: [Components.Schemas.BaseItemDto]
|
||||||
|
@Binding public var navigation: NavigationStack<Page>
|
||||||
|
public var title: String?
|
||||||
|
|
||||||
|
public init(
|
||||||
|
libraries: [Components.Schemas.BaseItemDto],
|
||||||
|
navigation: Binding<NavigationStack<Page>>,
|
||||||
|
title: String? = nil
|
||||||
|
) {
|
||||||
|
self.libraries = libraries
|
||||||
|
_navigation = navigation
|
||||||
|
self.title = title
|
||||||
|
}
|
||||||
|
|
||||||
|
public var view: Body {
|
||||||
|
VStack(spacing: 16) {
|
||||||
|
Text(title ?? "Libraries")
|
||||||
|
.title3()
|
||||||
|
.halign(.start)
|
||||||
|
.padding(10, .horizontal)
|
||||||
|
FlowBox(libraries) { library in
|
||||||
|
HomePosterCell(item: library)
|
||||||
|
}
|
||||||
|
.columnSpacing(16)
|
||||||
|
.rowSpacing(16)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,14 +2,26 @@ import Adwaita
|
||||||
import Foundation
|
import Foundation
|
||||||
import LuminateCore
|
import LuminateCore
|
||||||
|
|
||||||
struct MediaRow: View {
|
public struct MediaRow: View {
|
||||||
|
|
||||||
var title: String
|
public var title: String
|
||||||
var items: [Components.Schemas.BaseItemDto]
|
public var items: [Components.Schemas.BaseItemDto]
|
||||||
@Binding var navigation: NavigationStack<Page>
|
@Binding public var navigation: NavigationStack<Page>
|
||||||
var onSeeAll: (() -> Void)?
|
public var onSeeAll: (() -> Void)?
|
||||||
|
|
||||||
var view: Body {
|
public init(
|
||||||
|
title: String,
|
||||||
|
items: [Components.Schemas.BaseItemDto],
|
||||||
|
navigation: Binding<NavigationStack<Page>>,
|
||||||
|
onSeeAll: (() -> Void)? = nil
|
||||||
|
) {
|
||||||
|
self.title = title
|
||||||
|
self.items = items
|
||||||
|
_navigation = navigation
|
||||||
|
self.onSeeAll = onSeeAll
|
||||||
|
}
|
||||||
|
|
||||||
|
public var view: Body {
|
||||||
VStack(spacing: 16) {
|
VStack(spacing: 16) {
|
||||||
HStack {
|
HStack {
|
||||||
Text(title)
|
Text(title)
|
||||||
Loading…
Reference in a new issue