diff --git a/android-app/app/src/main/java/de/harheimertc/ui/theme/Color.kt b/android-app/app/src/main/java/de/harheimertc/ui/theme/Color.kt new file mode 100644 index 0000000..f8b1da1 --- /dev/null +++ b/android-app/app/src/main/java/de/harheimertc/ui/theme/Color.kt @@ -0,0 +1,33 @@ +package de.harheimertc.ui.theme + +import androidx.compose.ui.graphics.Color + +// Primary (Tailwind) +val Primary50 = Color(0xFFFEF2F2) +val Primary100 = Color(0xFFFEE2E2) +val Primary200 = Color(0xFFFECACA) +val Primary300 = Color(0xFFFCA5A5) +val Primary400 = Color(0xFFF87171) +val Primary500 = Color(0xFFEF4444) +val Primary600 = Color(0xFFDC2626) +val Primary700 = Color(0xFFB91C1C) +val Primary800 = Color(0xFF991B1B) +val Primary900 = Color(0xFF7F1D1D) + +// Accent (Tailwind gray-ish palette) +val Accent50 = Color(0xFFFAFAFA) +val Accent100 = Color(0xFFF4F4F5) +val Accent200 = Color(0xFFE4E4E7) +val Accent300 = Color(0xFFD4D4D8) +val Accent400 = Color(0xFFA1A1AA) +val Accent500 = Color(0xFF71717A) +val Accent600 = Color(0xFF52525B) +val Accent700 = Color(0xFF3F3F46) +val Accent800 = Color(0xFF27272A) +val Accent900 = Color(0xFF18181B) + +// Other semantic colors +val AppBackground = Color(0xFFFFFFFF) +val AppSurface = Accent50 +val AppOnPrimary = Color(0xFFFFFFFF) +val AppError = Color(0xFFB00020) diff --git a/android-app/app/src/main/java/de/harheimertc/ui/theme/Theme.kt b/android-app/app/src/main/java/de/harheimertc/ui/theme/Theme.kt new file mode 100644 index 0000000..33aa5bc --- /dev/null +++ b/android-app/app/src/main/java/de/harheimertc/ui/theme/Theme.kt @@ -0,0 +1,41 @@ +package de.harheimertc.ui.theme + +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.runtime.Composable + +private val LightColors = lightColorScheme( + primary = Primary500, + onPrimary = AppOnPrimary, + primaryContainer = Primary100, + secondary = Accent500, + background = AppBackground, + surface = AppSurface, + error = AppError, +) + +private val DarkColors = darkColorScheme( + primary = Primary300, + onPrimary = AppOnPrimary, + primaryContainer = Primary700, + secondary = Accent300, + background = Accent900, + surface = Accent800, + error = AppError, +) + +@Composable +fun HarheimerTheme( + darkTheme: Boolean = false, + content: @Composable () -> Unit +) { + val colors = if (darkTheme) DarkColors else LightColors + + MaterialTheme( + colorScheme = colors, + typography = AppTypography, + shapes = MaterialTheme.shapes, + content = content + ) +} diff --git a/android-app/app/src/main/java/de/harheimertc/ui/theme/Typography.kt b/android-app/app/src/main/java/de/harheimertc/ui/theme/Typography.kt new file mode 100644 index 0000000..db897c5 --- /dev/null +++ b/android-app/app/src/main/java/de/harheimertc/ui/theme/Typography.kt @@ -0,0 +1,35 @@ +package de.harheimertc.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +// Placeholder typography mapping. Replace with bundled Inter / Montserrat fonts when added. +val AppTypography = Typography( + displayLarge = androidx.compose.ui.text.TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.SemiBold, + fontSize = 30.sp + ), + titleLarge = androidx.compose.ui.text.TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Medium, + fontSize = 20.sp + ), + bodyLarge = androidx.compose.ui.text.TextStyle( + fontFamily = FontFamily.SansSerif, + fontWeight = FontWeight.Normal, + fontSize = 16.sp + ), + bodyMedium = androidx.compose.ui.text.TextStyle( + fontFamily = FontFamily.SansSerif, + fontWeight = FontWeight.Normal, + fontSize = 14.sp + ), + labelSmall = androidx.compose.ui.text.TextStyle( + fontFamily = FontFamily.SansSerif, + fontWeight = FontWeight.Medium, + fontSize = 12.sp + ) +)