Skip to content

Commit

Permalink
UI: add borderEnabled field to TransportModeIcon
Browse files Browse the repository at this point in the history
  • Loading branch information
ksharma-xyz committed Sep 28, 2024
1 parent 89c902b commit af93eac
Showing 1 changed file with 60 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package xyz.ksharma.krail.design.system.components

import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.requiredSize
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
Expand All @@ -24,9 +27,17 @@ import xyz.ksharma.krail.design.system.theme.KrailTheme
fun TransportModeIcon(
transportModeType: TransportModeType,
modifier: Modifier = Modifier,
borderEnabled: Boolean = false,
) {
Box(
modifier = modifier
.clip(shape = CircleShape)
.borderIfEnabled(
width = 1.dp.toAdaptiveSize(),
color = Color.White,
shape = CircleShape,
enabled = borderEnabled,
)
.clip(shape = CircleShape)
.requiredSize(width = 18.dp.toAdaptiveSize(), height = 18.dp.toAdaptiveSize())
.aspectRatio(1f)
Expand All @@ -41,6 +52,13 @@ fun TransportModeIcon(
}
}

private fun Modifier.borderIfEnabled(
width: Dp,
color: Color,
shape: RoundedCornerShape,
enabled: Boolean,
): Modifier = if (enabled) border(width = width, color = color, shape = shape) else this

@Composable
private fun Dp.toAdaptiveSize(): Dp {
val density = LocalDensity.current
Expand Down Expand Up @@ -96,4 +114,46 @@ private fun FerryPreview() {
}
}


@ComponentPreviewLightDark
@Preview(fontScale = 2f)
@Composable
private fun TrainWithBackgroundPreview() {
KrailTheme {
TransportModeIcon(TransportModeType.Train, borderEnabled = true)
}
}

@ComponentPreviews
@Composable
private fun BusWithBackgroundPreview() {
KrailTheme {
TransportModeIcon(TransportModeType.Bus, borderEnabled = true)
}
}

@ComponentPreviews
@Composable
private fun MetroWithBackgroundPreview() {
KrailTheme {
TransportModeIcon(TransportModeType.Metro, borderEnabled = true)
}
}

@ComponentPreviews
@Composable
private fun LightRailWithBackgroundPreview() {
KrailTheme {
TransportModeIcon(TransportModeType.LightRail, borderEnabled = true)
}
}

@ComponentPreviews
@Composable
private fun FerryWithBackgroundPreview() {
KrailTheme {
TransportModeIcon(TransportModeType.Ferry, borderEnabled = true)
}
}

// endregion

0 comments on commit af93eac

Please sign in to comment.