Implement initial song project domain models
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
import SwiftUI
|
||||
|
||||
@main
|
||||
struct MusicAssistantApp: App {
|
||||
var body: some Scene {
|
||||
WindowGroup {
|
||||
RootView()
|
||||
}
|
||||
.windowStyle(.titleBar)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
import MusicAssistantCore
|
||||
import SwiftUI
|
||||
|
||||
struct RootView: View {
|
||||
private let appName = "AI Music Studio"
|
||||
private let boundarySummary = ProductBoundarySummary.initial
|
||||
|
||||
var body: some View {
|
||||
NavigationSplitView {
|
||||
List {
|
||||
Label("Projects", systemImage: "music.note.list")
|
||||
Label("Settings", systemImage: "gearshape")
|
||||
}
|
||||
.navigationTitle(appName)
|
||||
} detail: {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
Text("New Song Project")
|
||||
.font(.largeTitle.weight(.semibold))
|
||||
|
||||
Text(boundarySummary.description)
|
||||
.font(.body)
|
||||
.foregroundStyle(.secondary)
|
||||
.frame(maxWidth: 560, alignment: .leading)
|
||||
|
||||
Divider()
|
||||
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
Text("Foundation status")
|
||||
.font(.headline)
|
||||
|
||||
Label("Presentation, Domain, Services, Integrations, and Persistence boundaries are separated.", systemImage: "checkmark.circle")
|
||||
Label("External providers are represented by protocols only.", systemImage: "lock.shield")
|
||||
Label("Secrets are expected from local environment configuration.", systemImage: "key")
|
||||
}
|
||||
.labelStyle(.titleAndIcon)
|
||||
}
|
||||
.padding(32)
|
||||
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Preview {
|
||||
RootView()
|
||||
}
|
||||
Reference in New Issue
Block a user