Files
z-bar-qt/Modules/Notifications/Sidebar/Chat/Content/MarkdownBlocks.qml
T
2026-08-26 02:06:10 +02:00

93 lines
2.0 KiB
QML

import QtQuick
import ZShell.Config
import ZShell.Llm
import qs.Components
import qs.Services
Column {
id: root
// Top-level markdown blocks (see MarkdownParser / LlmSegment.markdown).
required property var blocks
spacing: Tokens.spacing.small
Repeater {
id: blockRep
model: root.blocks
delegate: DelegateChooser {
role: "type"
DelegateChoice {
roleValue: LlmMarkdown.Type.Code
delegate: CodeBlockView {
required property var modelData
language: modelData.language
code: modelData.code
anchors.right: parent.right
anchors.margins: Tokens.spacing.small
anchors.left: parent.left
}
}
DelegateChoice {
roleValue: LlmMarkdown.Type.Math
delegate: MathBlockView {
required property var modelData
latex: modelData.latex
anchors.right: parent.right
anchors.left: parent.left
anchors.margins: Tokens.padding.medium
}
}
DelegateChoice {
roleValue: LlmMarkdown.Type.Heading
delegate: CustomText {
required property var modelData
color: Colors.palette.m3onSurface
anchors.right: parent.right
anchors.left: parent.left
anchors.margins: Tokens.padding.medium
text: modelData.text
textFormat: Text.MarkdownText
font.bold: true
font.pointSize: {
if (modelData.level <= 1)
return Tokens.font.size.larger;
if (modelData.level === 2)
return Tokens.font.size.normal;
return Tokens.font.size.smaller;
}
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
}
}
DelegateChoice {
roleValue: LlmMarkdown.Type.Text
delegate: CustomText {
required property var modelData
color: Colors.palette.m3onSurface
anchors.right: parent.right
anchors.left: parent.left
anchors.margins: Tokens.padding.medium
text: modelData.text
textFormat: Text.MarkdownText
font.pointSize: Tokens.font.size.smaller
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
}
}
}
}
}