BottomSheet
The phone's container for dialogs: full width, bottom-anchored, at most 800 dp tall, with a drag handle.
Consumer provides: the same heading, body and footer as Dialog.
Rules
- Top corners
radius-md; no frame (the screen edges hold it); rests onmax(navigationBars, ime)so the footer sits on the keyboard. - Scrim:
scrim(ink at 32%) with a 6 dp backdrop blur on API 31+, plain scrim below. - Motion: 300 ms slide-up on cubic-bezier(.05,.7,.1,1) with a 200 ms scrim fade; swipe down on the 32 × 4 handle to dismiss. Disabled under reduced motion / animator scale 0.
- The tablet never uses a sheet: the same content renders in a Dialog.
Compose
ModalBottomSheet with scrimColor = scrim, dragHandle = { Handle() }, tonalElevation = 0.dp, plus Modifier.blur on the content behind (API 31+).
In the app
On the phone, InkPopover renders every dialog size except Confirmation and Prompt as this sheet. Sign-in and sign-up steps never use it.
- The handle is 32 × 4 dp in a 24 dp strip.
- This sheet is the only motion in the app.
Preview
Phone · over a blurred scrim