From 49b0f4a3fb0064313d16782839865b763ef760ce Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Thu, 18 Jun 2026 23:53:25 +0200 Subject: Support Math rendering --- Sources/NorgUI/Theme/NorgTheme.swift | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'Sources/NorgUI/Theme/NorgTheme.swift') 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 } -- cgit