fun Conversation(state: ChatState, modifier: Modifier = Modifier, listState: LazyListState = rememberLazyListState(), maxContentWidth: Dp = 840.dp, contentPadding: PaddingValues = PaddingValues(16.dp), onRegenerate: () -> Unit = {}, onRetry: () -> Unit = onRegenerate, onDismissError: () -> Unit = {}, onToolApproval: (toolCallId: String, approved: Boolean) -> Unit? = null, onSelectVersion: (messageId: String, index: Int) -> Unit? = null, onRestoreCheckpoint: (messageId: String) -> Unit? = null, onToolDecision: (toolCallId: String, decision: ToolDecision) -> Unit? = null, onInputResponse: (requestId: String, response: InputResponse) -> Unit? = null)(source) The scrolling message list (AI Elements <Conversation>).
Scrolling is handled by StickToBottomState: the list follows the stream while you are at the bottom, stops the instant you scroll up to read (the content you are looking at never moves), and a jump-to-latest button resumes following.
readable column width on large screens.