Files
steipete--codexbar/Sources/CodexBar/PreferencesProviderErrorView.swift
T
2026-07-13 12:22:33 +08:00

54 lines
1.6 KiB
Swift

import SwiftUI
struct ProviderErrorDisplay {
let preview: String
let full: String
}
@MainActor
struct ProviderErrorView: View {
let title: String
let display: ProviderErrorDisplay
@Binding var isExpanded: Bool
let onCopy: () -> Void
var body: some View {
VStack(alignment: .leading, spacing: 6) {
HStack(alignment: .firstTextBaseline, spacing: 8) {
Text(self.title)
.font(.footnote.weight(.semibold))
.foregroundStyle(.secondary)
Spacer()
Button {
self.onCopy()
} label: {
Image(systemName: "doc.on.doc")
}
.buttonStyle(.plain)
.foregroundStyle(.secondary)
.help(L("Copy error"))
}
Text(self.display.preview)
.font(.footnote)
.foregroundStyle(.secondary)
.lineLimit(3)
.fixedSize(horizontal: false, vertical: true)
if self.display.preview != self.display.full {
Button(self.isExpanded ? L("Hide details") : L("Show details")) { self.isExpanded.toggle() }
.buttonStyle(.link)
.font(.footnote)
}
if self.isExpanded {
Text(self.display.full)
.font(.footnote)
.textSelection(.enabled)
.fixedSize(horizontal: false, vertical: true)
}
}
.padding(.leading, 2)
}
}