3d66eaea83
* Merge Voyager screens * cleanups
60 lines
2.1 KiB
Kotlin
60 lines
2.1 KiB
Kotlin
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()
|
|
}
|
|
}
|
|
}
|