aboutsummaryrefslogtreecommitdiff
path: root/Sources/NorgUI/Theme/NorgTheme.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Sources/NorgUI/Theme/NorgTheme.swift')
-rw-r--r--Sources/NorgUI/Theme/NorgTheme.swift17
1 files changed, 17 insertions, 0 deletions
diff --git a/Sources/NorgUI/Theme/NorgTheme.swift b/Sources/NorgUI/Theme/NorgTheme.swift
index c788812..fa8ab25 100644
--- a/Sources/NorgUI/Theme/NorgTheme.swift
+++ b/Sources/NorgUI/Theme/NorgTheme.swift
@@ -40,6 +40,12 @@ public struct NorgTheme: Sendable {
public var blockSpacing: CGFloat
/// Padding applied above a heading.
public var headingTopPadding: CGFloat
+ /// Point size used when rendering math. Inline math is rendered at this size
+ /// and display blocks slightly larger.
+ public var mathFontSize: CGFloat
+ /// Renderer used for inline and block math. When `nil`, math is shown as
+ /// monospaced text. See ``NorgMathRenderer``.
+ public var mathRenderer: (any NorgMathRenderer)?
/// Tint for a task's status symbol.
public var statusTint: @Sendable (TaskStatus) -> Color
/// SF Symbol name for a task's status symbol.
@@ -68,6 +74,8 @@ public struct NorgTheme: Sendable {
verbatimPadding: CGFloat = 10,
blockSpacing: CGFloat = 10,
headingTopPadding: CGFloat = 4,
+ mathFontSize: CGFloat = 17,
+ mathRenderer: (any NorgMathRenderer)? = nil,
statusTint: @escaping @Sendable (TaskStatus) -> Color,
statusSymbol: @escaping @Sendable (TaskStatus) -> String,
statusLabel: @escaping @Sendable (TaskStatus) -> LocalizedStringResource = { $0.displayName }
@@ -90,6 +98,8 @@ public struct NorgTheme: Sendable {
self.verbatimPadding = verbatimPadding
self.blockSpacing = blockSpacing
self.headingTopPadding = headingTopPadding
+ self.mathFontSize = mathFontSize
+ self.mathRenderer = mathRenderer
self.statusTint = statusTint
self.statusSymbol = statusSymbol
self.statusLabel = statusLabel
@@ -120,6 +130,7 @@ public struct NorgTheme: Sendable {
codeBackground: AnyShapeStyle(.quaternary),
codeFont: .system(.callout, design: .monospaced),
indentWidth: 18,
+ mathRenderer: defaultMathRenderer,
statusTint: { status in
switch status {
case .done: return .green
@@ -141,4 +152,10 @@ public struct NorgTheme: Sendable {
}
}
)
+
+ #if SwiftMathSupport
+ static let defaultMathRenderer: (any NorgMathRenderer)? = SwiftMathRenderer()
+ #else
+ static let defaultMathRenderer: (any NorgMathRenderer)? = nil
+ #endif
}