From 9618067fc425fe159669c114ea7f0ebe18345b35 Mon Sep 17 00:00:00 2001 From: avi Date: Sun, 13 Sep 2026 02:58:20 -0500 Subject: [PATCH] Desktop: warm-graphite theme (dark charcoal + gold accent) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Was running on bare MaterialTheme defaults (stock lavender). New desktop-only Theme.kt: darkColorScheme tuned to the Skills Hub hero palette — #1A1A1A graphite bg, lifted card surfaces, gold primary (E0B23A, text-safe contrast on cards), olive pill fills, warm-tuned error red, cool slate tertiary. GoldInk for text on gold fills. Status semantics: done=gold primary, failed=error, queued=variant. Verified by screenshot on the running app (library + settings): cohesive dark-gold, links legible, no contrast failures. --- .../main/kotlin/com/shonar/desktop/Main.kt | 3 +- .../main/kotlin/com/shonar/desktop/Theme.kt | 69 +++++++++++++++++++ 2 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 desktop/app/src/main/kotlin/com/shonar/desktop/Theme.kt diff --git a/desktop/app/src/main/kotlin/com/shonar/desktop/Main.kt b/desktop/app/src/main/kotlin/com/shonar/desktop/Main.kt index 8804685..e4be34d 100644 --- a/desktop/app/src/main/kotlin/com/shonar/desktop/Main.kt +++ b/desktop/app/src/main/kotlin/com/shonar/desktop/Main.kt @@ -3,7 +3,6 @@ package com.shonar.desktop import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue @@ -22,7 +21,7 @@ fun main() = application { title = "SHONAR Desktop", state = rememberWindowState(width = 1100.dp, height = 800.dp), ) { - MaterialTheme { + ShonarTheme { Surface(Modifier.fillMaxSize()) { Box(Modifier.fillMaxSize().padding(20.dp)) { when (screen) { diff --git a/desktop/app/src/main/kotlin/com/shonar/desktop/Theme.kt b/desktop/app/src/main/kotlin/com/shonar/desktop/Theme.kt new file mode 100644 index 0000000..5c200a4 --- /dev/null +++ b/desktop/app/src/main/kotlin/com/shonar/desktop/Theme.kt @@ -0,0 +1,69 @@ +package com.shonar.desktop + +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color + +/** + * SHONAR Desktop theme — "warm graphite": near-black charcoal surfaces + * with an olive-gold accent, inspired by the Skills Hub hero design. + * Desktop-only for now (Android keeps its own ui/theme/Theme.kt). + * + * Status semantics in the library list map to scheme roles: + * done -> primary (gold), failed -> error (red), queued/running -> + * onSurfaceVariant with a primary progress bar. + */ +private val ShonarGold = Color(0xFFE0B23A) // text-safe gold (brighter for AA on cards) +private val ShonarGoldBright = Color(0xFFF0C419) +private val GoldInk = Color(0xFF1F1800) // text on gold fills (AA) +private val GraphiteBg = Color(0xFF1A1A1A) +private val GraphiteSurface = Color(0xFF222222) +private val GraphiteHigh = Color(0xFF2B2B2B) +private val InkPrimary = Color(0xFFF4F4F4) +private val InkSecondary = Color(0xFFB3B3B3) +private val InkMuted = Color(0xFF8A8A8A) +private val OutlineWarm = Color(0xFF3A3A3A) +private val DangerWarm = Color(0xFFE5544F) + +private val ShonarDarkScheme = darkColorScheme( + primary = ShonarGold, + onPrimary = GoldInk, + primaryContainer = Color(0xFF3A3216), + onPrimaryContainer = ShonarGoldBright, + + secondary = Color(0xFFB99B5E), + onSecondary = GoldInk, + secondaryContainer = Color(0xFF332C1A), + onSecondaryContainer = Color(0xFFE8D9AE), + + tertiary = Color(0xFF8FA6B2), // cool counterpoint (info-ish) + onTertiary = Color(0xFF0E1A20), + tertiaryContainer = Color(0xFF2A3B45), + onTertiaryContainer = Color(0xFFCDE2EC), + + background = GraphiteBg, + onBackground = InkPrimary, + + surface = GraphiteSurface, + onSurface = InkPrimary, + surfaceVariant = Color(0xFF2E2A21), + onSurfaceVariant = InkSecondary, + surfaceContainer = GraphiteHigh, // cards lift off the bg + surfaceContainerHigh = Color(0xFF333333), + surfaceContainerHighest = Color(0xFF3A3A3A), + + outline = OutlineWarm, + outlineVariant = Color(0xFF2E2E2E), + + error = DangerWarm, + onError = Color(0xFF2B0A08), + errorContainer = Color(0xFF47201E), + onErrorContainer = Color(0xFFFFB4AF), +) + +/** Wrap the app content in the SHONAR dark-gold theme. */ +@Composable +fun ShonarTheme(content: @Composable () -> Unit) { + MaterialTheme(colorScheme = ShonarDarkScheme, content = content) +}