forked from intitni/CopilotForXcode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStyles.swift
More file actions
100 lines (94 loc) · 3.34 KB
/
Styles.swift
File metadata and controls
100 lines (94 loc) · 3.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import AppKit
import MarkdownUI
import SharedUIComponents
import SwiftUI
extension Color {
static var contentBackground: Color {
Color(nsColor: NSColor(name: nil, dynamicProvider: { appearance in
if appearance.isDarkMode {
return #colorLiteral(red: 0.1580096483, green: 0.1730263829, blue: 0.2026666105, alpha: 1)
}
return .white
}))
}
static var userChatContentBackground: Color {
Color(nsColor: NSColor(name: nil, dynamicProvider: { appearance in
if appearance.isDarkMode {
return #colorLiteral(red: 0.2284317913, green: 0.2145925438, blue: 0.3214019983, alpha: 1)
}
return #colorLiteral(red: 0.896820749, green: 0.8709097223, blue: 0.9766687925, alpha: 1)
}))
}
}
extension NSAppearance {
var isDarkMode: Bool {
if bestMatch(from: [.darkAqua, .aqua]) == .darkAqua {
return true
} else {
return false
}
}
}
extension MarkdownUI.Theme {
static func custom(fontSize: Double) -> MarkdownUI.Theme {
.gitHub.text {
ForegroundColor(.primary)
BackgroundColor(Color.clear)
FontSize(fontSize)
}
.codeBlock { configuration in
configuration.label
.relativeLineSpacing(.em(0.225))
.markdownTextStyle {
FontFamilyVariant(.monospaced)
FontSize(.em(0.85))
}
.padding(16)
.padding(.top, 14)
.background(Color(nsColor: .textBackgroundColor).opacity(0.7))
.clipShape(RoundedRectangle(cornerRadius: 6))
.overlay(alignment: .top) {
HStack(alignment: .center) {
Text(configuration.language ?? "code")
.foregroundStyle(.tertiary)
.font(.callout)
.padding(.leading, 8)
.lineLimit(1)
Spacer()
CopyButton {
NSPasteboard.general.clearContents()
NSPasteboard.general.setString(configuration.content, forType: .string)
}
}
}
.markdownMargin(top: 4, bottom: 16)
}
}
static func functionCall(fontSize: Double) -> MarkdownUI.Theme {
.gitHub.text {
ForegroundColor(.secondary)
BackgroundColor(Color.clear)
FontSize(fontSize - 1)
}
.list { configuration in
configuration.label
.markdownMargin(top: 4, bottom: 4)
}
.paragraph { configuration in
configuration.label
.markdownMargin(top: 0, bottom: 4)
}
.codeBlock { configuration in
configuration.label
.relativeLineSpacing(.em(0.225))
.markdownTextStyle {
FontFamilyVariant(.monospaced)
FontSize(.em(0.85))
}
.padding(16)
.background(Color(nsColor: .textBackgroundColor).opacity(0.7))
.clipShape(RoundedRectangle(cornerRadius: 6))
.markdownMargin(top: 4, bottom: 4)
}
}
}