Quick Start
Minimal Modal Side Sheet
import io.github.aldefy.sidesheet.ModalSideSheetimport io.github.aldefy.sidesheet.rememberSideSheetState
@Composablefun MyScreen() { var showSheet by remember { mutableStateOf(false) }
Button(onClick = { showSheet = true }) { Text("Open Sheet") }
if (showSheet) { ModalSideSheet( onDismissRequest = { showSheet = false }, ) { Column(modifier = Modifier.padding(24.dp)) { Text("Hello from the side sheet!") } } }}That’s it. The sheet slides in from the end edge with a scrim overlay, supports swipe-to-dismiss, and follows the M3 spec out of the box.
With State Control
For programmatic expand/hide:
val sheetState = rememberSideSheetState()val scope = rememberCoroutineScope()
ModalSideSheet( onDismissRequest = { showSheet = false }, sheetState = sheetState,) { Button(onClick = { scope.launch { sheetState.hide() } }) { Text("Close") }}Adaptive (Side Sheet + Bottom Sheet)
Switch between side sheet (tablets) and bottom sheet (phones) automatically:
AdaptiveSheet( onDismissRequest = { showSheet = false },) { Text("I adapt to screen width!")}Next Steps
- Modal Side Sheet Guide — full API walkthrough
- Customization — colors, shapes, elevation, drag handle
- API Reference — complete parameter docs