
Incremental Markdown parser and renderer producing append-only streaming snapshots with stable block identity for Compose UIs; presets optimized for chat and streaming previews.
Kotlin Multiplatform Markdown parser and Compose renderer for append-only streaming output.
This library is under development.
Publishing is not ready yet. The coordinates below are planned for the first public release.
libs.versions.toml
[versions]
compose-markdown = "latest-version"
[libraries]
compose-markdown-core = { module = "com.adamglin.compose.markdown:markdown-core", version.ref = "compose-markdown" }
compose-markdown-compose = { module = "com.adamglin.compose.markdown:markdown-compose", version.ref = "compose-markdown" }build.gradle.kts
implementation(libs.compose.markdown.compose)import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.sp
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import com.adamglin.compose.markdown.compose.Markdown
import com.adamglin.compose.markdown.compose.MarkdownStyle
import com.adamglin.compose.markdown.compose.MarkdownThemeDefaults
import com.adamglin.compose.markdown.compose.ProvideMarkdownTheme
import com.adamglin.compose.markdown.core.api.MarkdownEngine
import com.adamglin.compose.markdown.core.model.MarkdownSnapshot
@Composable
fun Message(content: String) {
val engine = remember { MarkdownEngine() }
engine.reset()
val snapshot = engine.append(content).snapshot
val colors = MarkdownThemeDefaults.LightColors.copy(accent = Color(0xFF0A7A5C))
val baseTypography = MarkdownThemeDefaults.typography(colors)
val typography = baseTypography.copy(
bodyLarge = baseTypography.bodyLarge.copy(lineHeight = 26.sp),
)
Markdown(
snapshot = snapshot,
style = MarkdownStyle(
colors = colors,
typography = typography,
),
)
}
@Composable
fun Thread(snapshot: MarkdownSnapshot) {
val colors = MarkdownThemeDefaults.DarkColors.copy(accent = Color(0xFF7EC7A2))
ProvideMarkdownTheme(colors = colors) {
Markdown(snapshot = snapshot)
}
}markdown-core - incremental Markdown engine with streaming-friendly snapshotsmarkdown-compose - Compose renderer built around stable block identityChatFast, CommonMarkCore, GfmCompat
docs/compatibility-report.md, docs/known-limitations.md
MIT
Kotlin Multiplatform Markdown parser and Compose renderer for append-only streaming output.
This library is under development.
Publishing is not ready yet. The coordinates below are planned for the first public release.
libs.versions.toml
[versions]
compose-markdown = "latest-version"
[libraries]
compose-markdown-core = { module = "com.adamglin.compose.markdown:markdown-core", version.ref = "compose-markdown" }
compose-markdown-compose = { module = "com.adamglin.compose.markdown:markdown-compose", version.ref = "compose-markdown" }build.gradle.kts
implementation(libs.compose.markdown.compose)import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.sp
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import com.adamglin.compose.markdown.compose.Markdown
import com.adamglin.compose.markdown.compose.MarkdownStyle
import com.adamglin.compose.markdown.compose.MarkdownThemeDefaults
import com.adamglin.compose.markdown.compose.ProvideMarkdownTheme
import com.adamglin.compose.markdown.core.api.MarkdownEngine
import com.adamglin.compose.markdown.core.model.MarkdownSnapshot
@Composable
fun Message(content: String) {
val engine = remember { MarkdownEngine() }
engine.reset()
val snapshot = engine.append(content).snapshot
val colors = MarkdownThemeDefaults.LightColors.copy(accent = Color(0xFF0A7A5C))
val baseTypography = MarkdownThemeDefaults.typography(colors)
val typography = baseTypography.copy(
bodyLarge = baseTypography.bodyLarge.copy(lineHeight = 26.sp),
)
Markdown(
snapshot = snapshot,
style = MarkdownStyle(
colors = colors,
typography = typography,
),
)
}
@Composable
fun Thread(snapshot: MarkdownSnapshot) {
val colors = MarkdownThemeDefaults.DarkColors.copy(accent = Color(0xFF7EC7A2))
ProvideMarkdownTheme(colors = colors) {
Markdown(snapshot = snapshot)
}
}markdown-core - incremental Markdown engine with streaming-friendly snapshotsmarkdown-compose - Compose renderer built around stable block identityChatFast, CommonMarkCore, GfmCompat
docs/compatibility-report.md, docs/known-limitations.md
MIT