package eu.kanade.presentation.components import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.selection.selectableGroup import androidx.compose.material3.NavigationRailDefaults import androidx.compose.material3.contentColorFor import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp /** * Center-aligned M3 Navigation rail * * @see [androidx.compose.material3.NavigationRail] */ @Composable fun NavigationRail( modifier: Modifier = Modifier, containerColor: Color = NavigationRailDefaults.ContainerColor, contentColor: Color = contentColorFor(containerColor), header: @Composable (ColumnScope.() -> Unit)? = null, windowInsets: WindowInsets = NavigationRailDefaults.windowInsets, content: @Composable ColumnScope.() -> Unit, ) { androidx.compose.material3.Surface( color = containerColor, contentColor = contentColor, modifier = modifier, tonalElevation = 3.dp, ) { Column( Modifier .fillMaxHeight() .windowInsetsPadding(windowInsets) .widthIn(min = 80.dp) .padding(vertical = 4.dp) .selectableGroup(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(space = 4.dp, alignment = Alignment.CenterVertically), ) { if (header != null) { header() Spacer(Modifier.height(8.dp)) } content() } } }