BasemapMenu

fun BasemapMenu(expanded: Boolean, onDismissRequest: () -> Unit, groups: List<List<BasemapChoice>>, selectedId: String?, onSelect: (BasemapChoice) -> Unit, modifier: Modifier = Modifier, trailingContent: @Composable () -> Unit = {})(source)

The menu that picks what the map draws underneath the mesh.

Both maps show the same shape — the renderer's own styles, then the shared raster catalogue, then the user's custom sources, then whatever the host appends — and previously each flavour had its own copy of it. What differs is only the contents of groups, which the caller assembles: the Google map opens with Google's four map types where the MapLibre map opens with its vector styles.

Each list in groups renders as a visually separate block; empty ones are dropped so a user with no custom sources sees no empty divider.