PeachTopBar.kt

2.3 KB · raw

1package com.peachpasswords.ui.components23import androidx.compose.foundation.layout.Arrangement4import androidx.compose.foundation.layout.Box5import androidx.compose.foundation.layout.Row6import androidx.compose.foundation.layout.RowScope7import androidx.compose.foundation.layout.fillMaxWidth8import androidx.compose.foundation.layout.height9import androidx.compose.foundation.layout.padding10import androidx.compose.foundation.layout.widthIn11import androidx.compose.foundation.shape.RoundedCornerShape12import androidx.compose.material3.Surface13import androidx.compose.material3.Text14import androidx.compose.runtime.Composable15import androidx.compose.ui.Alignment16import androidx.compose.ui.Modifier17import androidx.compose.ui.unit.dp18import com.peachpasswords.ui.theme.PeachSpacing19import com.peachpasswords.ui.theme.PeachType20import com.peachpasswords.ui.theme.peachColors2122@Composable23fun PeachTopBar(24    title: String,25    modifier: Modifier = Modifier,26    leading: (@Composable RowScope.() -> Unit)? = null,27    actions: (@Composable RowScope.() -> Unit)? = null,28) {29    Surface(30        modifier = modifier.fillMaxWidth(),31        color = peachColors.S1,32        contentColor = peachColors.T0,33        shape = RoundedCornerShape(18.dp),34        tonalElevation = 1.dp,35    ) {36        Row(37            modifier = Modifier38                .height(56.dp)39                .padding(horizontal = PeachSpacing.md),40            verticalAlignment = Alignment.CenterVertically,41            horizontalArrangement = Arrangement.spacedBy(PeachSpacing.sm),42        ) {43            if (leading != null) {44                Row(verticalAlignment = Alignment.CenterVertically, content = leading)45            }46            Text(47                text = title,48                color = peachColors.T0,49                style = PeachType.wordmark,50                modifier = Modifier.weight(1f),51            )52            if (actions != null) {53                Row(54                    modifier = Modifier.widthIn(min = 40.dp),55                    verticalAlignment = Alignment.CenterVertically,56                    horizontalArrangement = Arrangement.spacedBy(PeachSpacing.xs),57                    content = actions,58                )59            } else {60                Box(Modifier.widthIn(min = 40.dp))61            }62        }63    }64}