mirror of
https://github.com/Myzel394/Alibi.git
synced 2025-06-18 23:05:26 +02:00
feat: Add MessageBox
This commit is contained in:
parent
96106cd79c
commit
8e2449ab4e
@ -0,0 +1,85 @@
|
||||
package app.myzel394.locationtest.ui.components.atoms
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Check
|
||||
import androidx.compose.material.icons.filled.Error
|
||||
import androidx.compose.material.icons.filled.Info
|
||||
import androidx.compose.material.icons.filled.Warning
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.unit.dp
|
||||
|
||||
|
||||
@Composable
|
||||
fun MessageBox(
|
||||
modifier: Modifier = Modifier,
|
||||
type: MessageType,
|
||||
message: String,
|
||||
title: String? = null,
|
||||
) {
|
||||
val backgroundColor = when(type) {
|
||||
MessageType.ERROR -> MaterialTheme.colorScheme.errorContainer
|
||||
MessageType.INFO -> MaterialTheme.colorScheme.tertiaryContainer
|
||||
MessageType.SUCCESS -> Color.Green.copy(alpha = 0.3f)
|
||||
MessageType.WARNING -> Color.Yellow.copy(alpha = 0.3f)
|
||||
}
|
||||
val textColor = when(type) {
|
||||
MessageType.ERROR -> MaterialTheme.colorScheme.onError
|
||||
MessageType.INFO -> MaterialTheme.colorScheme.onTertiary
|
||||
MessageType.SUCCESS -> Color.Green
|
||||
MessageType.WARNING -> Color.Yellow
|
||||
}
|
||||
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
modifier = Modifier
|
||||
.clip(MaterialTheme.shapes.medium)
|
||||
.background(backgroundColor)
|
||||
.padding(horizontal = 8.dp, vertical = 16.dp)
|
||||
.then(modifier)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = when(type) {
|
||||
MessageType.ERROR -> Icons.Default.Error
|
||||
MessageType.INFO -> Icons.Default.Info
|
||||
MessageType.SUCCESS -> Icons.Default.Check
|
||||
MessageType.WARNING -> Icons.Default.Warning
|
||||
},
|
||||
contentDescription = null,
|
||||
tint = textColor,
|
||||
modifier = Modifier.padding(16.dp)
|
||||
)
|
||||
Column {
|
||||
if (title != null) {
|
||||
Text(
|
||||
text = title,
|
||||
style = MaterialTheme.typography.bodyLarge,
|
||||
color = textColor,
|
||||
)
|
||||
}
|
||||
Text(
|
||||
text = message,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = textColor,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
enum class MessageType {
|
||||
ERROR,
|
||||
INFO,
|
||||
SUCCESS,
|
||||
WARNING,
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user