fix: WiP, themes

This commit is contained in:
Stefan Schüller 2022-02-06 15:29:57 +01:00
parent 4bde8d8957
commit 217efd2ba2
11 changed files with 609 additions and 124 deletions

View File

@ -23,11 +23,16 @@ x discover view
- Permissions for download
- subscribe / unsubscribe
x CI pipeline (gradle?)
- add language filter support
- add app language selection
- add themes and selection
- Add NSFW filter
- Translate all strings
- Swipe player down and up
Issues:
- Server change doesn't work until restart (retrofit)
- Login/logout needs to update UI
- Memory issue on explore list
- Word "Subscribe" too long in app bar
- VideoList meta bar can't be dynamic height, causes scroll back issue.
x Refreshing video list causes odd loading order of video items

View File

@ -43,4 +43,26 @@ object Constants {
const val APP_BACKGROUND_AUDIO_INTENT = "BACKGROUND_AUDIO"
// legacy color prefs
const val COLOR_PREF_RED = "AppTheme.RED"
const val COLOR_PREF_PINK = "AppTheme.PINK"
const val COLOR_PREF_PURPLE = "AppTheme.PURPLE"
const val COLOR_PREF_DEEPPURPLE = "AppTheme.DEEPPURPLE"
const val COLOR_PREF_INDIGO = "AppTheme.INDIGO"
const val COLOR_PREF_BLUE = "AppTheme.BLUE"
const val COLOR_PREF_LIGHTBLUE = "AppTheme.LIGHTBLUE"
const val COLOR_PREF_CYAN = "AppTheme.CYAN"
const val COLOR_PREF_TEAL = "AppTheme.TEAL"
const val COLOR_PREF_GREEN = "AppTheme.GREEN"
const val COLOR_PREF_LIGHTGREEN = "AppTheme.LIGHTGREEN"
const val COLOR_PREF_LIME = "AppTheme.LIME"
const val COLOR_PREF_YELLOW = "AppTheme.YELLOW"
const val COLOR_PREF_AMBER = "AppTheme.AMBER"
const val COLOR_PREF_ORANGE = "AppTheme.ORANGE"
const val COLOR_PREF_DEEPORANGE = "AppTheme.DEEPORANGE"
const val COLOR_PREF_BROWN = "AppTheme.BROWN"
const val COLOR_PREF_GRAY = "AppTheme.GRAY"
const val COLOR_PREF_BLUEGRAY = "AppTheme.BLUEGRAY"
}

View File

@ -102,11 +102,11 @@ class AddEditAddressViewModel @Inject constructor(
is AddEditAddressEvent.PrefillServerFromSearch -> {
onEvent(AddEditAddressEvent.EnteredServerName(event.server.name ?: ""))
onEvent(AddEditAddressEvent.EnteredServerHost(event.server.host ?: ""))
// onEvent(AddEditAddressEvent.EnteredServerHost(event.server.host ?: ""))
viewModelScope.launch {
Log.v("AEAVM", "Selected Server: " + event.server.host.toString())
Log.v("AEAVM", "Selected Server: " + event.server.host)
// TODO: doesn't work, textfield is not updated

View File

@ -12,6 +12,25 @@ import com.jamal.composeprefs.ui.PrefsScreen
import com.jamal.composeprefs.ui.prefs.*
import net.schueller.peertube.presentation.dataStore
import net.schueller.peertube.R
import net.schueller.peertube.common.Constants.COLOR_PREF_AMBER
import net.schueller.peertube.common.Constants.COLOR_PREF_BLUE
import net.schueller.peertube.common.Constants.COLOR_PREF_BLUEGRAY
import net.schueller.peertube.common.Constants.COLOR_PREF_BROWN
import net.schueller.peertube.common.Constants.COLOR_PREF_CYAN
import net.schueller.peertube.common.Constants.COLOR_PREF_DEEPORANGE
import net.schueller.peertube.common.Constants.COLOR_PREF_DEEPPURPLE
import net.schueller.peertube.common.Constants.COLOR_PREF_GRAY
import net.schueller.peertube.common.Constants.COLOR_PREF_GREEN
import net.schueller.peertube.common.Constants.COLOR_PREF_INDIGO
import net.schueller.peertube.common.Constants.COLOR_PREF_LIGHTBLUE
import net.schueller.peertube.common.Constants.COLOR_PREF_LIGHTGREEN
import net.schueller.peertube.common.Constants.COLOR_PREF_LIME
import net.schueller.peertube.common.Constants.COLOR_PREF_ORANGE
import net.schueller.peertube.common.Constants.COLOR_PREF_PINK
import net.schueller.peertube.common.Constants.COLOR_PREF_PURPLE
import net.schueller.peertube.common.Constants.COLOR_PREF_RED
import net.schueller.peertube.common.Constants.COLOR_PREF_TEAL
import net.schueller.peertube.common.Constants.COLOR_PREF_YELLOW
import net.schueller.peertube.common.Constants.PREF_ACCEPT_INSECURE_KEY
import net.schueller.peertube.common.Constants.PREF_BACKGROUND_AUDIO_KEY
import net.schueller.peertube.common.Constants.PREF_BACKGROUND_BEHAVIOR_KEY
@ -245,9 +264,25 @@ fun SettingsScreen() {
title = stringResource(R.string.pref_title_app_theme),
useSelectedAsSummary = true,
entries = mapOf(
"0" to "Entry 1",
"1" to "Entry 2",
"2" to "Entry 3"
COLOR_PREF_RED to stringResource(R.string.red),
COLOR_PREF_PINK to stringResource(R.string.pink),
COLOR_PREF_PURPLE to stringResource(R.string.purple),
COLOR_PREF_DEEPPURPLE to stringResource(R.string.deeppurple),
COLOR_PREF_INDIGO to stringResource(R.string.indigo),
COLOR_PREF_BLUE to stringResource(R.string.blue),
COLOR_PREF_LIGHTBLUE to stringResource(R.string.lightblue),
COLOR_PREF_CYAN to stringResource(R.string.cyan),
COLOR_PREF_TEAL to stringResource(R.string.teal),
COLOR_PREF_GREEN to stringResource(R.string.green),
COLOR_PREF_LIGHTGREEN to stringResource(R.string.lightgreen),
COLOR_PREF_LIME to stringResource(R.string.lime),
COLOR_PREF_YELLOW to stringResource(R.string.yellow),
COLOR_PREF_AMBER to stringResource(R.string.amber),
COLOR_PREF_ORANGE to stringResource(R.string.orange),
COLOR_PREF_DEEPORANGE to stringResource(R.string.deeporange),
COLOR_PREF_BROWN to stringResource(R.string.brown),
COLOR_PREF_GRAY to stringResource(R.string.gray),
COLOR_PREF_BLUEGRAY to stringResource(R.string.bluegray)
)
)
}

View File

@ -35,7 +35,6 @@ import net.schueller.peertube.feature_video.presentation.video.components.appBar
import net.schueller.peertube.feature_video.presentation.video.components.videoPlay.VideoPlayScreen
import net.schueller.peertube.feature_video.presentation.video.events.VideoPlayEvent
import net.schueller.peertube.feature_video.presentation.video.player.ExoPlayerHolder
import net.schueller.peertube.presentation.Screen
import kotlin.math.roundToInt
@OptIn(ExperimentalMaterialApi::class)

View File

@ -1,57 +0,0 @@
package net.schueller.peertube.presentation.ui.theme
import androidx.compose.ui.graphics.Color
val md_theme_light_primary = Color(0xFF1760a5)
val md_theme_light_onPrimary = Color(0xFFffffff)
val md_theme_light_primaryContainer = Color(0xFFd3e4ff)
val md_theme_light_onPrimaryContainer = Color(0xFF001c3a)
val md_theme_light_secondary = Color(0xFF545f70)
val md_theme_light_onSecondary = Color(0xFFffffff)
val md_theme_light_secondaryContainer = Color(0xFFd7e3f8)
val md_theme_light_onSecondaryContainer = Color(0xFF111c2b)
val md_theme_light_tertiary = Color(0xFF6d5677)
val md_theme_light_onTertiary = Color(0xFFffffff)
val md_theme_light_tertiaryContainer = Color(0xFFf5d9ff)
val md_theme_light_onTertiaryContainer = Color(0xFF261430)
val md_theme_light_error = Color(0xFFba1b1b)
val md_theme_light_errorContainer = Color(0xFFffdad4)
val md_theme_light_onError = Color(0xFFffffff)
val md_theme_light_onErrorContainer = Color(0xFF410001)
val md_theme_light_background = Color(0xFFfdfcff)
val md_theme_light_onBackground = Color(0xFF1b1b1d)
val md_theme_light_surface = Color(0xFFfdfcff)
val md_theme_light_onSurface = Color(0xFF1b1b1d)
val md_theme_light_surfaceVariant = Color(0xFFdfe2eb)
val md_theme_light_onSurfaceVariant = Color(0xFF43474e)
val md_theme_light_outline = Color(0xFF73777f)
val md_theme_light_inverseOnSurface = Color(0xFFf1f0f4)
val md_theme_light_inverseSurface = Color(0xFF2f3033)
val md_theme_dark_primary = Color(0xFFa1c9ff)
val md_theme_dark_onPrimary = Color(0xFF00315e)
val md_theme_dark_primaryContainer = Color(0xFF004884)
val md_theme_dark_onPrimaryContainer = Color(0xFFd3e4ff)
val md_theme_dark_secondary = Color(0xFFbcc7db)
val md_theme_dark_onSecondary = Color(0xFF263141)
val md_theme_dark_secondaryContainer = Color(0xFF3c4758)
val md_theme_dark_onSecondaryContainer = Color(0xFFd7e3f8)
val md_theme_dark_tertiary = Color(0xFFd9bde3)
val md_theme_dark_onTertiary = Color(0xFF3c2946)
val md_theme_dark_tertiaryContainer = Color(0xFF543f5e)
val md_theme_dark_onTertiaryContainer = Color(0xFFf5d9ff)
val md_theme_dark_error = Color(0xFFffb4a9)
val md_theme_dark_errorContainer = Color(0xFF930006)
val md_theme_dark_onError = Color(0xFF680003)
val md_theme_dark_onErrorContainer = Color(0xFFffdad4)
val md_theme_dark_background = Color(0xFF1b1b1d)
val md_theme_dark_onBackground = Color(0xFFe3e2e6)
val md_theme_dark_surface = Color(0xFF1b1b1d)
val md_theme_dark_onSurface = Color(0xFFe3e2e6)
val md_theme_dark_surfaceVariant = Color(0xFF43474e)
val md_theme_dark_onSurfaceVariant = Color(0xFFc3c6cf)
val md_theme_dark_outline = Color(0xFF8d9199)
val md_theme_dark_inverseOnSurface = Color(0xFF1b1b1d)
val md_theme_dark_inverseSurface = Color(0xFFe3e2e6)
val seed = Color(0xFF5175a4)
val error = Color(0xFFba1b1b)

View File

@ -1,76 +1,90 @@
package net.schueller.peertube.presentation.ui.theme
import android.content.Context
import android.util.Log
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.material3.darkColorScheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.core.booleanPreferencesKey
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import net.schueller.peertube.common.Constants
import net.schueller.peertube.common.Constants.COLOR_PREF_BLUE
import net.schueller.peertube.common.Constants.COLOR_PREF_GREEN
import net.schueller.peertube.common.Constants.COLOR_PREF_RED
import net.schueller.peertube.presentation.dataStore
private val LightThemeColors = lightColorScheme(
primary = md_theme_light_primary,
onPrimary = md_theme_light_onPrimary,
primaryContainer = md_theme_light_primaryContainer,
onPrimaryContainer = md_theme_light_onPrimaryContainer,
secondary = md_theme_light_secondary,
onSecondary = md_theme_light_onSecondary,
secondaryContainer = md_theme_light_secondaryContainer,
onSecondaryContainer = md_theme_light_onSecondaryContainer,
tertiary = md_theme_light_tertiary,
onTertiary = md_theme_light_onTertiary,
tertiaryContainer = md_theme_light_tertiaryContainer,
onTertiaryContainer = md_theme_light_onTertiaryContainer,
error = md_theme_light_error,
errorContainer = md_theme_light_errorContainer,
onError = md_theme_light_onError,
onErrorContainer = md_theme_light_onErrorContainer,
background = md_theme_light_background,
onBackground = md_theme_light_onBackground,
surface = md_theme_light_surface,
onSurface = md_theme_light_onSurface,
surfaceVariant = md_theme_light_surfaceVariant,
onSurfaceVariant = md_theme_light_onSurfaceVariant,
outline = md_theme_light_outline,
inverseOnSurface = md_theme_light_inverseOnSurface,
inverseSurface = md_theme_light_inverseSurface,
)
private val DarkThemeColors = darkColorScheme(
primary = md_theme_dark_primary,
onPrimary = md_theme_dark_onPrimary,
primaryContainer = md_theme_dark_primaryContainer,
onPrimaryContainer = md_theme_dark_onPrimaryContainer,
secondary = md_theme_dark_secondary,
onSecondary = md_theme_dark_onSecondary,
secondaryContainer = md_theme_dark_secondaryContainer,
onSecondaryContainer = md_theme_dark_onSecondaryContainer,
tertiary = md_theme_dark_tertiary,
onTertiary = md_theme_dark_onTertiary,
tertiaryContainer = md_theme_dark_tertiaryContainer,
onTertiaryContainer = md_theme_dark_onTertiaryContainer,
error = md_theme_dark_error,
errorContainer = md_theme_dark_errorContainer,
onError = md_theme_dark_onError,
onErrorContainer = md_theme_dark_onErrorContainer,
background = md_theme_dark_background,
onBackground = md_theme_dark_onBackground,
surface = md_theme_dark_surface,
onSurface = md_theme_dark_onSurface,
surfaceVariant = md_theme_dark_surfaceVariant,
onSurfaceVariant = md_theme_dark_onSurfaceVariant,
outline = md_theme_dark_outline,
inverseOnSurface = md_theme_dark_inverseOnSurface,
inverseSurface = md_theme_dark_inverseSurface,
)
@Composable
fun PeertubeTheme(
useDarkTheme: Boolean = isSystemInDarkTheme(),
content: @Composable() () -> Unit
) {
val colors = if (!useDarkTheme) {
LightThemeColors
val context = LocalContext.current
val sharedPreferences = context.getSharedPreferences(context.packageName + "_preferences", Context.MODE_PRIVATE)
// TODO: get pref out of dataStore, migrate old prefs
// val EXAMPLE_COUNTER = booleanPreferencesKey(Constants.PREF_DARK_MODE_KEY)
// val useDarkMode: Flow<Boolean> = LocalContext.current.dataStore.data
// .map { preferences ->
// preferences[EXAMPLE_COUNTER] ?: useDarkTheme
// }
//
val useDarkMode = sharedPreferences.getBoolean(
Constants.PREF_DARK_MODE_KEY,
useDarkTheme
)
Log.v("TH", "userdark: "+useDarkMode)
val theme = sharedPreferences.getString(
Constants.PREF_THEME_KEY,
COLOR_PREF_BLUE
)
Log.v("TH", "theme: "+theme)
// Support existing saved preferences in older version
// https://material-foundation.github.io/material-theme-builder/
val colors = if (!useDarkMode) {
when (theme) {
COLOR_PREF_BLUE -> {
net.schueller.peertube.presentation.ui.theme.colors.blue.LightThemeColors
}
COLOR_PREF_RED -> {
net.schueller.peertube.presentation.ui.theme.colors.red.LightThemeColors
}
COLOR_PREF_GREEN -> {
net.schueller.peertube.presentation.ui.theme.colors.green.LightThemeColors
}
else -> {
net.schueller.peertube.presentation.ui.theme.colors.def.LightThemeColors
}
}
} else {
DarkThemeColors
when (theme) {
COLOR_PREF_BLUE -> {
net.schueller.peertube.presentation.ui.theme.colors.blue.DarkThemeColors
}
COLOR_PREF_RED -> {
net.schueller.peertube.presentation.ui.theme.colors.red.DarkThemeColors
}
COLOR_PREF_GREEN -> {
Log.v("TH", "use green : "+COLOR_PREF_GREEN)
net.schueller.peertube.presentation.ui.theme.colors.green.DarkThemeColors
}
else -> {
net.schueller.peertube.presentation.ui.theme.colors.def.DarkThemeColors
}
}
}
MaterialTheme(

View File

@ -0,0 +1,116 @@
package net.schueller.peertube.presentation.ui.theme.colors.blue
import androidx.compose.material3.lightColorScheme
import androidx.compose.ui.graphics.Color
val md_theme_light_primary = Color(0xFF175db2)
val md_theme_light_onPrimary = Color(0xFFffffff)
val md_theme_light_primaryContainer = Color(0xFFd6e3ff)
val md_theme_light_onPrimaryContainer = Color(0xFF001b3f)
val md_theme_light_secondary = Color(0xFF565f71)
val md_theme_light_onSecondary = Color(0xFFffffff)
val md_theme_light_secondaryContainer = Color(0xFFdae3f9)
val md_theme_light_onSecondaryContainer = Color(0xFF131c2b)
val md_theme_light_tertiary = Color(0xFF6f5574)
val md_theme_light_onTertiary = Color(0xFFffffff)
val md_theme_light_tertiaryContainer = Color(0xFFf9d8fd)
val md_theme_light_onTertiaryContainer = Color(0xFF28132e)
val md_theme_light_error = Color(0xFFba1b1b)
val md_theme_light_errorContainer = Color(0xFFffdad4)
val md_theme_light_onError = Color(0xFFffffff)
val md_theme_light_onErrorContainer = Color(0xFF410001)
val md_theme_light_background = Color(0xFFfdfbff)
val md_theme_light_onBackground = Color(0xFF1a1b1f)
val md_theme_light_surface = Color(0xFFfdfbff)
val md_theme_light_onSurface = Color(0xFF1a1b1f)
val md_theme_light_surfaceVariant = Color(0xFFe0e2ec)
val md_theme_light_onSurfaceVariant = Color(0xFF44474f)
val md_theme_light_outline = Color(0xFF74777f)
val md_theme_light_inverseOnSurface = Color(0xFFf2f0f4)
val md_theme_light_inverseSurface = Color(0xFF2f3033)
val md_theme_dark_primary = Color(0xFFa8c7ff)
val md_theme_dark_onPrimary = Color(0xFF002f66)
val md_theme_dark_primaryContainer = Color(0xFF004590)
val md_theme_dark_onPrimaryContainer = Color(0xFFd6e3ff)
val md_theme_dark_secondary = Color(0xFFbec7dd)
val md_theme_dark_onSecondary = Color(0xFF283141)
val md_theme_dark_secondaryContainer = Color(0xFF3e4759)
val md_theme_dark_onSecondaryContainer = Color(0xFFdae3f9)
val md_theme_dark_tertiary = Color(0xFFdcbce0)
val md_theme_dark_onTertiary = Color(0xFF3f2845)
val md_theme_dark_tertiaryContainer = Color(0xFF573e5c)
val md_theme_dark_onTertiaryContainer = Color(0xFFf9d8fd)
val md_theme_dark_error = Color(0xFFffb4a9)
val md_theme_dark_errorContainer = Color(0xFF930006)
val md_theme_dark_onError = Color(0xFF680003)
val md_theme_dark_onErrorContainer = Color(0xFFffdad4)
val md_theme_dark_background = Color(0xFF1a1b1f)
val md_theme_dark_onBackground = Color(0xFFe3e2e6)
val md_theme_dark_surface = Color(0xFF1a1b1f)
val md_theme_dark_onSurface = Color(0xFFe3e2e6)
val md_theme_dark_surfaceVariant = Color(0xFF44474f)
val md_theme_dark_onSurfaceVariant = Color(0xFFc4c6cf)
val md_theme_dark_outline = Color(0xFF8d9099)
val md_theme_dark_inverseOnSurface = Color(0xFF1a1b1f)
val md_theme_dark_inverseSurface = Color(0xFFe3e2e6)
val seed = Color(0xFF1a5fb4)
val error = Color(0xFFba1b1b)
val LightThemeColors = lightColorScheme(
primary = md_theme_light_primary,
onPrimary = md_theme_light_onPrimary,
primaryContainer = md_theme_light_primaryContainer,
onPrimaryContainer = md_theme_light_onPrimaryContainer,
secondary = md_theme_light_secondary,
onSecondary = md_theme_light_onSecondary,
secondaryContainer = md_theme_light_secondaryContainer,
onSecondaryContainer = md_theme_light_onSecondaryContainer,
tertiary = md_theme_light_tertiary,
onTertiary = md_theme_light_onTertiary,
tertiaryContainer = md_theme_light_tertiaryContainer,
onTertiaryContainer = md_theme_light_onTertiaryContainer,
error = md_theme_light_error,
errorContainer = md_theme_light_errorContainer,
onError = md_theme_light_onError,
onErrorContainer = md_theme_light_onErrorContainer,
background = md_theme_light_background,
onBackground = md_theme_light_onBackground,
surface = md_theme_light_surface,
onSurface = md_theme_light_onSurface,
surfaceVariant = md_theme_light_surfaceVariant,
onSurfaceVariant = md_theme_light_onSurfaceVariant,
outline = md_theme_light_outline,
inverseOnSurface = md_theme_light_inverseOnSurface,
inverseSurface = md_theme_light_inverseSurface,
)
val DarkThemeColors = lightColorScheme(
primary = md_theme_dark_primary,
onPrimary = md_theme_dark_onPrimary,
primaryContainer = md_theme_dark_primaryContainer,
onPrimaryContainer = md_theme_dark_onPrimaryContainer,
secondary = md_theme_dark_secondary,
onSecondary = md_theme_dark_onSecondary,
secondaryContainer = md_theme_dark_secondaryContainer,
onSecondaryContainer = md_theme_dark_onSecondaryContainer,
tertiary = md_theme_dark_tertiary,
onTertiary = md_theme_dark_onTertiary,
tertiaryContainer = md_theme_dark_tertiaryContainer,
onTertiaryContainer = md_theme_dark_onTertiaryContainer,
error = md_theme_dark_error,
errorContainer = md_theme_dark_errorContainer,
onError = md_theme_dark_onError,
onErrorContainer = md_theme_dark_onErrorContainer,
background = md_theme_dark_background,
onBackground = md_theme_dark_onBackground,
surface = md_theme_dark_surface,
onSurface = md_theme_dark_onSurface,
surfaceVariant = md_theme_dark_surfaceVariant,
onSurfaceVariant = md_theme_dark_onSurfaceVariant,
outline = md_theme_dark_outline,
inverseOnSurface = md_theme_dark_inverseOnSurface,
inverseSurface = md_theme_dark_inverseSurface,
)

View File

@ -0,0 +1,118 @@
package net.schueller.peertube.presentation.ui.theme.colors.def
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.ui.graphics.Color
val md_theme_light_primary = Color(0xFF1760a5)
val md_theme_light_onPrimary = Color(0xFFffffff)
val md_theme_light_primaryContainer = Color(0xFFd3e4ff)
val md_theme_light_onPrimaryContainer = Color(0xFF001c3a)
val md_theme_light_secondary = Color(0xFF545f70)
val md_theme_light_onSecondary = Color(0xFFffffff)
val md_theme_light_secondaryContainer = Color(0xFFd7e3f8)
val md_theme_light_onSecondaryContainer = Color(0xFF111c2b)
val md_theme_light_tertiary = Color(0xFF6d5677)
val md_theme_light_onTertiary = Color(0xFFffffff)
val md_theme_light_tertiaryContainer = Color(0xFFf5d9ff)
val md_theme_light_onTertiaryContainer = Color(0xFF261430)
val md_theme_light_error = Color(0xFFba1b1b)
val md_theme_light_errorContainer = Color(0xFFffdad4)
val md_theme_light_onError = Color(0xFFffffff)
val md_theme_light_onErrorContainer = Color(0xFF410001)
val md_theme_light_background = Color(0xFFfdfcff)
val md_theme_light_onBackground = Color(0xFF1b1b1d)
val md_theme_light_surface = Color(0xFFfdfcff)
val md_theme_light_onSurface = Color(0xFF1b1b1d)
val md_theme_light_surfaceVariant = Color(0xFFdfe2eb)
val md_theme_light_onSurfaceVariant = Color(0xFF43474e)
val md_theme_light_outline = Color(0xFF73777f)
val md_theme_light_inverseOnSurface = Color(0xFFf1f0f4)
val md_theme_light_inverseSurface = Color(0xFF2f3033)
val md_theme_dark_primary = Color(0xFFa1c9ff)
val md_theme_dark_onPrimary = Color(0xFF00315e)
val md_theme_dark_primaryContainer = Color(0xFF004884)
val md_theme_dark_onPrimaryContainer = Color(0xFFd3e4ff)
val md_theme_dark_secondary = Color(0xFFbcc7db)
val md_theme_dark_onSecondary = Color(0xFF263141)
val md_theme_dark_secondaryContainer = Color(0xFF3c4758)
val md_theme_dark_onSecondaryContainer = Color(0xFFd7e3f8)
val md_theme_dark_tertiary = Color(0xFFd9bde3)
val md_theme_dark_onTertiary = Color(0xFF3c2946)
val md_theme_dark_tertiaryContainer = Color(0xFF543f5e)
val md_theme_dark_onTertiaryContainer = Color(0xFFf5d9ff)
val md_theme_dark_error = Color(0xFFffb4a9)
val md_theme_dark_errorContainer = Color(0xFF930006)
val md_theme_dark_onError = Color(0xFF680003)
val md_theme_dark_onErrorContainer = Color(0xFFffdad4)
val md_theme_dark_background = Color(0xFF1b1b1d)
val md_theme_dark_onBackground = Color(0xFFe3e2e6)
val md_theme_dark_surface = Color(0xFF1b1b1d)
val md_theme_dark_onSurface = Color(0xFFe3e2e6)
val md_theme_dark_surfaceVariant = Color(0xFF43474e)
val md_theme_dark_onSurfaceVariant = Color(0xFFc3c6cf)
val md_theme_dark_outline = Color(0xFF8d9199)
val md_theme_dark_inverseOnSurface = Color(0xFF1b1b1d)
val md_theme_dark_inverseSurface = Color(0xFFe3e2e6)
val seed = Color(0xFF5175a4)
val error = Color(0xFFba1b1b)
// default
val LightThemeColors = lightColorScheme(
primary = md_theme_light_primary,
onPrimary = md_theme_light_onPrimary,
primaryContainer = md_theme_light_primaryContainer,
onPrimaryContainer = md_theme_light_onPrimaryContainer,
secondary = md_theme_light_secondary,
onSecondary = md_theme_light_onSecondary,
secondaryContainer = md_theme_light_secondaryContainer,
onSecondaryContainer = md_theme_light_onSecondaryContainer,
tertiary = md_theme_light_tertiary,
onTertiary = md_theme_light_onTertiary,
tertiaryContainer = md_theme_light_tertiaryContainer,
onTertiaryContainer = md_theme_light_onTertiaryContainer,
error = md_theme_light_error,
errorContainer = md_theme_light_errorContainer,
onError = md_theme_light_onError,
onErrorContainer = md_theme_light_onErrorContainer,
background = md_theme_light_background,
onBackground = md_theme_light_onBackground,
surface = md_theme_light_surface,
onSurface = md_theme_light_onSurface,
surfaceVariant = md_theme_light_surfaceVariant,
onSurfaceVariant = md_theme_light_onSurfaceVariant,
outline = md_theme_light_outline,
inverseOnSurface = md_theme_light_inverseOnSurface,
inverseSurface = md_theme_light_inverseSurface,
)
val DarkThemeColors = darkColorScheme(
primary = md_theme_dark_primary,
onPrimary = md_theme_dark_onPrimary,
primaryContainer = md_theme_dark_primaryContainer,
onPrimaryContainer = md_theme_dark_onPrimaryContainer,
secondary = md_theme_dark_secondary,
onSecondary = md_theme_dark_onSecondary,
secondaryContainer = md_theme_dark_secondaryContainer,
onSecondaryContainer = md_theme_dark_onSecondaryContainer,
tertiary = md_theme_dark_tertiary,
onTertiary = md_theme_dark_onTertiary,
tertiaryContainer = md_theme_dark_tertiaryContainer,
onTertiaryContainer = md_theme_dark_onTertiaryContainer,
error = md_theme_dark_error,
errorContainer = md_theme_dark_errorContainer,
onError = md_theme_dark_onError,
onErrorContainer = md_theme_dark_onErrorContainer,
background = md_theme_dark_background,
onBackground = md_theme_dark_onBackground,
surface = md_theme_dark_surface,
onSurface = md_theme_dark_onSurface,
surfaceVariant = md_theme_dark_surfaceVariant,
onSurfaceVariant = md_theme_dark_onSurfaceVariant,
outline = md_theme_dark_outline,
inverseOnSurface = md_theme_dark_inverseOnSurface,
inverseSurface = md_theme_dark_inverseSurface,
)

View File

@ -0,0 +1,116 @@
package net.schueller.peertube.presentation.ui.theme.colors.green
import androidx.compose.material3.lightColorScheme
import androidx.compose.ui.graphics.Color
val md_theme_light_primary = Color(0xFF006d41)
val md_theme_light_onPrimary = Color(0xFFffffff)
val md_theme_light_primaryContainer = Color(0xFF87f9b8)
val md_theme_light_onPrimaryContainer = Color(0xFF002110)
val md_theme_light_secondary = Color(0xFF4e6355)
val md_theme_light_onSecondary = Color(0xFFffffff)
val md_theme_light_secondaryContainer = Color(0xFFd1e8d6)
val md_theme_light_onSecondaryContainer = Color(0xFF0c1f14)
val md_theme_light_tertiary = Color(0xFF3b6471)
val md_theme_light_onTertiary = Color(0xFFffffff)
val md_theme_light_tertiaryContainer = Color(0xFFbfe9f8)
val md_theme_light_onTertiaryContainer = Color(0xFF001f28)
val md_theme_light_error = Color(0xFFba1b1b)
val md_theme_light_errorContainer = Color(0xFFffdad4)
val md_theme_light_onError = Color(0xFFffffff)
val md_theme_light_onErrorContainer = Color(0xFF410001)
val md_theme_light_background = Color(0xFFfbfdf8)
val md_theme_light_onBackground = Color(0xFF191c1a)
val md_theme_light_surface = Color(0xFFfbfdf8)
val md_theme_light_onSurface = Color(0xFF191c1a)
val md_theme_light_surfaceVariant = Color(0xFFdce5dc)
val md_theme_light_onSurfaceVariant = Color(0xFF404942)
val md_theme_light_outline = Color(0xFF717972)
val md_theme_light_inverseOnSurface = Color(0xFFeff1ec)
val md_theme_light_inverseSurface = Color(0xFF2e312e)
val md_theme_dark_primary = Color(0xFF69dc9d)
val md_theme_dark_onPrimary = Color(0xFF00391f)
val md_theme_dark_primaryContainer = Color(0xFF00522f)
val md_theme_dark_onPrimaryContainer = Color(0xFF87f9b8)
val md_theme_dark_secondary = Color(0xFFb5ccbb)
val md_theme_dark_onSecondary = Color(0xFF213528)
val md_theme_dark_secondaryContainer = Color(0xFF374b3e)
val md_theme_dark_onSecondaryContainer = Color(0xFFd1e8d6)
val md_theme_dark_tertiary = Color(0xFFa3cddc)
val md_theme_dark_onTertiary = Color(0xFF033541)
val md_theme_dark_tertiaryContainer = Color(0xFF214c58)
val md_theme_dark_onTertiaryContainer = Color(0xFFbfe9f8)
val md_theme_dark_error = Color(0xFFffb4a9)
val md_theme_dark_errorContainer = Color(0xFF930006)
val md_theme_dark_onError = Color(0xFF680003)
val md_theme_dark_onErrorContainer = Color(0xFFffdad4)
val md_theme_dark_background = Color(0xFF191c1a)
val md_theme_dark_onBackground = Color(0xFFe2e3df)
val md_theme_dark_surface = Color(0xFF191c1a)
val md_theme_dark_onSurface = Color(0xFFe2e3df)
val md_theme_dark_surfaceVariant = Color(0xFF404942)
val md_theme_dark_onSurfaceVariant = Color(0xFFc0c9c0)
val md_theme_dark_outline = Color(0xFF8a938b)
val md_theme_dark_inverseOnSurface = Color(0xFF191c1a)
val md_theme_dark_inverseSurface = Color(0xFFe2e3df)
val seed = Color(0xFF26a269)
val error = Color(0xFFba1b1b)
val LightThemeColors = lightColorScheme(
primary = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_primary,
onPrimary = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_onPrimary,
primaryContainer = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_primaryContainer,
onPrimaryContainer = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_onPrimaryContainer,
secondary = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_secondary,
onSecondary = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_onSecondary,
secondaryContainer = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_secondaryContainer,
onSecondaryContainer = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_onSecondaryContainer,
tertiary = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_tertiary,
onTertiary = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_onTertiary,
tertiaryContainer = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_tertiaryContainer,
onTertiaryContainer = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_onTertiaryContainer,
error = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_error,
errorContainer = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_errorContainer,
onError = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_onError,
onErrorContainer = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_onErrorContainer,
background = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_background,
onBackground = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_onBackground,
surface = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_surface,
onSurface = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_onSurface,
surfaceVariant = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_surfaceVariant,
onSurfaceVariant = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_onSurfaceVariant,
outline = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_outline,
inverseOnSurface = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_inverseOnSurface,
inverseSurface = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_light_inverseSurface,
)
val DarkThemeColors = lightColorScheme(
primary = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_primary,
onPrimary = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_onPrimary,
primaryContainer = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_primaryContainer,
onPrimaryContainer = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_onPrimaryContainer,
secondary = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_secondary,
onSecondary = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_onSecondary,
secondaryContainer = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_secondaryContainer,
onSecondaryContainer = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_onSecondaryContainer,
tertiary = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_tertiary,
onTertiary = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_onTertiary,
tertiaryContainer = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_tertiaryContainer,
onTertiaryContainer = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_onTertiaryContainer,
error = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_error,
errorContainer = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_errorContainer,
onError = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_onError,
onErrorContainer = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_onErrorContainer,
background = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_background,
onBackground = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_onBackground,
surface = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_surface,
onSurface = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_onSurface,
surfaceVariant = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_surfaceVariant,
onSurfaceVariant = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_onSurfaceVariant,
outline = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_outline,
inverseOnSurface = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_inverseOnSurface,
inverseSurface = net.schueller.peertube.presentation.ui.theme.colors.blue.md_theme_dark_inverseSurface,
)

View File

@ -0,0 +1,117 @@
package net.schueller.peertube.presentation.ui.theme.colors.red
import androidx.compose.material3.lightColorScheme
import androidx.compose.ui.graphics.Color
val md_theme_light_primary = Color(0xFFb22735)
val md_theme_light_onPrimary = Color(0xFFffffff)
val md_theme_light_primaryContainer = Color(0xFFffd9d9)
val md_theme_light_onPrimaryContainer = Color(0xFF410007)
val md_theme_light_secondary = Color(0xFF765655)
val md_theme_light_onSecondary = Color(0xFFffffff)
val md_theme_light_secondaryContainer = Color(0xFFffdad9)
val md_theme_light_onSecondaryContainer = Color(0xFF2c1515)
val md_theme_light_tertiary = Color(0xFF745a2f)
val md_theme_light_onTertiary = Color(0xFFffffff)
val md_theme_light_tertiaryContainer = Color(0xFFffddaa)
val md_theme_light_onTertiaryContainer = Color(0xFF281800)
val md_theme_light_error = Color(0xFFba1b1b)
val md_theme_light_errorContainer = Color(0xFFffdad4)
val md_theme_light_onError = Color(0xFFffffff)
val md_theme_light_onErrorContainer = Color(0xFF410001)
val md_theme_light_background = Color(0xFFfcfcfc)
val md_theme_light_onBackground = Color(0xFF201a1a)
val md_theme_light_surface = Color(0xFFfcfcfc)
val md_theme_light_onSurface = Color(0xFF201a1a)
val md_theme_light_surfaceVariant = Color(0xFFf4dddc)
val md_theme_light_onSurfaceVariant = Color(0xFF524343)
val md_theme_light_outline = Color(0xFF857372)
val md_theme_light_inverseOnSurface = Color(0xFFfbeeed)
val md_theme_light_inverseSurface = Color(0xFF362f2f)
val md_theme_dark_primary = Color(0xFFffb3b4)
val md_theme_dark_onPrimary = Color(0xFF680011)
val md_theme_dark_primaryContainer = Color(0xFF900921)
val md_theme_dark_onPrimaryContainer = Color(0xFFffd9d9)
val md_theme_dark_secondary = Color(0xFFe6bdbc)
val md_theme_dark_onSecondary = Color(0xFF442929)
val md_theme_dark_secondaryContainer = Color(0xFF5d3f3f)
val md_theme_dark_onSecondaryContainer = Color(0xFFffdad9)
val md_theme_dark_tertiary = Color(0xFFe4c18d)
val md_theme_dark_onTertiary = Color(0xFF412d05)
val md_theme_dark_tertiaryContainer = Color(0xFF5b431a)
val md_theme_dark_onTertiaryContainer = Color(0xFFffddaa)
val md_theme_dark_error = Color(0xFFffb4a9)
val md_theme_dark_errorContainer = Color(0xFF930006)
val md_theme_dark_onError = Color(0xFF680003)
val md_theme_dark_onErrorContainer = Color(0xFFffdad4)
val md_theme_dark_background = Color(0xFF201a1a)
val md_theme_dark_onBackground = Color(0xFFede0df)
val md_theme_dark_surface = Color(0xFF201a1a)
val md_theme_dark_onSurface = Color(0xFFede0df)
val md_theme_dark_surfaceVariant = Color(0xFF524343)
val md_theme_dark_onSurfaceVariant = Color(0xFFd8c2c1)
val md_theme_dark_outline = Color(0xFFa08c8b)
val md_theme_dark_inverseOnSurface = Color(0xFF201a1a)
val md_theme_dark_inverseSurface = Color(0xFFede0df)
val seed = Color(0xFFa51d2d)
val error = Color(0xFFba1b1b)
// RED Theme
val LightThemeColors = lightColorScheme(
primary = md_theme_light_primary,
onPrimary = md_theme_light_onPrimary,
primaryContainer = md_theme_light_primaryContainer,
onPrimaryContainer = md_theme_light_onPrimaryContainer,
secondary = md_theme_light_secondary,
onSecondary = md_theme_light_onSecondary,
secondaryContainer = md_theme_light_secondaryContainer,
onSecondaryContainer = md_theme_light_onSecondaryContainer,
tertiary = md_theme_light_tertiary,
onTertiary = md_theme_light_onTertiary,
tertiaryContainer = md_theme_light_tertiaryContainer,
onTertiaryContainer = md_theme_light_onTertiaryContainer,
error = md_theme_light_error,
errorContainer = md_theme_light_errorContainer,
onError = md_theme_light_onError,
onErrorContainer = md_theme_light_onErrorContainer,
background = md_theme_light_background,
onBackground = md_theme_light_onBackground,
surface = md_theme_light_surface,
onSurface = md_theme_light_onSurface,
surfaceVariant = md_theme_light_surfaceVariant,
onSurfaceVariant = md_theme_light_onSurfaceVariant,
outline = md_theme_light_outline,
inverseOnSurface = md_theme_light_inverseOnSurface,
inverseSurface = md_theme_light_inverseSurface,
)
val DarkThemeColors = lightColorScheme(
primary = md_theme_dark_primary,
onPrimary = md_theme_dark_onPrimary,
primaryContainer = md_theme_dark_primaryContainer,
onPrimaryContainer = md_theme_dark_onPrimaryContainer,
secondary = md_theme_dark_secondary,
onSecondary = md_theme_dark_onSecondary,
secondaryContainer = md_theme_dark_secondaryContainer,
onSecondaryContainer = md_theme_dark_onSecondaryContainer,
tertiary = md_theme_dark_tertiary,
onTertiary = md_theme_dark_onTertiary,
tertiaryContainer = md_theme_dark_tertiaryContainer,
onTertiaryContainer = md_theme_dark_onTertiaryContainer,
error = md_theme_dark_error,
errorContainer = md_theme_dark_errorContainer,
onError = md_theme_dark_onError,
onErrorContainer = md_theme_dark_onErrorContainer,
background = md_theme_dark_background,
onBackground = md_theme_dark_onBackground,
surface = md_theme_dark_surface,
onSurface = md_theme_dark_onSurface,
surfaceVariant = md_theme_dark_surfaceVariant,
onSurfaceVariant = md_theme_dark_onSurfaceVariant,
outline = md_theme_dark_outline,
inverseOnSurface = md_theme_dark_inverseOnSurface,
inverseSurface = md_theme_dark_inverseSurface,
)