HeatmapCalendar

fun HeatmapCalendar(intensity: (LocalDate) -> Float?, state: HeatmapCalendarState = rememberHeatmapCalendarState(), modifier: Modifier = Modifier, onDayClick: (LocalDate) -> Unit? = null, colorScale: (Float) -> Color = HeatmapDefaults.colorScale(), emptyCellColor: Color = HeatmapDefaults.emptyCellColor(), cellSize: Dp = 12.dp, cellSpacing: Dp = 2.dp, cellShape: Shape = RoundedCornerShape(2.dp), showMonthLabels: Boolean = true, showWeekdayLabels: Boolean = true, showLegend: Boolean = true, summary: @Composable (HeatmapSummary) -> Unit? = { HeatmapDefaults.Summary(it) }, strings: HeatmapStrings = HeatmapDefaults.strings())

GitHub-style contribution graph: one column per week, seven tile rows, horizontally scrollable across the state's date range. intensity returns a 0..1 heat value per day, or null for no data. Cells are clickable only when onDayClick is set; a clickable cell draws a 2.dp onSurface focus ring just outside its tile while it has keyboard / D-pad focus. Accessibility descriptions bucket intensity into five levels regardless of colorScale.