Skip to content

Text

Text component is a basic text component in Miuix, used to display text content. It supports customizing various text styles, alignment, and decoration effects.

Import

kotlin
import top.yukonga.miuix.kmp.basic.Text

Basic Usage

The simplest text display:

kotlin
Text("This is a basic text")

Text Styles

Miuix provides multiple predefined text styles:

kotlin
Text(
    text = "Title Text",
    style = MiuixTheme.textStyles.headline1
)

Text(
    text = "Subtitle Text",
    style = MiuixTheme.textStyles.subtitle
)
Text(
    text = "Summary Text",
    style = MiuixTheme.textStyles.body2
)

Text(
    text = "Main Text",
    style = MiuixTheme.textStyles.main
)

Text Color

kotlin
Text(
    text = "Default Color Text",
    color = MiuixTheme.colorScheme.onBackground
)

Text(
    text = "Primary Color Text",
    color = MiuixTheme.colorScheme.primary
)

Text(
    text = "Secondary Text",
    color = MiuixTheme.colorScheme.onSurfaceContainerVariant
)

Properties

Text (String) Properties

Property NameTypeDescriptionDefault ValueRequired
textStringThe text content to display-Yes
modifierModifierModifiers applied to the textModifierNo
colorColorText colorColor.UnspecifiedNo
autoSizeTextAutoSize?Auto-sizing behavior for textnullNo
fontSizeTextUnitText sizeTextUnit.UnspecifiedNo
fontStyleFontStyle?Text font style (e.g., italic)nullNo
fontWeightFontWeight?Text font weightnullNo
fontFamilyFontFamily?Text font familynullNo
letterSpacingTextUnitLetter spacingTextUnit.UnspecifiedNo
textDecorationTextDecoration?Text decoration (e.g., underline)nullNo
textAlignTextAlign?Text alignmentnullNo
lineHeightTextUnitLine heightTextUnit.UnspecifiedNo
overflowTextOverflowText overflow handlingTextOverflow.ClipNo
softWrapBooleanWhether to wrap text automaticallytrueNo
maxLinesIntMaximum number of linesInt.MAX_VALUENo
minLinesIntMinimum number of lines1No
onTextLayout((TextLayoutResult) -> Unit)?Callback after layoutnullNo
styleTextStyleText styleMiuixTheme.textStyles.mainNo

Text (AnnotatedString) Properties

Property NameTypeDescriptionDefault ValueRequired
textAnnotatedStringRich text with annotations-Yes
modifierModifierModifiers applied to the textModifierNo
colorColorText colorColor.UnspecifiedNo
autoSizeTextAutoSize?Auto-sizing behavior for textnullNo
fontSizeTextUnitText sizeTextUnit.UnspecifiedNo
fontStyleFontStyle?Text font stylenullNo
fontWeightFontWeight?Text font weightnullNo
fontFamilyFontFamily?Text font familynullNo
letterSpacingTextUnitLetter spacingTextUnit.UnspecifiedNo
textDecorationTextDecoration?Text decorationnullNo
textAlignTextAlign?Text alignmentnullNo
lineHeightTextUnitLine heightTextUnit.UnspecifiedNo
overflowTextOverflowText overflow handlingTextOverflow.ClipNo
softWrapBooleanWhether to wrap text automaticallytrueNo
maxLinesIntMaximum number of linesInt.MAX_VALUENo
minLinesIntMinimum number of lines1No
inlineContentMap<String, InlineTextContent>Mapping for inserting inline composablesmapOf()No
onTextLayout(TextLayoutResult) -> UnitCallback after text layout is completed{}No
styleTextStyleText styleMiuixTheme.textStyles.mainNo

Advanced Usage

Multi-line Text Truncation

kotlin
Text(
    text = "This is a very long text that will be truncated and show ellipsis when there is not enough space. This is useful for displaying long content summaries.",
    maxLines = 2,
    overflow = TextOverflow.Ellipsis
)

Text Decoration

kotlin
Text(
    text = "Underlined Text",
    textDecoration = TextDecoration.Underline
)

Text(
    text = "Strikethrough Text",
    textDecoration = TextDecoration.LineThrough
)

Rich Text Mixing

kotlin
Text(
    buildAnnotatedString {
        withStyle(style = SpanStyle(color = MiuixTheme.colorScheme.primary)) {
            append("Miuix ")
        }
        withStyle(style = SpanStyle(fontWeight = FontWeight.Bold)) {
            append("UI Library")
        }
        append(", this is a piece of rich text")
    }
)

Auto-sizing Text

Automatically fit text within available space using TextAutoSize:

kotlin
Text(
    text = "Adaptive text",
    autoSize = TextAutoSize.StepBased(
        minFontSize = 12.sp,
        maxFontSize = 17.sp,
        stepSize = 0.3.sp
    )
)

Use AnnotatedString with LinkAnnotation to create clickable links:

kotlin
val annotated = buildAnnotatedString {
    append("Visit ")
    val start = length
    append("Miuix Docs")
    addLink(
        LinkAnnotation.Url(
            url = "https://compose-miuix-ui.github.io/miuix/",
            styles = TextLinkStyles(
                SpanStyle(color = MiuixTheme.colorScheme.primary, fontWeight = FontWeight.Bold)
            )
        ),
        start = start,
        end = length
    )
}

Text(text = annotated)

Changelog

Released under the Apache-2.0 License