updates
This commit is contained in:
@@ -6,7 +6,7 @@ struct WorkbenchReplacementApp: App {
|
||||
|
||||
var body: some Scene {
|
||||
WindowGroup("Workbench Replacement") {
|
||||
MainView()
|
||||
WorkbenchLaunchView()
|
||||
.environmentObject(model)
|
||||
.frame(minWidth: 1000, minHeight: 650)
|
||||
}
|
||||
@@ -297,3 +297,96 @@ struct WorkbenchSettingsView: View {
|
||||
.frame(height: 30)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// MARK: - Workbench Splash Screen
|
||||
|
||||
struct WorkbenchLaunchView: View {
|
||||
@State private var showingSplash = true
|
||||
|
||||
var body: some View {
|
||||
ZStack {
|
||||
MainView()
|
||||
|
||||
if showingSplash {
|
||||
WorkbenchSplashView()
|
||||
.transition(.opacity)
|
||||
.zIndex(10)
|
||||
}
|
||||
}
|
||||
.task {
|
||||
try? await Task.sleep(for: .seconds(3))
|
||||
|
||||
withAnimation(.easeOut(duration: 0.4)) {
|
||||
showingSplash = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct WorkbenchSplashView: View {
|
||||
var body: some View {
|
||||
VStack(spacing: 20) {
|
||||
Spacer()
|
||||
|
||||
if let path = Bundle.main.path(
|
||||
forResource: "WorkbenchBrand",
|
||||
ofType: "png"
|
||||
), let image = NSImage(contentsOfFile: path) {
|
||||
Image(nsImage: image)
|
||||
.resizable()
|
||||
.scaledToFit()
|
||||
.frame(width: 160, height: 160)
|
||||
}
|
||||
|
||||
Text("Workbench Replacement")
|
||||
.font(.system(size: 30, weight: .bold))
|
||||
|
||||
Text("Modern MySQL Client for macOS")
|
||||
.font(.system(size: 15))
|
||||
.foregroundStyle(.secondary)
|
||||
|
||||
HStack(spacing: 30) {
|
||||
feature("cylinder.split.1x2", "Schemas")
|
||||
feature("chevron.left.forwardslash.chevron.right", "SQL Editor")
|
||||
feature("tablecells", "Result Grid")
|
||||
feature("server.rack", "Connections")
|
||||
}
|
||||
.padding(.top, 20)
|
||||
|
||||
Spacer()
|
||||
|
||||
ProgressView()
|
||||
.frame(width: 260)
|
||||
|
||||
Text("Starting Workbench Replacement…")
|
||||
.font(.caption)
|
||||
.foregroundStyle(.secondary)
|
||||
.padding(.bottom, 30)
|
||||
}
|
||||
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
||||
.background(
|
||||
LinearGradient(
|
||||
colors: [
|
||||
Color(red: 0.96, green: 0.98, blue: 1),
|
||||
Color(red: 0.88, green: 0.93, blue: 1)
|
||||
],
|
||||
startPoint: .topLeading,
|
||||
endPoint: .bottomTrailing
|
||||
)
|
||||
)
|
||||
.preferredColorScheme(.light)
|
||||
}
|
||||
|
||||
private func feature(_ symbol: String, _ title: String) -> some View {
|
||||
VStack(spacing: 8) {
|
||||
Image(systemName: symbol)
|
||||
.font(.system(size: 24))
|
||||
.foregroundStyle(.blue)
|
||||
|
||||
Text(title)
|
||||
.font(.system(size: 12))
|
||||
}
|
||||
.frame(width: 90)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user