From 1feec554e654d97be9b374bbd5bb8dcb38a59add Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 6 Apr 2026 17:19:26 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tangem/core/ui/res/TangemTypography2.kt | 245 ++++++++++++++---- .../storybook/entity/StoryBookPage.kt | 5 + .../storybook/page/typography/Build.kt | 15 ++ .../page/typography/TypographyStory.kt | 138 ++++++++++ .../storybook/ui/StoryBookListScreen.kt | 2 + .../storybook/ui/StoryBookScreen.kt | 3 + 6 files changed, 362 insertions(+), 46 deletions(-) create mode 100644 features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/page/typography/Build.kt create mode 100644 features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/page/typography/TypographyStory.kt diff --git a/core/ui/src/main/java/com/tangem/core/ui/res/TangemTypography2.kt b/core/ui/src/main/java/com/tangem/core/ui/res/TangemTypography2.kt index 38675546fd..5b91907051 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/res/TangemTypography2.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/res/TangemTypography2.kt @@ -13,6 +13,7 @@ import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.LineBreak import androidx.compose.ui.text.style.LineHeightStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.TextUnit @@ -26,6 +27,7 @@ internal val InterFamily = FontFamily( Font(R.font.inter_italic, style = FontStyle.Italic), ) +@Suppress("LargeClass") @Stable class TangemTypography2 internal constructor( fontFamily: FontFamily, @@ -40,157 +42,183 @@ class TangemTypography2 internal constructor( alignment = LineHeightStyle.Alignment.Center, trim = LineHeightStyle.Trim.None, ), + lineBreak = LineBreak.Heading, ) val headingRegular34: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 34.sp, fontWeight = FontWeight.Normal, - letterSpacing = TextUnit(value = 0.37f, type = TextUnitType.Sp), - lineHeight = TextUnit(value = 40f, type = TextUnitType.Sp), + letterSpacing = TextUnit(value = 0.4f, type = TextUnitType.Sp), + lineHeight = TextUnit(value = 44f, type = TextUnitType.Sp), lineHeightStyle = LineHeightStyle( alignment = LineHeightStyle.Alignment.Center, trim = LineHeightStyle.Trim.None, ), + lineBreak = LineBreak.Heading, ) val headingBold34: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 34.sp, fontWeight = FontWeight.Bold, - letterSpacing = TextUnit(value = 0.37f, type = TextUnitType.Sp), - lineHeight = TextUnit(value = 40f, type = TextUnitType.Sp), + letterSpacing = TextUnit(value = 0.4f, type = TextUnitType.Sp), + lineHeight = TextUnit(value = 44f, type = TextUnitType.Sp), lineHeightStyle = LineHeightStyle( alignment = LineHeightStyle.Alignment.Center, trim = LineHeightStyle.Trim.None, ), + lineBreak = LineBreak.Heading, ) val headingRegular28: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 28.sp, - fontWeight = FontWeight.SemiBold, - letterSpacing = TextUnit(value = 0.36f, type = TextUnitType.Sp), + fontWeight = FontWeight.Normal, + letterSpacing = TextUnit(value = 0.38f, type = TextUnitType.Sp), lineHeight = TextUnit(value = 36f, type = TextUnitType.Sp), lineHeightStyle = LineHeightStyle( alignment = LineHeightStyle.Alignment.Center, trim = LineHeightStyle.Trim.None, ), + lineBreak = LineBreak.Heading, + ) + + val headingSemibold28: TextStyle = TextStyle( + fontFamily = fontFamily, + fontSize = 28.sp, + fontWeight = FontWeight.SemiBold, + letterSpacing = TextUnit(value = 0.38f, type = TextUnitType.Sp), + lineHeight = TextUnit(value = 36f, type = TextUnitType.Sp), + lineHeightStyle = LineHeightStyle( + alignment = LineHeightStyle.Alignment.Center, + trim = LineHeightStyle.Trim.None, + ), + lineBreak = LineBreak.Heading, ) val headingBold28: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 28.sp, fontWeight = FontWeight.Bold, - letterSpacing = TextUnit(value = 0.36f, type = TextUnitType.Sp), + letterSpacing = TextUnit(value = 0.38f, type = TextUnitType.Sp), lineHeight = TextUnit(value = 36f, type = TextUnitType.Sp), lineHeightStyle = LineHeightStyle( alignment = LineHeightStyle.Alignment.Center, trim = LineHeightStyle.Trim.None, ), + lineBreak = LineBreak.Heading, ) val headingRegular22: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 22.sp, fontWeight = FontWeight.Normal, - letterSpacing = TextUnit(value = 0.35f, type = TextUnitType.Sp), - lineHeight = TextUnit(value = 28f, type = TextUnitType.Sp), - lineHeightStyle = LineHeightStyle( - alignment = LineHeightStyle.Alignment.Center, - trim = LineHeightStyle.Trim.None, - ), - ) - - val headingBold22: TextStyle = TextStyle( - fontFamily = fontFamily, - fontSize = 22.sp, - fontWeight = FontWeight.Bold, - letterSpacing = TextUnit(value = 0.35f, type = TextUnitType.Sp), + letterSpacing = TextUnit(value = -0.26f, type = TextUnitType.Sp), lineHeight = TextUnit(value = 28f, type = TextUnitType.Sp), lineHeightStyle = LineHeightStyle( alignment = LineHeightStyle.Alignment.Center, trim = LineHeightStyle.Trim.None, ), + lineBreak = LineBreak.Heading, ) val headingSemibold22: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 22.sp, fontWeight = FontWeight.SemiBold, - letterSpacing = TextUnit(value = 0.38f, type = TextUnitType.Sp), + letterSpacing = TextUnit(value = -0.26f, type = TextUnitType.Sp), lineHeight = TextUnit(value = 28f, type = TextUnitType.Sp), lineHeightStyle = LineHeightStyle( alignment = LineHeightStyle.Alignment.Center, trim = LineHeightStyle.Trim.None, ), + lineBreak = LineBreak.Heading, + ) + + val headingBold22: TextStyle = TextStyle( + fontFamily = fontFamily, + fontSize = 22.sp, + fontWeight = FontWeight.Bold, + letterSpacing = TextUnit(value = -0.26f, type = TextUnitType.Sp), + lineHeight = TextUnit(value = 28f, type = TextUnitType.Sp), + lineHeightStyle = LineHeightStyle( + alignment = LineHeightStyle.Alignment.Center, + trim = LineHeightStyle.Trim.None, + ), + lineBreak = LineBreak.Heading, ) val headingRegular20: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 20.sp, fontWeight = FontWeight.Normal, - letterSpacing = TextUnit(value = 0.38f, type = TextUnitType.Sp), + letterSpacing = TextUnit(value = -0.45f, type = TextUnitType.Sp), lineHeight = TextUnit(value = 24f, type = TextUnitType.Sp), lineHeightStyle = LineHeightStyle( alignment = LineHeightStyle.Alignment.Center, trim = LineHeightStyle.Trim.None, ), + lineBreak = LineBreak.Heading, ) val headingSemibold20: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 20.sp, fontWeight = FontWeight.SemiBold, - letterSpacing = TextUnit(value = 0.38f, type = TextUnitType.Sp), + letterSpacing = TextUnit(value = -1.2f, type = TextUnitType.Sp), lineHeight = TextUnit(value = 24f, type = TextUnitType.Sp), lineHeightStyle = LineHeightStyle( alignment = LineHeightStyle.Alignment.Center, trim = LineHeightStyle.Trim.None, ), + lineBreak = LineBreak.Heading, ) val headingRegular17: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 17.sp, fontWeight = FontWeight.Normal, - letterSpacing = TextUnit(value = -0.41f, type = TextUnitType.Sp), + letterSpacing = TextUnit(value = -0.43f, type = TextUnitType.Sp), lineHeight = TextUnit(value = 20f, type = TextUnitType.Sp), lineHeightStyle = LineHeightStyle( alignment = LineHeightStyle.Alignment.Center, trim = LineHeightStyle.Trim.None, ), + lineBreak = LineBreak.Heading, + ) + + val headingMedium17: TextStyle = TextStyle( + fontFamily = fontFamily, + fontSize = 17.sp, + fontWeight = FontWeight.Medium, + letterSpacing = TextUnit(value = -0.43f, type = TextUnitType.Sp), + lineHeight = TextUnit(value = 20f, type = TextUnitType.Sp), + lineHeightStyle = LineHeightStyle( + alignment = LineHeightStyle.Alignment.Center, + trim = LineHeightStyle.Trim.None, + ), + lineBreak = LineBreak.Heading, ) val headingSemibold17: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 17.sp, fontWeight = FontWeight.SemiBold, - letterSpacing = TextUnit(value = -0.2f, type = TextUnitType.Sp), + letterSpacing = TextUnit(value = -0.43f, type = TextUnitType.Sp), lineHeight = TextUnit(value = 20f, type = TextUnitType.Sp), lineHeightStyle = LineHeightStyle( alignment = LineHeightStyle.Alignment.Center, trim = LineHeightStyle.Trim.None, ), + lineBreak = LineBreak.Heading, ) val bodyRegular16: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 16.sp, fontWeight = FontWeight.Normal, - letterSpacing = TextUnit(value = -0.32f, type = TextUnitType.Sp), - lineHeight = TextUnit(value = 20f, type = TextUnitType.Sp), - lineHeightStyle = LineHeightStyle( - alignment = LineHeightStyle.Alignment.Center, - trim = LineHeightStyle.Trim.None, - ), - ) - - val bodySemibold16: TextStyle = TextStyle( - fontFamily = fontFamily, - fontSize = 16.sp, - fontWeight = FontWeight.SemiBold, - letterSpacing = TextUnit(value = -0.32f, type = TextUnitType.Sp), + letterSpacing = TextUnit(value = -0.31f, type = TextUnitType.Sp), lineHeight = TextUnit(value = 20f, type = TextUnitType.Sp), lineHeightStyle = LineHeightStyle( alignment = LineHeightStyle.Alignment.Center, @@ -202,7 +230,7 @@ class TangemTypography2 internal constructor( fontFamily = fontFamily, fontSize = 16.sp, fontWeight = FontWeight.Medium, - letterSpacing = TextUnit(value = -0.32f, type = TextUnitType.Sp), + letterSpacing = TextUnit(value = -0.31f, type = TextUnitType.Sp), lineHeight = TextUnit(value = 20f, type = TextUnitType.Sp), lineHeightStyle = LineHeightStyle( alignment = LineHeightStyle.Alignment.Center, @@ -210,6 +238,22 @@ class TangemTypography2 internal constructor( ), ) + val bodySemibold16: TextStyle = TextStyle( + fontFamily = fontFamily, + fontSize = 16.sp, + fontWeight = FontWeight.SemiBold, + letterSpacing = TextUnit(value = -0.31f, type = TextUnitType.Sp), + lineHeight = TextUnit(value = 20f, type = TextUnitType.Sp), + lineHeightStyle = LineHeightStyle( + alignment = LineHeightStyle.Alignment.Center, + trim = LineHeightStyle.Trim.None, + ), + ) + + @Deprecated( + "will be removed", + replaceWith = ReplaceWith("calloutRegular15"), + ) val bodyRegular15: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 15.sp, @@ -222,6 +266,34 @@ class TangemTypography2 internal constructor( ), ) + val calloutRegular15: TextStyle = TextStyle( + fontFamily = fontFamily, + fontSize = 15.sp, + fontWeight = FontWeight.Normal, + letterSpacing = TextUnit(value = -0.23f, type = TextUnitType.Sp), + lineHeight = TextUnit(value = 16f, type = TextUnitType.Sp), + lineHeightStyle = LineHeightStyle( + alignment = LineHeightStyle.Alignment.Center, + trim = LineHeightStyle.Trim.None, + ), + ) + + val calloutSemibold15: TextStyle = TextStyle( + fontFamily = fontFamily, + fontSize = 15.sp, + fontWeight = FontWeight.SemiBold, + letterSpacing = TextUnit(value = -0.23f, type = TextUnitType.Sp), + lineHeight = TextUnit(value = 16f, type = TextUnitType.Sp), + lineHeightStyle = LineHeightStyle( + alignment = LineHeightStyle.Alignment.Center, + trim = LineHeightStyle.Trim.None, + ), + ) + + @Deprecated( + message = "will be removed", + replaceWith = ReplaceWith("calloutSemibold15"), + ) val bodySemibold15: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 15.sp, @@ -234,6 +306,34 @@ class TangemTypography2 internal constructor( ), ) + val subheadlineRegular14: TextStyle = TextStyle( + fontFamily = fontFamily, + fontSize = 14.sp, + fontWeight = FontWeight.Normal, + letterSpacing = TextUnit(value = -0.15f, type = TextUnitType.Sp), + lineHeight = TextUnit(value = 16f, type = TextUnitType.Sp), + lineHeightStyle = LineHeightStyle( + alignment = LineHeightStyle.Alignment.Center, + trim = LineHeightStyle.Trim.None, + ), + ) + + val subheadlineMedium14: TextStyle = TextStyle( + fontFamily = fontFamily, + fontSize = 14.sp, + fontWeight = FontWeight.Medium, + letterSpacing = TextUnit(value = -0.15f, type = TextUnitType.Sp), + lineHeight = TextUnit(value = 16f, type = TextUnitType.Sp), + lineHeightStyle = LineHeightStyle( + alignment = LineHeightStyle.Alignment.Center, + trim = LineHeightStyle.Trim.None, + ), + ) + + @Deprecated( + "will be removed", + replaceWith = ReplaceWith("subheadlineRegular14"), + ) val bodyRegular14: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 14.sp, @@ -258,6 +358,10 @@ class TangemTypography2 internal constructor( ), ) + @Deprecated( + message = "will be removed", + replaceWith = ReplaceWith("captionMedium13"), + ) val captionSemibold13: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 13.sp, @@ -270,6 +374,18 @@ class TangemTypography2 internal constructor( ), ) + val captionMedium13: TextStyle = TextStyle( + fontFamily = fontFamily, + fontSize = 13.sp, + fontWeight = FontWeight.Medium, + letterSpacing = TextUnit(value = -0.08f, type = TextUnitType.Sp), + lineHeight = TextUnit(value = 16f, type = TextUnitType.Sp), + lineHeightStyle = LineHeightStyle( + alignment = LineHeightStyle.Alignment.Center, + trim = LineHeightStyle.Trim.None, + ), + ) + val captionRegular12: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 12.sp, @@ -282,6 +398,10 @@ class TangemTypography2 internal constructor( ), ) + @Deprecated( + "will be removed", + replaceWith = ReplaceWith("captionMedium12"), + ) val captionSemibold12: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 12.sp, @@ -294,11 +414,23 @@ class TangemTypography2 internal constructor( ), ) + val captionMedium12: TextStyle = TextStyle( + fontFamily = fontFamily, + fontSize = 12.sp, + fontWeight = FontWeight.Medium, + letterSpacing = TextUnit(value = 0.0f, type = TextUnitType.Sp), + lineHeight = TextUnit(value = 16f, type = TextUnitType.Sp), + lineHeightStyle = LineHeightStyle( + alignment = LineHeightStyle.Alignment.Center, + trim = LineHeightStyle.Trim.None, + ), + ) + val captionRegular11: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 11.sp, fontWeight = FontWeight.Normal, - letterSpacing = TextUnit(value = 0.07f, type = TextUnitType.Sp), + letterSpacing = TextUnit(value = 0.06f, type = TextUnitType.Sp), lineHeight = TextUnit(value = 12f, type = TextUnitType.Sp), lineHeightStyle = LineHeightStyle( alignment = LineHeightStyle.Alignment.Center, @@ -306,6 +438,10 @@ class TangemTypography2 internal constructor( ), ) + @Deprecated( + "will be removed", + replaceWith = ReplaceWith("captionMedium11"), + ) val captionSemibold11: TextStyle = TextStyle( fontFamily = fontFamily, fontSize = 11.sp, @@ -317,6 +453,18 @@ class TangemTypography2 internal constructor( trim = LineHeightStyle.Trim.None, ), ) + + val captionMedium11: TextStyle = TextStyle( + fontFamily = fontFamily, + fontSize = 11.sp, + fontWeight = FontWeight.Medium, + letterSpacing = TextUnit(value = 0.06f, type = TextUnitType.Sp), + lineHeight = TextUnit(value = 12f, type = TextUnitType.Sp), + lineHeightStyle = LineHeightStyle( + alignment = LineHeightStyle.Alignment.Center, + trim = LineHeightStyle.Trim.None, + ), + ) } // region Preview @@ -330,24 +478,29 @@ private fun TangemTypography2_Preview() { TangemTheme.typography2.headingRegular34, TangemTheme.typography2.headingBold34, TangemTheme.typography2.headingRegular28, + TangemTheme.typography2.headingSemibold28, TangemTheme.typography2.headingBold28, TangemTheme.typography2.headingRegular22, + TangemTheme.typography2.headingSemibold22, TangemTheme.typography2.headingBold22, TangemTheme.typography2.headingRegular20, TangemTheme.typography2.headingSemibold20, TangemTheme.typography2.headingRegular17, + TangemTheme.typography2.headingMedium17, TangemTheme.typography2.headingSemibold17, TangemTheme.typography2.bodyRegular16, + TangemTheme.typography2.bodyMedium16, TangemTheme.typography2.bodySemibold16, - TangemTheme.typography2.bodyRegular15, - TangemTheme.typography2.bodySemibold15, - TangemTheme.typography2.bodyRegular14, + TangemTheme.typography2.calloutRegular15, + TangemTheme.typography2.calloutSemibold15, + TangemTheme.typography2.subheadlineRegular14, + TangemTheme.typography2.subheadlineMedium14, TangemTheme.typography2.captionRegular13, - TangemTheme.typography2.captionSemibold13, + TangemTheme.typography2.captionMedium13, TangemTheme.typography2.captionRegular12, - TangemTheme.typography2.captionSemibold12, + TangemTheme.typography2.captionMedium12, TangemTheme.typography2.captionRegular11, - TangemTheme.typography2.captionSemibold11, + TangemTheme.typography2.captionMedium11, ) Column( diff --git a/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/entity/StoryBookPage.kt b/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/entity/StoryBookPage.kt index 1efc678bcb..bf95156d7d 100644 --- a/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/entity/StoryBookPage.kt +++ b/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/entity/StoryBookPage.kt @@ -59,4 +59,9 @@ internal data class TangemHeaderRowStory( internal data class TangemSearchFieldStory( val selectedShape: TangemFieldShape, val onShapeChange: (TangemFieldShape) -> Unit, +) : StoryBookPage + +internal data class TypographyStory( + val isFontScaleDefault: Boolean, + val onFontScaleToggle: () -> Unit, ) : StoryBookPage \ No newline at end of file diff --git a/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/page/typography/Build.kt b/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/page/typography/Build.kt new file mode 100644 index 0000000000..6cf7af1af3 --- /dev/null +++ b/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/page/typography/Build.kt @@ -0,0 +1,15 @@ +package com.tangem.feature.tester.presentation.storybook.page.typography + +import com.tangem.feature.tester.presentation.storybook.entity.TypographyStory +import com.tangem.feature.tester.presentation.storybook.viewmodel.StateUpdater +import com.tangem.feature.tester.presentation.storybook.viewmodel.storyPageFactory + +internal fun StateUpdater.build(): TypographyStory { + return TypographyStory( + isFontScaleDefault = false, + onFontScaleToggle = { updateStory { it.copy(isFontScaleDefault = !it.isFontScaleDefault) } }, + ) +} + +internal val typographyStoryFactory + get() = storyPageFactory(StateUpdater::build) \ No newline at end of file diff --git a/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/page/typography/TypographyStory.kt b/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/page/typography/TypographyStory.kt new file mode 100644 index 0000000000..e598b3c413 --- /dev/null +++ b/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/page/typography/TypographyStory.kt @@ -0,0 +1,138 @@ +package com.tangem.feature.tester.presentation.storybook.page.typography + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.navigationBarsPadding +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.statusBarsPadding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.Density +import androidx.compose.ui.unit.dp +import com.tangem.core.ui.res.TangemTheme +import com.tangem.feature.tester.presentation.storybook.entity.TypographyStory as TypographyStoryState + +private data class TypographyItem(val name: String, val style: TextStyle) + +@Composable +internal fun TypographyStory(state: TypographyStoryState, modifier: Modifier = Modifier) { + if (state.isFontScaleDefault) { + val density = LocalDensity.current + val overriddenDensity = remember(density) { + Density(density = density.density, fontScale = 1f) + } + CompositionLocalProvider(LocalDensity provides overriddenDensity) { + TypographyContent(state = state, modifier = modifier) + } + } else { + TypographyContent(state = state, modifier = modifier) + } +} + +@Suppress("LongMethod", "ModifierHeightWithText") +@Composable +private fun TypographyContent(state: TypographyStoryState, modifier: Modifier = Modifier) { + val typography2 = TangemTheme.typography2 + val items = remember(typography2) { + listOf( + TypographyItem("titleRegular44", typography2.titleRegular44), + TypographyItem("headingRegular34", typography2.headingRegular34), + TypographyItem("headingBold34", typography2.headingBold34), + TypographyItem("headingRegular28", typography2.headingRegular28), + TypographyItem("headingSemibold28", typography2.headingSemibold28), + TypographyItem("headingBold28", typography2.headingBold28), + TypographyItem("headingRegular22", typography2.headingRegular22), + TypographyItem("headingSemibold22", typography2.headingSemibold22), + TypographyItem("headingBold22", typography2.headingBold22), + TypographyItem("headingRegular20", typography2.headingRegular20), + TypographyItem("headingSemibold20", typography2.headingSemibold20), + TypographyItem("headingRegular17", typography2.headingRegular17), + TypographyItem("headingMedium17", typography2.headingMedium17), + TypographyItem("headingSemibold17", typography2.headingSemibold17), + TypographyItem("bodyRegular16", typography2.bodyRegular16), + TypographyItem("bodyMedium16", typography2.bodyMedium16), + TypographyItem("bodySemibold16", typography2.bodySemibold16), + TypographyItem("calloutRegular15", typography2.calloutRegular15), + TypographyItem("calloutSemibold15", typography2.calloutSemibold15), + TypographyItem("subheadlineRegular14", typography2.subheadlineRegular14), + TypographyItem("subheadlineMedium14", typography2.subheadlineMedium14), + TypographyItem("captionRegular13", typography2.captionRegular13), + TypographyItem("captionMedium13", typography2.captionMedium13), + TypographyItem("captionRegular12", typography2.captionRegular12), + TypographyItem("captionMedium12", typography2.captionMedium12), + TypographyItem("captionRegular11", typography2.captionRegular11), + TypographyItem("captionMedium11", typography2.captionMedium11), + ) + } + + LazyColumn( + verticalArrangement = Arrangement.spacedBy(32.dp), + modifier = modifier + .statusBarsPadding() + .navigationBarsPadding() + .padding(top = 48.dp) + .fillMaxSize() + .background(TangemTheme.colors2.surface.level1), + ) { + item(key = "toggle") { + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween, + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp), + ) { + Text( + text = "Force fontScale = 1.0", + style = TangemTheme.typography2.bodyMedium16, + color = TangemTheme.colors2.text.neutral.primary, + ) + Switch( + checked = state.isFontScaleDefault, + onCheckedChange = { state.onFontScaleToggle() }, + ) + } + } + itemsIndexed(items = items, key = { _, item -> item.name }) { index, item -> + Row( + modifier = Modifier + .border(width = 1.dp, color = TangemTheme.colors2.surface.level2) + .height(if (index == 0) 48.dp else 44.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween, + ) { + Text( + text = "Lorem ipsum", + style = item.style, + color = TangemTheme.colors2.text.neutral.primary, + modifier = Modifier.padding(horizontal = 16.dp), + ) + + Text( + text = item.name, + style = TangemTheme.typography2.captionRegular12, + color = TangemTheme.colors2.text.neutral.tertiary, + textAlign = TextAlign.End, + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp), + ) + } + } + } +} \ No newline at end of file diff --git a/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/ui/StoryBookListScreen.kt b/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/ui/StoryBookListScreen.kt index b413ec4bce..3a8b75942d 100644 --- a/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/ui/StoryBookListScreen.kt +++ b/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/ui/StoryBookListScreen.kt @@ -26,6 +26,7 @@ import com.tangem.feature.tester.presentation.storybook.page.opportunities.oppor import com.tangem.feature.tester.presentation.storybook.page.searchfield.tangemSearchFieldStoryFactory import com.tangem.feature.tester.presentation.storybook.page.tabs.tangemSegmentedPickerStoryFactory import com.tangem.feature.tester.presentation.storybook.page.tokenrow.tangemTokenRowStoryFactory +import com.tangem.feature.tester.presentation.storybook.page.typography.typographyStoryFactory private data class StoryItem(val title: String, val factory: StoryPageFactory) @@ -41,6 +42,7 @@ private fun buildStories() = listOf( StoryItem(title = "📑 Header Row", factory = tangemHeaderRowStoryFactory), StoryItem(title = "📋 Context Menu", factory = tangemContextMenuStoryFactory), StoryItem(title = "🔍 Search Field", factory = tangemSearchFieldStoryFactory), + StoryItem(title = "🔤 Typography", factory = typographyStoryFactory), ) @Composable diff --git a/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/ui/StoryBookScreen.kt b/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/ui/StoryBookScreen.kt index 14e0c65291..e8e17c0645 100644 --- a/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/ui/StoryBookScreen.kt +++ b/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/storybook/ui/StoryBookScreen.kt @@ -17,6 +17,7 @@ import com.tangem.feature.tester.presentation.storybook.entity.TangemMessageStor import com.tangem.feature.tester.presentation.storybook.entity.TangemSearchFieldStory import com.tangem.feature.tester.presentation.storybook.entity.TangemSegmentedPickerStory import com.tangem.feature.tester.presentation.storybook.entity.TangemTokenRowStory +import com.tangem.feature.tester.presentation.storybook.entity.TypographyStory import com.tangem.feature.tester.presentation.storybook.page.background.NorthernLightsStory import com.tangem.feature.tester.presentation.storybook.page.badge.TangemBadgeStory import com.tangem.feature.tester.presentation.storybook.page.buttons.ButtonsStory @@ -28,6 +29,7 @@ import com.tangem.feature.tester.presentation.storybook.page.tokenrow.TangemToke import com.tangem.feature.tester.presentation.storybook.page.headerrow.TangemHeaderRowStory import com.tangem.feature.tester.presentation.storybook.page.contextmenu.TangemContextMenuStory import com.tangem.feature.tester.presentation.storybook.page.searchfield.TangemSearchFieldStory +import com.tangem.feature.tester.presentation.storybook.page.typography.TypographyStory @Composable internal fun StoryBookScreen(state: StoryBookUM, modifier: Modifier = Modifier) { @@ -51,6 +53,7 @@ internal fun StoryBookScreen(state: StoryBookUM, modifier: Modifier = Modifier) is TangemHeaderRowStory -> TangemHeaderRowStory(state = storyState) is TangemContextMenuStory -> TangemContextMenuStory(state = storyState) is TangemSearchFieldStory -> TangemSearchFieldStory(state = storyState) + is TypographyStory -> TypographyStory(state = storyState) } } } \ No newline at end of file