diff --git a/TODO.md b/TODO.md index efe5196..529ec0a 100644 --- a/TODO.md +++ b/TODO.md @@ -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 diff --git a/app/src/main/java/net/schueller/peertube/common/Constants.kt b/app/src/main/java/net/schueller/peertube/common/Constants.kt index cbb32a0..20731c9 100644 --- a/app/src/main/java/net/schueller/peertube/common/Constants.kt +++ b/app/src/main/java/net/schueller/peertube/common/Constants.kt @@ -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" + + } \ No newline at end of file diff --git a/app/src/main/java/net/schueller/peertube/feature_server_address/presentation/address_add_edit/AddEditAddressViewModel.kt b/app/src/main/java/net/schueller/peertube/feature_server_address/presentation/address_add_edit/AddEditAddressViewModel.kt index 3a2ccc6..a79836a 100644 --- a/app/src/main/java/net/schueller/peertube/feature_server_address/presentation/address_add_edit/AddEditAddressViewModel.kt +++ b/app/src/main/java/net/schueller/peertube/feature_server_address/presentation/address_add_edit/AddEditAddressViewModel.kt @@ -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 diff --git a/app/src/main/java/net/schueller/peertube/feature_settings/settings/SettingsScreen.kt b/app/src/main/java/net/schueller/peertube/feature_settings/settings/SettingsScreen.kt index 3c52d3d..0ed48f7 100644 --- a/app/src/main/java/net/schueller/peertube/feature_settings/settings/SettingsScreen.kt +++ b/app/src/main/java/net/schueller/peertube/feature_settings/settings/SettingsScreen.kt @@ -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) ) ) } diff --git a/app/src/main/java/net/schueller/peertube/feature_video/presentation/video/VideoListScreen.kt b/app/src/main/java/net/schueller/peertube/feature_video/presentation/video/VideoListScreen.kt index e7292dd..c5f5fd5 100644 --- a/app/src/main/java/net/schueller/peertube/feature_video/presentation/video/VideoListScreen.kt +++ b/app/src/main/java/net/schueller/peertube/feature_video/presentation/video/VideoListScreen.kt @@ -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) diff --git a/app/src/main/java/net/schueller/peertube/presentation/ui/theme/Color.kt b/app/src/main/java/net/schueller/peertube/presentation/ui/theme/Color.kt deleted file mode 100644 index 01363ae..0000000 --- a/app/src/main/java/net/schueller/peertube/presentation/ui/theme/Color.kt +++ /dev/null @@ -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) \ No newline at end of file diff --git a/app/src/main/java/net/schueller/peertube/presentation/ui/theme/Theme.kt b/app/src/main/java/net/schueller/peertube/presentation/ui/theme/Theme.kt index 293861b..b3c3144 100644 --- a/app/src/main/java/net/schueller/peertube/presentation/ui/theme/Theme.kt +++ b/app/src/main/java/net/schueller/peertube/presentation/ui/theme/Theme.kt @@ -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 = 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( diff --git a/app/src/main/java/net/schueller/peertube/presentation/ui/theme/colors/blue/Color.kt b/app/src/main/java/net/schueller/peertube/presentation/ui/theme/colors/blue/Color.kt new file mode 100644 index 0000000..5a32f41 --- /dev/null +++ b/app/src/main/java/net/schueller/peertube/presentation/ui/theme/colors/blue/Color.kt @@ -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, +) diff --git a/app/src/main/java/net/schueller/peertube/presentation/ui/theme/colors/def/Color.kt b/app/src/main/java/net/schueller/peertube/presentation/ui/theme/colors/def/Color.kt new file mode 100644 index 0000000..bd4e648 --- /dev/null +++ b/app/src/main/java/net/schueller/peertube/presentation/ui/theme/colors/def/Color.kt @@ -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, +) \ No newline at end of file diff --git a/app/src/main/java/net/schueller/peertube/presentation/ui/theme/colors/green/Color.kt b/app/src/main/java/net/schueller/peertube/presentation/ui/theme/colors/green/Color.kt new file mode 100644 index 0000000..bddc0c8 --- /dev/null +++ b/app/src/main/java/net/schueller/peertube/presentation/ui/theme/colors/green/Color.kt @@ -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, +) diff --git a/app/src/main/java/net/schueller/peertube/presentation/ui/theme/colors/red/Color.kt b/app/src/main/java/net/schueller/peertube/presentation/ui/theme/colors/red/Color.kt new file mode 100644 index 0000000..9f59026 --- /dev/null +++ b/app/src/main/java/net/schueller/peertube/presentation/ui/theme/colors/red/Color.kt @@ -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, +) \ No newline at end of file