diff --git a/app/shared/src/commonMain/composeResources/font/google_sans_bold.ttf b/app/shared/src/commonMain/composeResources/font/google_sans_bold.ttf new file mode 100644 index 0000000..71b847f Binary files /dev/null and b/app/shared/src/commonMain/composeResources/font/google_sans_bold.ttf differ diff --git a/app/shared/src/commonMain/composeResources/font/google_sans_bold_italic.ttf b/app/shared/src/commonMain/composeResources/font/google_sans_bold_italic.ttf new file mode 100644 index 0000000..82e0e6a Binary files /dev/null and b/app/shared/src/commonMain/composeResources/font/google_sans_bold_italic.ttf differ diff --git a/app/shared/src/commonMain/composeResources/font/google_sans_italic.ttf b/app/shared/src/commonMain/composeResources/font/google_sans_italic.ttf new file mode 100644 index 0000000..1f9059a Binary files /dev/null and b/app/shared/src/commonMain/composeResources/font/google_sans_italic.ttf differ diff --git a/app/shared/src/commonMain/composeResources/font/google_sans_medium.ttf b/app/shared/src/commonMain/composeResources/font/google_sans_medium.ttf new file mode 100644 index 0000000..8b9aebc Binary files /dev/null and b/app/shared/src/commonMain/composeResources/font/google_sans_medium.ttf differ diff --git a/app/shared/src/commonMain/composeResources/font/google_sans_medium_italic.ttf b/app/shared/src/commonMain/composeResources/font/google_sans_medium_italic.ttf new file mode 100644 index 0000000..407b297 Binary files /dev/null and b/app/shared/src/commonMain/composeResources/font/google_sans_medium_italic.ttf differ diff --git a/app/shared/src/commonMain/composeResources/font/google_sans_regular.ttf b/app/shared/src/commonMain/composeResources/font/google_sans_regular.ttf new file mode 100644 index 0000000..cc37c3f Binary files /dev/null and b/app/shared/src/commonMain/composeResources/font/google_sans_regular.ttf differ diff --git a/app/shared/src/commonMain/composeResources/font/google_sans_semibold.ttf b/app/shared/src/commonMain/composeResources/font/google_sans_semibold.ttf new file mode 100644 index 0000000..b80284d Binary files /dev/null and b/app/shared/src/commonMain/composeResources/font/google_sans_semibold.ttf differ diff --git a/app/shared/src/commonMain/composeResources/font/google_sans_semibold_italic.ttf b/app/shared/src/commonMain/composeResources/font/google_sans_semibold_italic.ttf new file mode 100644 index 0000000..4d34849 Binary files /dev/null and b/app/shared/src/commonMain/composeResources/font/google_sans_semibold_italic.ttf differ diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/GoogleSansTypography.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/GoogleSansTypography.kt new file mode 100644 index 0000000..c3dcb51 --- /dev/null +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/GoogleSansTypography.kt @@ -0,0 +1,56 @@ +package ru.fromchat.ui + +import androidx.compose.material3.Typography +import androidx.compose.runtime.Composable +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.text.font.FontWeight +import org.jetbrains.compose.resources.Font +import ru.fromchat.Res +import ru.fromchat.google_sans_bold +import ru.fromchat.google_sans_bold_italic +import ru.fromchat.google_sans_italic +import ru.fromchat.google_sans_medium +import ru.fromchat.google_sans_medium_italic +import ru.fromchat.google_sans_regular +import ru.fromchat.google_sans_semibold +import ru.fromchat.google_sans_semibold_italic + +/** + * Google Sans (static TTFs from Downloads bundle) for app-wide [MaterialTheme.typography]. + * The chats header brand title keeps its own Montserrat stack in [ru.fromchat.ui.branding.FromChatBrandTitle]. + */ +@Composable +fun googleSansFontFamily(): FontFamily = FontFamily( + Font(Res.font.google_sans_regular, FontWeight.Normal, FontStyle.Normal), + Font(Res.font.google_sans_italic, FontWeight.Normal, FontStyle.Italic), + Font(Res.font.google_sans_medium, FontWeight.Medium, FontStyle.Normal), + Font(Res.font.google_sans_medium_italic, FontWeight.Medium, FontStyle.Italic), + Font(Res.font.google_sans_semibold, FontWeight.SemiBold, FontStyle.Normal), + Font(Res.font.google_sans_semibold_italic, FontWeight.SemiBold, FontStyle.Italic), + Font(Res.font.google_sans_bold, FontWeight.Bold, FontStyle.Normal), + Font(Res.font.google_sans_bold_italic, FontWeight.Bold, FontStyle.Italic), +) + +@Composable +fun googleSansMaterialTypography(): Typography { + val family = googleSansFontFamily() + val base = Typography() + return base.copy( + displayLarge = base.displayLarge.copy(fontFamily = family), + displayMedium = base.displayMedium.copy(fontFamily = family), + displaySmall = base.displaySmall.copy(fontFamily = family), + headlineLarge = base.headlineLarge.copy(fontFamily = family), + headlineMedium = base.headlineMedium.copy(fontFamily = family), + headlineSmall = base.headlineSmall.copy(fontFamily = family), + titleLarge = base.titleLarge.copy(fontFamily = family), + titleMedium = base.titleMedium.copy(fontFamily = family), + titleSmall = base.titleSmall.copy(fontFamily = family), + bodyLarge = base.bodyLarge.copy(fontFamily = family), + bodyMedium = base.bodyMedium.copy(fontFamily = family), + bodySmall = base.bodySmall.copy(fontFamily = family), + labelLarge = base.labelLarge.copy(fontFamily = family), + labelMedium = base.labelMedium.copy(fontFamily = family), + labelSmall = base.labelSmall.copy(fontFamily = family), + ) +} diff --git a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/Theme.kt b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/Theme.kt index b4a113e..88b3364 100644 --- a/app/shared/src/commonMain/kotlin/ru/fromchat/ui/Theme.kt +++ b/app/shared/src/commonMain/kotlin/ru/fromchat/ui/Theme.kt @@ -4,6 +4,7 @@ import androidx.compose.animation.animateColorAsState import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material3.ColorScheme import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Typography import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -113,8 +114,11 @@ fun FromChatTheme( surfaceContainerHighest = surfaceContainerHighest ) + val typography: Typography = googleSansMaterialTypography() + MaterialTheme( colorScheme = colorScheme, + typography = typography, content = content ) }