Gitnuro/src/main/kotlin/app/ui/components/SideMenuSubentry.kt
2022-02-05 02:55:26 +01:00

65 lines
1.9 KiB
Kotlin

@file:OptIn(ExperimentalComposeUiApi::class)
package app.ui.components
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import app.ENTRY_HEIGHT
import app.theme.primaryTextColor
@Composable
fun SideMenuSubentry(
text: String,
iconResourcePath: String,
bold: Boolean = false,
extraPadding: Dp = 0.dp,
onClick: (() -> Unit)? = null,
additionalInfo: @Composable () -> Unit = {}
) {
Row(
modifier = Modifier
.height(ENTRY_HEIGHT.dp)
.fillMaxWidth()
.run {
if (onClick != null)
clickable(onClick = onClick)
else
this
}
.padding(start = extraPadding),
verticalAlignment = Alignment.CenterVertically,
) {
Icon(
painter = painterResource(iconResourcePath),
contentDescription = null,
modifier = Modifier
.padding(horizontal = 8.dp)
.size(16.dp),
tint = MaterialTheme.colors.primary,
)
Text(
text = text,
modifier = Modifier.weight(1f, fill = true),
maxLines = 1,
fontSize = 13.sp,
fontWeight = if (bold) FontWeight.SemiBold else FontWeight.Normal,
color = MaterialTheme.colors.primaryTextColor,
softWrap = false,
)
additionalInfo()
}
}