Jenga Side Sheet
A modal sheet that slides in from the end edge over a scrim, with the same layout as JengaListSheet: a title, a lazily laid out body, and an optional footer pinned to the bottom. Use it in place of a bottom sheet on wide or landscape layouts.
Control visibility by conditional composition. Tapping the scrim or pressing back calls onDismissRequest.
Parameters
called when the sheet should close.
the heading shown at the top of the sheet.
the Modifier for the full-window container holding the scrim and sheet.
optional supporting line under the title.
optional slot at the end of the title row (e.g. a close button).
optional row pinned to the bottom of the sheet, for actions.
the sheet width.
the sheet shape.
the title text style.
the subtitle text style.
padding around the header.
padding around the lazy body.
padding around the footer row.
gap between footer children.
the sheet body, laid out lazily in a LazyListScope.
Samples
var open by remember {
mutableStateOf(
value = true,
)
}
if (open) {
JengaSideSheet(
onDismissRequest = { open = false },
title = "Filters",
footer = {
JengaButton(
text = "Apply",
onClick = { open = false },
modifier = Modifier.weight(
weight = 1f,
),
)
},
content = {
item {
JengaCheckboxListItem(
headline = "Open only",
checked = true,
onCheckedChange = {},
)
}
},
)
}A JengaSideSheet whose subtitle is styled text (e.g. a monospaced id beside plain words).
Parameters
called when the sheet should close.
the heading shown at the top of the sheet.
the supporting line under the title, with styled spans.
the Modifier for the full-window container holding the scrim and sheet.
optional slot at the end of the title row (e.g. a close button).
optional row pinned to the bottom of the sheet, for actions.
the sheet width.
the sheet shape.
the title text style.
the subtitle text style.
padding around the header.
padding around the lazy body.
padding around the footer row.
gap between footer children.
the sheet body, laid out lazily in a LazyListScope.