standard
standard sizes
connected
connected sizes
connected square
single-select
comfortable
multi-select
italic, underline
Sample usage
<!-- standard: invisible container, gap by size, mixes buttons + icon buttons -->
<material-button-group>
<material-icon-button variant="filled" icon="skip_previous" aria-label="Previous"></material-icon-button>
<material-button variant="tonal" label="Play" icon="play_arrow"></material-button>
<material-icon-button variant="filled" icon="skip_next" aria-label="Next"></material-icon-button>
</material-button-group>
<!-- connected: 2dp gap, inner corners fused -->
<material-button-group variant="connected">
<material-button variant="tonal" label="Day"></material-button>
<material-button variant="tonal" label="Week"></material-button>
<material-button variant="tonal" label="Month"></material-button>
</material-button-group>
<!-- single-select with required (one stays selected) -->
<material-button-group variant="connected" selection-mode="single" required>
<material-icon-button toggle variant="tonal" value="compact" icon="density_small" aria-label="Compact"></material-icon-button>
<material-icon-button toggle variant="tonal" value="comfortable" icon="density_medium" aria-label="Comfortable" selected></material-icon-button>
<material-icon-button toggle variant="tonal" value="spacious" icon="density_large" aria-label="Spacious"></material-icon-button>
</material-button-group>
<!-- listen for selection -->
<script>
document.querySelector('material-button-group')
.addEventListener('materialSelectionChange', e => console.log(e.detail.values));
</script>