Desktop: warm-graphite theme (dark charcoal + gold accent)
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.
This commit is contained in:
parent
9906a5af00
commit
9618067fc4
2 changed files with 70 additions and 2 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
69
desktop/app/src/main/kotlin/com/shonar/desktop/Theme.kt
Normal file
69
desktop/app/src/main/kotlin/com/shonar/desktop/Theme.kt
Normal file
|
|
@ -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)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue