KDataTable

fun <T> KDataTable(columns: List<KTableColumn<T>>, data: List<T>, modifier: Modifier = Modifier, striped: Boolean = false, pageSize: Int = Int.MAX_VALUE, onSort: (key: String, direction: KSortDirection) -> Unit? = null, emptyContent: @Composable () -> Unit = { Box( modifier = Modifier.fillMaxWidth().padding(32.dp), contentAlignment = Alignment.Center ) { Text("No results.", color = MaterialTheme.colorScheme.onSurfaceVariant, fontSize = 14.sp) } })(source)

Convenience data-table built on top of the primitive Table slots.

For full structural control, use Table / TableHeader / TableBody directly.

val columns = listOf(
KTableColumn<Payment>("email", "Email", sortable = true) { Text(it.email) },
KTableColumn<Payment>("amount", "Amount") { Text("$${it.amount}") },
)
KDataTable(columns = columns, data = payments)