Skip to content

Standard Side Sheet

StandardSideSheet renders inline alongside your main content — no popup, no scrim. Use it for persistent detail panels in wide-screen layouts.

Basic Usage

Row {
// Main content takes remaining space
MainContent(modifier = Modifier.weight(1f))
// Side sheet panel
StandardSideSheet {
Column(modifier = Modifier.padding(24.dp)) {
Text("Detail Panel")
}
}
}

Collapsible Panel

Use sheetState to programmatically show/hide:

val sheetState = rememberSideSheetState(SideSheetValue.Expanded)
val scope = rememberCoroutineScope()
Row {
Column(modifier = Modifier.weight(1f)) {
Button(onClick = {
scope.launch {
if (sheetState.isVisible) sheetState.hide()
else sheetState.expand()
}
}) {
Text("Toggle Panel")
}
}
StandardSideSheet(
sheetState = sheetState,
sheetWidth = 300.dp,
) {
Text("Collapsible panel content")
}
}

Key Differences from Modal

FeatureModalSideSheetStandardSideSheet
RenderingPopup overlayInline in layout
ScrimYes (32% black)No
Default stateHiddenExpanded
ElevationLevel 1 shadowNone
ShapeRounded inner edgeNo rounding
Use caseTemporary detailPersistent panel