{{-- An M3 bottom sheet: secondary content or actions anchored to the bottom of the screen. Modal by default: over a scrim, the page inert and still, dismissed by the scrim, Escape, or a downward drag on its handle (or anywhere on the sheet when its content is scrolled to the top). `standard` makes it part of the page instead — no scrim, nothing inert, and it stays until closed. The open state works as for ``: `wire:model` (a flag or an id, written back `false` or `null` on close) or `open` in the surrounding Alpine scope; `close()` is in scope inside it. SheetBottomTokens (androidx Compose Material 3, Apache-2.0): surface-container-low, extra-large top corners, elevation 1, a 32×4px drag handle in on-surface-variant; 640px wide at most, centred on a wide screen; it rises on emphasized decelerate. `title` and `actions` as on a dialog. `height` is where it opens, and M3 caps a modal sheet's initial position at half the screen — "if content exceeds that, it can be pulled to full screen and scrolled internally" — so the default is `50dvh`, under a ceiling of the screen less M3's 72dp top margin. Content scrolls inside. The handle is drawn 32×4px and pressed 48×48: `touch-target` on the button and 22px above and below it, which is M3's "drag handle has an accessible 48dp hit target" and SheetDefaults.kt's `DragHandleVerticalPadding = 22.dp` (docs/reference/m3/components-actions-communication-containment.md § Bottom sheets → Specs). --}} @props([ 'title' => null, 'standard' => false, 'height' => '50dvh', ]) @php $model = $attributes->wire('model')->value() ?: null; $id = $attributes->get('id') ?? 'material-bottom-sheet-'.substr(md5($model.'|'.$title), 0, 10); @endphp
@unless ($standard) @endunless