From 8dcb1ff69e2d57a0807fc66d0de9e99dfb4cda1f Mon Sep 17 00:00:00 2001 From: Karan Sharma <55722391+ksharma-xyz@users.noreply.github.com> Date: Sat, 28 Sep 2024 16:48:11 +1000 Subject: [PATCH] UI: Add multipreview annotation ComponentPreviewLightDark --- .../krail/design/system/components/Text.kt | 16 ++++++++++------ .../system/preview/MultiPreviewAnnotations.kt | 17 +++++++++++++++++ 2 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 core/design-system/src/main/kotlin/xyz/ksharma/krail/design/system/preview/MultiPreviewAnnotations.kt diff --git a/core/design-system/src/main/kotlin/xyz/ksharma/krail/design/system/components/Text.kt b/core/design-system/src/main/kotlin/xyz/ksharma/krail/design/system/components/Text.kt index bbfa8495..85732979 100644 --- a/core/design-system/src/main/kotlin/xyz/ksharma/krail/design/system/components/Text.kt +++ b/core/design-system/src/main/kotlin/xyz/ksharma/krail/design/system/components/Text.kt @@ -1,5 +1,7 @@ package xyz.ksharma.krail.design.system.components +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.text.BasicText import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider @@ -8,7 +10,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.tooling.preview.PreviewLightDark +import xyz.ksharma.krail.design.system.preview.ComponentPreviewLightDark import xyz.ksharma.krail.design.system.theme.KrailTheme val LocalTextStyle = compositionLocalOf { TextStyle.Default } @@ -39,13 +41,15 @@ fun Text( } } -@PreviewLightDark +@ComponentPreviewLightDark @Composable private fun TextPreview() { KrailTheme { - Text(text = "Hello World!") - Text(text = "Hello World!", style = KrailTheme.typography.displayLarge) - Text(text = "Hello World!", style = KrailTheme.typography.displayMedium) - Text(text = "Hello World!", style = KrailTheme.typography.displaySmall) + Column(modifier = Modifier.background(color = KrailTheme.colors.background)) { + Text(text = "Typography") + Text(text = "DisplayLarge", style = KrailTheme.typography.displayLarge) + Text(text = "displayMedium", style = KrailTheme.typography.displayMedium) + Text(text = "displaySmall", style = KrailTheme.typography.displaySmall) + } } } diff --git a/core/design-system/src/main/kotlin/xyz/ksharma/krail/design/system/preview/MultiPreviewAnnotations.kt b/core/design-system/src/main/kotlin/xyz/ksharma/krail/design/system/preview/MultiPreviewAnnotations.kt new file mode 100644 index 00000000..861de457 --- /dev/null +++ b/core/design-system/src/main/kotlin/xyz/ksharma/krail/design/system/preview/MultiPreviewAnnotations.kt @@ -0,0 +1,17 @@ +package xyz.ksharma.krail.design.system.preview + +import android.content.res.Configuration.UI_MODE_NIGHT_YES +import android.content.res.Configuration.UI_MODE_TYPE_NORMAL +import androidx.compose.ui.tooling.preview.Preview + +/** + * A MultiPreview annotation for displaying a component using light and dark themes. + */ +@Retention(AnnotationRetention.BINARY) +@Target( + AnnotationTarget.ANNOTATION_CLASS, + AnnotationTarget.FUNCTION +) +@Preview(name = "Light", showBackground = true) +@Preview(name = "Dark", uiMode = UI_MODE_NIGHT_YES or UI_MODE_TYPE_NORMAL, showBackground = true) +annotation class ComponentPreviewLightDark