Full interactive terminal via SwiftTerm, About sheet, English docs

This commit is contained in:
x3
2026-09-22 10:19:25 +02:00
parent d0855ab45d
commit c657ec2825
15 changed files with 584 additions and 650 deletions
+31 -23
View File
@@ -1,25 +1,26 @@
import SwiftUI
import AppKit
import SwiftTerm
/// Offizielle Dracula-Palette (https://draculatheme.com/contribute).
enum Dracula {
static let background = Color(hex: "282A36")
static let currentLine = Color(hex: "44475A")
static let foreground = Color(hex: "F8F8F2")
static let comment = Color(hex: "6272A4")
static let cyan = Color(hex: "8BE9FD")
static let green = Color(hex: "50FA7B")
static let orange = Color(hex: "FFB86C")
static let pink = Color(hex: "FF79C6")
static let purple = Color(hex: "BD93F9")
static let red = Color(hex: "FF5555")
static let yellow = Color(hex: "F1FA8C")
static let background = SwiftUI.Color(hex: "282A36")
static let currentLine = SwiftUI.Color(hex: "44475A")
static let foreground = SwiftUI.Color(hex: "F8F8F2")
static let comment = SwiftUI.Color(hex: "6272A4")
static let cyan = SwiftUI.Color(hex: "8BE9FD")
static let green = SwiftUI.Color(hex: "50FA7B")
static let orange = SwiftUI.Color(hex: "FFB86C")
static let pink = SwiftUI.Color(hex: "FF79C6")
static let purple = SwiftUI.Color(hex: "BD93F9")
static let red = SwiftUI.Color(hex: "FF5555")
static let yellow = SwiftUI.Color(hex: "F1FA8C")
/// ANSI-Index 0-15 -> Dracula-Farbe.
static func color(for index: Int?) -> Color {
static func color(for index: Int?) -> SwiftUI.Color {
guard let index else { return foreground }
switch index {
case 0: return Color(hex: "21222C")
case 0: return SwiftUI.Color(hex: "21222C")
case 1: return red
case 2: return green
case 3: return yellow
@@ -28,13 +29,13 @@ enum Dracula {
case 6: return cyan
case 7: return foreground
case 8: return comment
case 9: return Color(hex: "FF6E6E")
case 10: return Color(hex: "69FF94")
case 11: return Color(hex: "FFFFA5")
case 12: return Color(hex: "D6ACFF")
case 13: return Color(hex: "FF92DF")
case 14: return Color(hex: "A4FFFF")
default: return Color(hex: "FFFFFF")
case 9: return SwiftUI.Color(hex: "FF6E6E")
case 10: return SwiftUI.Color(hex: "69FF94")
case 11: return SwiftUI.Color(hex: "FFFFA5")
case 12: return SwiftUI.Color(hex: "D6ACFF")
case 13: return SwiftUI.Color(hex: "FF92DF")
case 14: return SwiftUI.Color(hex: "A4FFFF")
default: return SwiftUI.Color(hex: "FFFFFF")
}
}
@@ -42,11 +43,18 @@ enum Dracula {
NSColor(color(for: index))
}
static let nsBackground = NSColor(Color(hex: "282A36"))
static let nsSelection = NSColor(Color(hex: "44475A"))
static let nsBackground = NSColor(SwiftUI.Color(hex: "282A36"))
static let nsSelection = NSColor(SwiftUI.Color(hex: "44475A"))
/// 16 ANSI colors for the terminal emulator (SwiftTerm palette).
static var ansiPalette: [SwiftTerm.Color] {
["21222C", "FF5555", "50FA7B", "F1FA8C", "BD93F9", "FF79C6", "8BE9FD", "F8F8F2",
"6272A4", "FF6E6E", "69FF94", "FFFFA5", "D6ACFF", "FF92DF", "A4FFFF", "FFFFFF"]
.compactMap { SwiftTerm.Color.parse("#\($0)") }
}
}
extension Color {
extension SwiftUI.Color {
init(hex: String) {
let clean = hex.trimmingCharacters(in: CharacterSet.alphanumerics.inverted)
var value: UInt64 = 0