package com.example.aiapp import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontFamily import com.mikepenz.markdown.m3.Markdown import com.mikepenz.markdown.m3.markdownColor import com.mikepenz.markdown.m3.markdownTypography /** * An assistant's reply, rendered as the markdown it is written in. * * The parsing is the library's. Markdown is somebody else's specification, and a hand-written * subset of one disagrees with it at the edges -- which is where the bug reports come from, one * case at a time. This file's whole job is the mapping onto the app's palette. * * Colours come from the theme rather than from the renderer's defaults, so code, links and rules * are the same Catppuccin values the rest of the app uses. Nothing here picks a colour of its own. */ @Composable fun MarkdownText(text: String, modifier: Modifier = Modifier) { Markdown( content = text, colors = markdownColor( text = MaterialTheme.colorScheme.onSurface, codeText = codeColor, inlineCodeText = codeColor, linkText = linkColor, dividerColor = MaterialTheme.colorScheme.outlineVariant, codeBackground = MaterialTheme.colorScheme.surfaceVariant, inlineCodeBackground = MaterialTheme.colorScheme.surfaceVariant, ), // Body text at the size everything else in the transcript uses, and code in a monospace // face: a code block set in the body font stops looking like code at all. typography = markdownTypography( text = MaterialTheme.typography.bodyLarge, code = MaterialTheme.typography.bodyMedium.copy(fontFamily = FontFamily.Monospace), ), modifier = modifier, ) }