WebOS completion
This commit is contained in:
40
iOS/velocity-edge-phone/EdgeRootView.swift
Normal file
40
iOS/velocity-edge-phone/EdgeRootView.swift
Normal file
@@ -0,0 +1,40 @@
|
||||
import SwiftUI
|
||||
|
||||
enum EdgeSection: String, CaseIterable, Identifiable {
|
||||
case alerts = "Alerts"
|
||||
case leadSummary = "Lead Summary"
|
||||
case communications = "Communications"
|
||||
case notes = "Notes"
|
||||
case transcriptions = "Transcriptions"
|
||||
case settings = "Settings"
|
||||
|
||||
var id: String { rawValue }
|
||||
}
|
||||
|
||||
struct EdgeRootView: View {
|
||||
@State private var selectedSection: EdgeSection = .alerts
|
||||
|
||||
var body: some View {
|
||||
TabView(selection: $selectedSection) {
|
||||
EdgeAlertsView()
|
||||
.tabItem { Label("Alerts", systemImage: "bell.badge") }
|
||||
.tag(EdgeSection.alerts)
|
||||
EdgeLeadSummaryView()
|
||||
.tabItem { Label("Lead", systemImage: "person.text.rectangle") }
|
||||
.tag(EdgeSection.leadSummary)
|
||||
EdgeCommunicationsView()
|
||||
.tabItem { Label("Comms", systemImage: "phone.connection") }
|
||||
.tag(EdgeSection.communications)
|
||||
EdgeNotesView()
|
||||
.tabItem { Label("Notes", systemImage: "square.and.pencil") }
|
||||
.tag(EdgeSection.notes)
|
||||
EdgeTranscriptionsView()
|
||||
.tabItem { Label("Transcripts", systemImage: "waveform.badge.magnifyingglass") }
|
||||
.tag(EdgeSection.transcriptions)
|
||||
EdgeSettingsView()
|
||||
.tabItem { Label("Settings", systemImage: "gearshape") }
|
||||
.tag(EdgeSection.settings)
|
||||
}
|
||||
.tint(Color(red: 0.22, green: 0.60, blue: 0.98))
|
||||
}
|
||||
}
|
||||
56
iOS/velocity-edge-phone/EdgeScaffold.swift
Normal file
56
iOS/velocity-edge-phone/EdgeScaffold.swift
Normal file
@@ -0,0 +1,56 @@
|
||||
import SwiftUI
|
||||
|
||||
struct EdgeScaffold: View {
|
||||
let title: String
|
||||
let subtitle: String
|
||||
let actionLabel: String
|
||||
|
||||
var body: some View {
|
||||
ZStack {
|
||||
LinearGradient(
|
||||
colors: [
|
||||
Color(red: 0.03, green: 0.05, blue: 0.08),
|
||||
Color.black,
|
||||
],
|
||||
startPoint: .topLeading,
|
||||
endPoint: .bottomTrailing
|
||||
)
|
||||
.ignoresSafeArea()
|
||||
|
||||
VStack(alignment: .leading, spacing: 18) {
|
||||
Text(title)
|
||||
.font(.system(size: 30, weight: .bold))
|
||||
.foregroundStyle(.white)
|
||||
Text(subtitle)
|
||||
.font(.system(size: 14))
|
||||
.foregroundStyle(Color.white.opacity(0.7))
|
||||
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
Text("EDGE ACTION")
|
||||
.font(.system(size: 10, weight: .semibold))
|
||||
.tracking(1.4)
|
||||
.foregroundStyle(Color(red: 0.22, green: 0.60, blue: 0.98))
|
||||
Text(actionLabel)
|
||||
.font(.system(size: 18, weight: .semibold))
|
||||
.foregroundStyle(.white)
|
||||
Text("This narrow surface is ready for `/api/mobile-edge` hookup once auth, installs, and heartbeat registration are connected.")
|
||||
.font(.system(size: 13))
|
||||
.foregroundStyle(Color.white.opacity(0.72))
|
||||
}
|
||||
.padding(18)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.background(
|
||||
RoundedRectangle(cornerRadius: 22)
|
||||
.fill(Color.white.opacity(0.06))
|
||||
.overlay(
|
||||
RoundedRectangle(cornerRadius: 22)
|
||||
.stroke(Color.white.opacity(0.08), lineWidth: 1)
|
||||
)
|
||||
)
|
||||
|
||||
Spacer()
|
||||
}
|
||||
.padding(24)
|
||||
}
|
||||
}
|
||||
}
|
||||
11
iOS/velocity-edge-phone/Features/EdgeAlertsView.swift
Normal file
11
iOS/velocity-edge-phone/Features/EdgeAlertsView.swift
Normal file
@@ -0,0 +1,11 @@
|
||||
import SwiftUI
|
||||
|
||||
struct EdgeAlertsView: View {
|
||||
var body: some View {
|
||||
EdgeScaffold(
|
||||
title: "Alerts",
|
||||
subtitle: "Unread lead responses, callback urgency, and showroom event nudges for field operators.",
|
||||
actionLabel: "Respond to unread whale-lead thread"
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import SwiftUI
|
||||
|
||||
struct EdgeCommunicationsView: View {
|
||||
var body: some View {
|
||||
EdgeScaffold(
|
||||
title: "Communications",
|
||||
subtitle: "Calls, WhatsApp touchpoints, and imported operator activity in one surface.",
|
||||
actionLabel: "Log a manual communication note"
|
||||
)
|
||||
}
|
||||
}
|
||||
11
iOS/velocity-edge-phone/Features/EdgeLeadSummaryView.swift
Normal file
11
iOS/velocity-edge-phone/Features/EdgeLeadSummaryView.swift
Normal file
@@ -0,0 +1,11 @@
|
||||
import SwiftUI
|
||||
|
||||
struct EdgeLeadSummaryView: View {
|
||||
var body: some View {
|
||||
EdgeScaffold(
|
||||
title: "Lead Summary",
|
||||
subtitle: "Compact account memory, qualification signals, and next-best action.",
|
||||
actionLabel: "Review Mohammed Al-Rashid context"
|
||||
)
|
||||
}
|
||||
}
|
||||
11
iOS/velocity-edge-phone/Features/EdgeNotesView.swift
Normal file
11
iOS/velocity-edge-phone/Features/EdgeNotesView.swift
Normal file
@@ -0,0 +1,11 @@
|
||||
import SwiftUI
|
||||
|
||||
struct EdgeNotesView: View {
|
||||
var body: some View {
|
||||
EdgeScaffold(
|
||||
title: "Notes",
|
||||
subtitle: "Quick capture for memory facts, objections, and promised follow-ups.",
|
||||
actionLabel: "Save a note with memory extraction hints"
|
||||
)
|
||||
}
|
||||
}
|
||||
11
iOS/velocity-edge-phone/Features/EdgeSettingsView.swift
Normal file
11
iOS/velocity-edge-phone/Features/EdgeSettingsView.swift
Normal file
@@ -0,0 +1,11 @@
|
||||
import SwiftUI
|
||||
|
||||
struct EdgeSettingsView: View {
|
||||
var body: some View {
|
||||
EdgeScaffold(
|
||||
title: "Settings",
|
||||
subtitle: "Install registration, operator identity, and backend connection state.",
|
||||
actionLabel: "Verify surface heartbeat and app version"
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import SwiftUI
|
||||
|
||||
struct EdgeTranscriptionsView: View {
|
||||
var body: some View {
|
||||
EdgeScaffold(
|
||||
title: "Transcriptions",
|
||||
subtitle: "Imported voice artifacts and transcript summaries for field follow-up.",
|
||||
actionLabel: "Review pending recording import"
|
||||
)
|
||||
}
|
||||
}
|
||||
3
iOS/velocity-edge-phone/README.md
Normal file
3
iOS/velocity-edge-phone/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Velocity Edge Phone
|
||||
|
||||
SwiftUI scaffold for the narrow phone companion surface. This folder is intentionally source-first so it can be dropped into a new Xcode target without carrying repo-wide project changes during MVP.
|
||||
10
iOS/velocity-edge-phone/VelocityEdgePhoneApp.swift
Normal file
10
iOS/velocity-edge-phone/VelocityEdgePhoneApp.swift
Normal file
@@ -0,0 +1,10 @@
|
||||
import SwiftUI
|
||||
|
||||
@main
|
||||
struct VelocityEdgePhoneApp: App {
|
||||
var body: some Scene {
|
||||
WindowGroup {
|
||||
EdgeRootView()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user