mirror of
https://github.com/bbara04/Purefin.git
synced 2026-07-23 19:26:50 +00:00
feat: add Settings tab to TV home screen and update color scheme
This commit is contained in:
@@ -7,6 +7,7 @@ import androidx.compose.material.icons.outlined.Collections
|
|||||||
import androidx.compose.material.icons.outlined.Home
|
import androidx.compose.material.icons.outlined.Home
|
||||||
import androidx.compose.material.icons.outlined.Movie
|
import androidx.compose.material.icons.outlined.Movie
|
||||||
import androidx.compose.material.icons.outlined.Search
|
import androidx.compose.material.icons.outlined.Search
|
||||||
|
import androidx.compose.material.icons.outlined.Settings
|
||||||
import androidx.compose.material.icons.outlined.Tv
|
import androidx.compose.material.icons.outlined.Tv
|
||||||
import androidx.compose.material3.Scaffold
|
import androidx.compose.material3.Scaffold
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
@@ -43,6 +44,13 @@ fun TvHomeScreen(
|
|||||||
|
|
||||||
val tabs = remember(libraries) {
|
val tabs = remember(libraries) {
|
||||||
buildList {
|
buildList {
|
||||||
|
add(
|
||||||
|
TvHomeTabItem(
|
||||||
|
destination = TvHomeTabDestination.SETTINGS,
|
||||||
|
label = "Settings",
|
||||||
|
icon = Icons.Outlined.Settings,
|
||||||
|
)
|
||||||
|
)
|
||||||
add(
|
add(
|
||||||
TvHomeTabItem(
|
TvHomeTabItem(
|
||||||
destination = TvHomeTabDestination.SEARCH,
|
destination = TvHomeTabDestination.SEARCH,
|
||||||
@@ -100,6 +108,7 @@ fun TvHomeScreen(
|
|||||||
}
|
}
|
||||||
) { innerPadding ->
|
) { innerPadding ->
|
||||||
when (selectedTab?.destination) {
|
when (selectedTab?.destination) {
|
||||||
|
TvHomeTabDestination.SETTINGS,
|
||||||
TvHomeTabDestination.LIBRARY -> {
|
TvHomeTabDestination.LIBRARY -> {
|
||||||
TvLibraryContent(
|
TvLibraryContent(
|
||||||
libraryItems = selectedLibraryItems,
|
libraryItems = selectedLibraryItems,
|
||||||
@@ -108,7 +117,6 @@ fun TvHomeScreen(
|
|||||||
modifier = Modifier.padding(innerPadding)
|
modifier = Modifier.padding(innerPadding)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
TvHomeTabDestination.SEARCH,
|
TvHomeTabDestination.SEARCH,
|
||||||
TvHomeTabDestination.HOME,
|
TvHomeTabDestination.HOME,
|
||||||
null -> {
|
null -> {
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ data class TvHomeNavItem(
|
|||||||
enum class TvHomeTabDestination {
|
enum class TvHomeTabDestination {
|
||||||
SEARCH,
|
SEARCH,
|
||||||
HOME,
|
HOME,
|
||||||
LIBRARY
|
LIBRARY,
|
||||||
|
SETTINGS
|
||||||
}
|
}
|
||||||
|
|
||||||
data class TvHomeTabItem(
|
data class TvHomeTabItem(
|
||||||
|
|||||||
@@ -1,12 +1,7 @@
|
|||||||
package hu.bbara.purefin.tv.home.ui
|
package hu.bbara.purefin.tv.home.ui
|
||||||
|
|
||||||
import androidx.compose.foundation.background
|
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Box
|
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
|
||||||
import androidx.compose.foundation.layout.padding
|
|
||||||
import androidx.compose.foundation.layout.statusBarsPadding
|
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
@@ -17,7 +12,6 @@ import androidx.compose.runtime.Composable
|
|||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.zIndex
|
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
@@ -30,45 +24,28 @@ fun TvHomeTopBar(
|
|||||||
val scheme = MaterialTheme.colorScheme
|
val scheme = MaterialTheme.colorScheme
|
||||||
val safeSelectedTabIndex = selectedTabIndex.coerceIn(0, tabs.lastIndex.coerceAtLeast(0))
|
val safeSelectedTabIndex = selectedTabIndex.coerceIn(0, tabs.lastIndex.coerceAtLeast(0))
|
||||||
|
|
||||||
Box(
|
PrimaryScrollableTabRow(
|
||||||
modifier = modifier
|
selectedTabIndex = safeSelectedTabIndex,
|
||||||
.fillMaxWidth()
|
containerColor = scheme.surface,
|
||||||
.background(scheme.background.copy(alpha = 0.95f))
|
contentColor = scheme.onSurface,
|
||||||
.zIndex(1f)
|
|
||||||
) {
|
) {
|
||||||
Row(
|
tabs.forEachIndexed { index, tab ->
|
||||||
modifier = Modifier
|
Tab(
|
||||||
.statusBarsPadding()
|
selected = index == safeSelectedTabIndex,
|
||||||
.padding(horizontal = 16.dp, vertical = 16.dp)
|
onClick = { onTabSelected(index, tab) },
|
||||||
.fillMaxWidth(),
|
text = {
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
Row(
|
||||||
horizontalArrangement = Arrangement.spacedBy(16.dp),
|
horizontalArrangement = Arrangement.spacedBy(6.dp),
|
||||||
) {
|
verticalAlignment = Alignment.CenterVertically
|
||||||
PrimaryScrollableTabRow(
|
) {
|
||||||
selectedTabIndex = safeSelectedTabIndex,
|
Icon(
|
||||||
modifier = Modifier.weight(1f),
|
imageVector = tab.icon,
|
||||||
containerColor = scheme.surface,
|
contentDescription = null
|
||||||
contentColor = scheme.onSurface
|
)
|
||||||
) {
|
Text(text = tab.label)
|
||||||
tabs.forEachIndexed { index, tab ->
|
}
|
||||||
Tab(
|
|
||||||
selected = index == safeSelectedTabIndex,
|
|
||||||
onClick = { onTabSelected(index, tab) },
|
|
||||||
text = {
|
|
||||||
Row(
|
|
||||||
horizontalArrangement = Arrangement.spacedBy(6.dp),
|
|
||||||
verticalAlignment = Alignment.CenterVertically
|
|
||||||
) {
|
|
||||||
Icon(
|
|
||||||
imageVector = tab.icon,
|
|
||||||
contentDescription = null
|
|
||||||
)
|
|
||||||
Text(text = tab.label)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,218 +5,24 @@ import androidx.compose.ui.graphics.Color
|
|||||||
private fun hslColor(hue: Float, saturation: Float, lightness: Float): Color =
|
private fun hslColor(hue: Float, saturation: Float, lightness: Float): Color =
|
||||||
Color.hsl(hue = hue, saturation = saturation / 100f, lightness = lightness / 100f)
|
Color.hsl(hue = hue, saturation = saturation / 100f, lightness = lightness / 100f)
|
||||||
|
|
||||||
val primaryLight = hslColor(26.9f, 61.4f, 33.5f)
|
val primaryDark = hslColor(255f, 70f, 70f)
|
||||||
val onPrimaryLight = hslColor(0f, 0f, 100f)
|
val onPrimaryDark = hslColor(255f, 60f, 12f)
|
||||||
val primaryContainerLight = hslColor(23.8f, 100f, 88.6f)
|
val primaryContainerDark = hslColor(255f, 70f, 70f)
|
||||||
val onPrimaryContainerLight = hslColor(28.2f, 81.7f, 23.5f)
|
val onPrimaryContainerDark = hslColor(255f, 60f, 12f)
|
||||||
val secondaryLight = hslColor(25f, 25.8f, 36.5f)
|
val secondaryDark = hslColor(255f, 40f, 40f)
|
||||||
val onSecondaryLight = hslColor(0f, 0f, 100f)
|
val onSecondaryDark = hslColor(255f, 40f, 88f)
|
||||||
val secondaryContainerLight = hslColor(23.8f, 100f, 88.6f)
|
val secondaryContainerDark = hslColor(255f, 40f, 40f)
|
||||||
val onSecondaryContainerLight = hslColor(24.5f, 31.9f, 27.1f)
|
val onSecondaryContainerDark = hslColor(255f, 40f, 88f)
|
||||||
val tertiaryLight = hslColor(64.1f, 29.3f, 29.4f)
|
val tertiaryDark = hslColor(255f, 15f, 65f)
|
||||||
val onTertiaryLight = hslColor(0f, 0f, 100f)
|
val onTertiaryDark = hslColor(255f, 15f, 12f)
|
||||||
val tertiaryContainerLight = hslColor(62.1f, 52.8f, 79.2f)
|
val tertiaryContainerDark = hslColor(255f, 15f, 65.0f)
|
||||||
val onTertiaryContainerLight = hslColor(64.4f, 39.0f, 20.6f)
|
val onTertiaryContainerDark = hslColor(255f, 15f, 12f)
|
||||||
val errorLight = hslColor(0f, 75.5f, 41.6f)
|
val errorDark = hslColor(7f, 100f, 84f)
|
||||||
val onErrorLight = hslColor(0f, 0f, 100f)
|
val onErrorDark = hslColor(357f, 100f, 21f)
|
||||||
val errorContainerLight = hslColor(5.9f, 100f, 92.0f)
|
val errorContainerDark = hslColor(355f, 100f, 29f)
|
||||||
val onErrorContainerLight = hslColor(355.9f, 100f, 28.8f)
|
val onErrorContainerDark = hslColor(6f, 100f, 92f)
|
||||||
val backgroundLight = hslColor(18f, 100f, 98.0f)
|
val backgroundDark = hslColor(255f, 60f, 8f)
|
||||||
val onBackgroundLight = hslColor(23.1f, 23.6f, 10.8f)
|
val onBackgroundDark = hslColor(255f, 60f, 94f)
|
||||||
val surfaceLight = hslColor(18f, 100f, 98.0f)
|
val surfaceDark = hslColor(255f, 40f, 12f)
|
||||||
val onSurfaceLight = hslColor(23.1f, 23.6f, 10.8f)
|
val onSurfaceDark = hslColor(255f, 40f, 92f)
|
||||||
val surfaceVariantLight = hslColor(23.6f, 57.9f, 88.8f)
|
val surfaceContainerDark = hslColor(255f, 40f, 12f)
|
||||||
val onSurfaceVariantLight = hslColor(23.5f, 16.3f, 27.6f)
|
|
||||||
val outlineLight = hslColor(23.1f, 10.9f, 46.7f)
|
|
||||||
val outlineVariantLight = hslColor(23.2f, 27.4f, 77.8f)
|
|
||||||
val scrimLight = hslColor(0f, 0f, 0f)
|
|
||||||
val inverseSurfaceLight = hslColor(24f, 15.5f, 19.0f)
|
|
||||||
val inverseOnSurfaceLight = hslColor(23.1f, 92.9f, 94.5f)
|
|
||||||
val inversePrimaryLight = hslColor(25.2f, 100f, 75.7f)
|
|
||||||
val surfaceDimLight = hslColor(21.6f, 34.2f, 85.7f)
|
|
||||||
val surfaceBrightLight = hslColor(18f, 100f, 98.0f)
|
|
||||||
val surfaceContainerLowestLight = hslColor(0f, 0f, 100f)
|
|
||||||
val surfaceContainerLowLight = hslColor(21.8f, 100f, 95.7f)
|
|
||||||
val surfaceContainerLight = hslColor(23.1f, 76.5f, 93.3f)
|
|
||||||
val surfaceContainerHighLight = hslColor(21.6f, 55.6f, 91.2f)
|
|
||||||
val surfaceContainerHighestLight = hslColor(20.8f, 46.4f, 89.0f)
|
|
||||||
|
|
||||||
val primaryLightMediumContrast = hslColor(29.0f, 100f, 17.1f)
|
|
||||||
val onPrimaryLightMediumContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val primaryContainerLightMediumContrast = hslColor(26.4f, 54.2f, 39.4f)
|
|
||||||
val onPrimaryContainerLightMediumContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val secondaryLightMediumContrast = hslColor(24.9f, 39.0f, 20.6f)
|
|
||||||
val onSecondaryLightMediumContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val secondaryContainerLightMediumContrast = hslColor(24f, 23.1f, 42.4f)
|
|
||||||
val onSecondaryContainerLightMediumContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val tertiaryLightMediumContrast = hslColor(64.5f, 54.1f, 14.5f)
|
|
||||||
val onTertiaryLightMediumContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val tertiaryContainerLightMediumContrast = hslColor(63.9f, 25.8f, 34.9f)
|
|
||||||
val onTertiaryContainerLightMediumContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val errorLightMediumContrast = hslColor(356.9f, 100f, 22.7f)
|
|
||||||
val onErrorLightMediumContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val errorContainerLightMediumContrast = hslColor(1.8f, 68.3f, 48.2f)
|
|
||||||
val onErrorContainerLightMediumContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val backgroundLightMediumContrast = hslColor(18f, 100f, 98.0f)
|
|
||||||
val onBackgroundLightMediumContrast = hslColor(23.1f, 23.6f, 10.8f)
|
|
||||||
val surfaceLightMediumContrast = hslColor(18f, 100f, 98.0f)
|
|
||||||
val onSurfaceLightMediumContrast = hslColor(25f, 35.3f, 6.7f)
|
|
||||||
val surfaceVariantLightMediumContrast = hslColor(23.6f, 57.9f, 88.8f)
|
|
||||||
val onSurfaceVariantLightMediumContrast = hslColor(25.7f, 19.6f, 21.0f)
|
|
||||||
val outlineLightMediumContrast = hslColor(25f, 14.6f, 32.2f)
|
|
||||||
val outlineVariantLightMediumContrast = hslColor(23.1f, 11.9f, 42.7f)
|
|
||||||
val scrimLightMediumContrast = hslColor(0f, 0f, 0f)
|
|
||||||
val inverseSurfaceLightMediumContrast = hslColor(24f, 15.5f, 19.0f)
|
|
||||||
val inverseOnSurfaceLightMediumContrast = hslColor(23.1f, 92.9f, 94.5f)
|
|
||||||
val inversePrimaryLightMediumContrast = hslColor(25.2f, 100f, 75.7f)
|
|
||||||
val surfaceDimLightMediumContrast = hslColor(22.5f, 21.4f, 78.0f)
|
|
||||||
val surfaceBrightLightMediumContrast = hslColor(18f, 100f, 98.0f)
|
|
||||||
val surfaceContainerLowestLightMediumContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val surfaceContainerLowLightMediumContrast = hslColor(21.8f, 100f, 95.7f)
|
|
||||||
val surfaceContainerLightMediumContrast = hslColor(21.6f, 55.6f, 91.2f)
|
|
||||||
val surfaceContainerHighLightMediumContrast = hslColor(21.6f, 37.3f, 86.9f)
|
|
||||||
val surfaceContainerHighestLightMediumContrast = hslColor(22.5f, 26.7f, 82.4f)
|
|
||||||
|
|
||||||
val primaryLightHighContrast = hslColor(27.9f, 100f, 14.3f)
|
|
||||||
val onPrimaryLightHighContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val primaryContainerLightHighContrast = hslColor(28.5f, 79.2f, 24.5f)
|
|
||||||
val onPrimaryContainerLightHighContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val secondaryLightHighContrast = hslColor(25.3f, 45.2f, 16.5f)
|
|
||||||
val onSecondaryLightHighContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val secondaryContainerLightHighContrast = hslColor(25.9f, 31.0f, 27.8f)
|
|
||||||
val onSecondaryContainerLightHighContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val tertiaryLightHighContrast = hslColor(63.1f, 73.6f, 10.4f)
|
|
||||||
val onTertiaryLightHighContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val tertiaryContainerLightHighContrast = hslColor(64.3f, 38.2f, 21.6f)
|
|
||||||
val onTertiaryContainerLightHighContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val errorLightHighContrast = hslColor(357.5f, 100f, 18.8f)
|
|
||||||
val onErrorLightHighContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val errorContainerLightHighContrast = hslColor(356.1f, 100f, 29.8f)
|
|
||||||
val onErrorContainerLightHighContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val backgroundLightHighContrast = hslColor(18f, 100f, 98.0f)
|
|
||||||
val onBackgroundLightHighContrast = hslColor(23.1f, 23.6f, 10.8f)
|
|
||||||
val surfaceLightHighContrast = hslColor(18f, 100f, 98.0f)
|
|
||||||
val onSurfaceLightHighContrast = hslColor(0f, 0f, 0f)
|
|
||||||
val surfaceVariantLightHighContrast = hslColor(23.6f, 57.9f, 88.8f)
|
|
||||||
val onSurfaceVariantLightHighContrast = hslColor(0f, 0f, 0f)
|
|
||||||
val outlineLightHighContrast = hslColor(24f, 22.7f, 17.3f)
|
|
||||||
val outlineVariantLightHighContrast = hslColor(21.8f, 15.1f, 28.6f)
|
|
||||||
val scrimLightHighContrast = hslColor(0f, 0f, 0f)
|
|
||||||
val inverseSurfaceLightHighContrast = hslColor(24f, 15.5f, 19.0f)
|
|
||||||
val inverseOnSurfaceLightHighContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val inversePrimaryLightHighContrast = hslColor(25.2f, 100f, 75.7f)
|
|
||||||
val surfaceDimLightHighContrast = hslColor(22.5f, 17.1f, 72.5f)
|
|
||||||
val surfaceBrightLightHighContrast = hslColor(18f, 100f, 98.0f)
|
|
||||||
val surfaceContainerLowestLightHighContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val surfaceContainerLowLightHighContrast = hslColor(23.1f, 92.9f, 94.5f)
|
|
||||||
val surfaceContainerLightHighContrast = hslColor(20.8f, 46.4f, 89.0f)
|
|
||||||
val surfaceContainerHighLightHighContrast = hslColor(21.6f, 29.4f, 83.3f)
|
|
||||||
val surfaceContainerHighestLightHighContrast = hslColor(22.5f, 21.4f, 78.0f)
|
|
||||||
|
|
||||||
val primaryDark = hslColor(25.2f, 100f, 75.7f)
|
|
||||||
val onPrimaryDark = hslColor(28.1f, 100f, 15.5f)
|
|
||||||
val primaryContainerDark = hslColor(28.2f, 81.7f, 23.5f)
|
|
||||||
val onPrimaryContainerDark = hslColor(23.8f, 100f, 88.6f)
|
|
||||||
val secondaryDark = hslColor(23.6f, 53.0f, 77.5f)
|
|
||||||
val onSecondaryDark = hslColor(24.6f, 41.9f, 18.2f)
|
|
||||||
val secondaryContainerDark = hslColor(24.5f, 31.9f, 27.1f)
|
|
||||||
val onSecondaryContainerDark = hslColor(23.8f, 100f, 88.6f)
|
|
||||||
val tertiaryDark = hslColor(63.3f, 33.7f, 68.6f)
|
|
||||||
val onTertiaryDark = hslColor(64.5f, 64.5f, 12.2f)
|
|
||||||
val tertiaryContainerDark = hslColor(64.4f, 39.0f, 20.6f)
|
|
||||||
val onTertiaryContainerDark = hslColor(62.1f, 52.8f, 79.2f)
|
|
||||||
val errorDark = hslColor(6.4f, 100f, 83.5f)
|
|
||||||
val onErrorDark = hslColor(357.1f, 100f, 20.6f)
|
|
||||||
val errorContainerDark = hslColor(355.9f, 100f, 28.8f)
|
|
||||||
val onErrorContainerDark = hslColor(5.9f, 100f, 92.0f)
|
|
||||||
val backgroundDark = hslColor(25f, 31.6f, 7.5f)
|
|
||||||
val onBackgroundDark = hslColor(20.8f, 46.4f, 89.0f)
|
|
||||||
val surfaceDark = hslColor(25f, 31.6f, 7.5f)
|
|
||||||
val onSurfaceDark = hslColor(20.8f, 46.4f, 89.0f)
|
|
||||||
val surfaceVariantDark = hslColor(23.5f, 16.3f, 27.6f)
|
|
||||||
val onSurfaceVariantDark = hslColor(23.2f, 27.4f, 77.8f)
|
|
||||||
val outlineDark = hslColor(21.4f, 12.7f, 56.9f)
|
|
||||||
val outlineVariantDark = hslColor(23.5f, 16.3f, 27.6f)
|
|
||||||
val scrimDark = hslColor(0f, 0f, 0f)
|
|
||||||
val inverseSurfaceDark = hslColor(20.8f, 46.4f, 89.0f)
|
|
||||||
val inverseOnSurfaceDark = hslColor(24f, 15.5f, 19.0f)
|
|
||||||
val inversePrimaryDark = hslColor(26.9f, 61.4f, 33.5f)
|
|
||||||
val surfaceDimDark = hslColor(25f, 31.6f, 7.5f)
|
|
||||||
val surfaceBrightDark = hslColor(22.5f, 14.0f, 22.4f)
|
|
||||||
val surfaceContainerLowestDark = hslColor(25f, 42.9f, 5.5f)
|
|
||||||
val surfaceContainerLowDark = hslColor(23.1f, 23.6f, 10.8f)
|
|
||||||
val surfaceContainerDark = hslColor(25.7f, 22.6f, 12.2f)
|
|
||||||
val surfaceContainerHighDark = hslColor(24f, 18.1f, 16.3f)
|
|
||||||
val surfaceContainerHighestDark = hslColor(24f, 14.3f, 20.6f)
|
|
||||||
|
|
||||||
val primaryDarkMediumContrast = hslColor(24.2f, 100f, 85.9f)
|
|
||||||
val onPrimaryDarkMediumContrast = hslColor(26.7f, 100f, 12.4f)
|
|
||||||
val primaryContainerDarkMediumContrast = hslColor(25.7f, 50.6f, 53.9f)
|
|
||||||
val onPrimaryContainerDarkMediumContrast = hslColor(0f, 0f, 0f)
|
|
||||||
val secondaryDarkMediumContrast = hslColor(23.8f, 88.7f, 86.1f)
|
|
||||||
val onSecondaryDarkMediumContrast = hslColor(25.9f, 52.1f, 13.9f)
|
|
||||||
val secondaryContainerDarkMediumContrast = hslColor(24f, 24.7f, 56.3f)
|
|
||||||
val onSecondaryContainerDarkMediumContrast = hslColor(0f, 0f, 0f)
|
|
||||||
val tertiaryDarkMediumContrast = hslColor(63.3f, 47.0f, 77.1f)
|
|
||||||
val onTertiaryDarkMediumContrast = hslColor(64.9f, 86.0f, 8.4f)
|
|
||||||
val tertiaryContainerDarkMediumContrast = hslColor(63.7f, 19.8f, 48.4f)
|
|
||||||
val onTertiaryContainerDarkMediumContrast = hslColor(0f, 0f, 0f)
|
|
||||||
val errorDarkMediumContrast = hslColor(7.1f, 100f, 90f)
|
|
||||||
val onErrorDarkMediumContrast = hslColor(357.9f, 100f, 16.5f)
|
|
||||||
val errorContainerDarkMediumContrast = hslColor(3.6f, 100f, 64.3f)
|
|
||||||
val onErrorContainerDarkMediumContrast = hslColor(0f, 0f, 0f)
|
|
||||||
val backgroundDarkMediumContrast = hslColor(25f, 31.6f, 7.5f)
|
|
||||||
val onBackgroundDarkMediumContrast = hslColor(20.8f, 46.4f, 89.0f)
|
|
||||||
val surfaceDarkMediumContrast = hslColor(25f, 31.6f, 7.5f)
|
|
||||||
val onSurfaceDarkMediumContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val surfaceVariantDarkMediumContrast = hslColor(23.5f, 16.3f, 27.6f)
|
|
||||||
val onSurfaceVariantDarkMediumContrast = hslColor(21.8f, 47.8f, 86.5f)
|
|
||||||
val outlineDarkMediumContrast = hslColor(22f, 19.5f, 69.8f)
|
|
||||||
val outlineVariantDarkMediumContrast = hslColor(23.6f, 12.6f, 56.5f)
|
|
||||||
val scrimDarkMediumContrast = hslColor(0f, 0f, 0f)
|
|
||||||
val inverseSurfaceDarkMediumContrast = hslColor(20.8f, 46.4f, 89.0f)
|
|
||||||
val inverseOnSurfaceDarkMediumContrast = hslColor(24f, 18.1f, 16.3f)
|
|
||||||
val inversePrimaryDarkMediumContrast = hslColor(27.9f, 80.5f, 24.1f)
|
|
||||||
val surfaceDimDarkMediumContrast = hslColor(25f, 31.6f, 7.5f)
|
|
||||||
val surfaceBrightDarkMediumContrast = hslColor(21.2f, 12.4f, 26.9f)
|
|
||||||
val surfaceContainerLowestDarkMediumContrast = hslColor(20f, 60f, 2.9f)
|
|
||||||
val surfaceContainerLowDarkMediumContrast = hslColor(25.7f, 24.1f, 11.4f)
|
|
||||||
val surfaceContainerDarkMediumContrast = hslColor(24f, 19.0f, 15.5f)
|
|
||||||
val surfaceContainerHighDarkMediumContrast = hslColor(24f, 14.9f, 19.8f)
|
|
||||||
val surfaceContainerHighestDarkMediumContrast = hslColor(24.7f, 13.8f, 24.1f)
|
|
||||||
|
|
||||||
val primaryDarkHighContrast = hslColor(20.7f, 100f, 94.3f)
|
|
||||||
val onPrimaryDarkHighContrast = hslColor(0f, 0f, 0f)
|
|
||||||
val primaryContainerDarkHighContrast = hslColor(25.5f, 98.5f, 73.7f)
|
|
||||||
val onPrimaryContainerDarkHighContrast = hslColor(18.3f, 100f, 4.5f)
|
|
||||||
val secondaryDarkHighContrast = hslColor(20.7f, 100f, 94.3f)
|
|
||||||
val onSecondaryDarkHighContrast = hslColor(0f, 0f, 0f)
|
|
||||||
val secondaryContainerDarkHighContrast = hslColor(23.6f, 49.6f, 75.9f)
|
|
||||||
val onSecondaryContainerDarkHighContrast = hslColor(18.3f, 100f, 4.5f)
|
|
||||||
val tertiaryDarkHighContrast = hslColor(63.2f, 72.2f, 84.5f)
|
|
||||||
val onTertiaryDarkHighContrast = hslColor(0f, 0f, 0f)
|
|
||||||
val tertiaryContainerDarkHighContrast = hslColor(63.4f, 31.7f, 67.3f)
|
|
||||||
val onTertiaryContainerDarkHighContrast = hslColor(65f, 100f, 2.4f)
|
|
||||||
val errorDarkHighContrast = hslColor(8.2f, 100f, 95.7f)
|
|
||||||
val onErrorDarkHighContrast = hslColor(0f, 0f, 0f)
|
|
||||||
val errorContainerDarkHighContrast = hslColor(6.6f, 100f, 82.2f)
|
|
||||||
val onErrorContainerDarkHighContrast = hslColor(358.2f, 100f, 6.7f)
|
|
||||||
val backgroundDarkHighContrast = hslColor(25f, 31.6f, 7.5f)
|
|
||||||
val onBackgroundDarkHighContrast = hslColor(20.8f, 46.4f, 89.0f)
|
|
||||||
val surfaceDarkHighContrast = hslColor(25f, 31.6f, 7.5f)
|
|
||||||
val onSurfaceDarkHighContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val surfaceVariantDarkHighContrast = hslColor(23.5f, 16.3f, 27.6f)
|
|
||||||
val onSurfaceVariantDarkHighContrast = hslColor(0f, 0f, 100f)
|
|
||||||
val outlineDarkHighContrast = hslColor(20.7f, 100f, 94.3f)
|
|
||||||
val outlineVariantDarkHighContrast = hslColor(23.2f, 25.6f, 76.3f)
|
|
||||||
val scrimDarkHighContrast = hslColor(0f, 0f, 0f)
|
|
||||||
val inverseSurfaceDarkHighContrast = hslColor(20.8f, 46.4f, 89.0f)
|
|
||||||
val inverseOnSurfaceDarkHighContrast = hslColor(0f, 0f, 0f)
|
|
||||||
val inversePrimaryDarkHighContrast = hslColor(27.9f, 80.5f, 24.1f)
|
|
||||||
val surfaceDimDarkHighContrast = hslColor(25f, 31.6f, 7.5f)
|
|
||||||
val surfaceBrightDarkHighContrast = hslColor(23.3f, 11.2f, 31.4f)
|
|
||||||
val surfaceContainerLowestDarkHighContrast = hslColor(0f, 0f, 0f)
|
|
||||||
val surfaceContainerLowDarkHighContrast = hslColor(25.7f, 22.6f, 12.2f)
|
|
||||||
val surfaceContainerDarkHighContrast = hslColor(24f, 15.5f, 19.0f)
|
|
||||||
val surfaceContainerHighDarkHighContrast = hslColor(22.5f, 13.6f, 23.1f)
|
|
||||||
val surfaceContainerHighestDarkHighContrast = hslColor(24.7f, 12.1f, 27.6f)
|
|
||||||
@@ -5,50 +5,10 @@ import androidx.compose.material3.MaterialTheme
|
|||||||
import androidx.compose.material3.darkColorScheme
|
import androidx.compose.material3.darkColorScheme
|
||||||
import androidx.compose.material3.dynamicDarkColorScheme
|
import androidx.compose.material3.dynamicDarkColorScheme
|
||||||
import androidx.compose.material3.dynamicLightColorScheme
|
import androidx.compose.material3.dynamicLightColorScheme
|
||||||
import androidx.compose.material3.lightColorScheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
|
|
||||||
private val lightScheme = lightColorScheme(
|
|
||||||
primary = primaryLight,
|
|
||||||
onPrimary = onPrimaryLight,
|
|
||||||
primaryContainer = primaryContainerLight,
|
|
||||||
onPrimaryContainer = onPrimaryContainerLight,
|
|
||||||
secondary = secondaryLight,
|
|
||||||
onSecondary = onSecondaryLight,
|
|
||||||
secondaryContainer = secondaryContainerLight,
|
|
||||||
onSecondaryContainer = onSecondaryContainerLight,
|
|
||||||
tertiary = tertiaryLight,
|
|
||||||
onTertiary = onTertiaryLight,
|
|
||||||
tertiaryContainer = tertiaryContainerLight,
|
|
||||||
onTertiaryContainer = onTertiaryContainerLight,
|
|
||||||
error = errorLight,
|
|
||||||
onError = onErrorLight,
|
|
||||||
errorContainer = errorContainerLight,
|
|
||||||
onErrorContainer = onErrorContainerLight,
|
|
||||||
background = backgroundLight,
|
|
||||||
onBackground = onBackgroundLight,
|
|
||||||
surface = surfaceLight,
|
|
||||||
onSurface = onSurfaceLight,
|
|
||||||
surfaceVariant = surfaceVariantLight,
|
|
||||||
onSurfaceVariant = onSurfaceVariantLight,
|
|
||||||
outline = outlineLight,
|
|
||||||
outlineVariant = outlineVariantLight,
|
|
||||||
scrim = scrimLight,
|
|
||||||
inverseSurface = inverseSurfaceLight,
|
|
||||||
inverseOnSurface = inverseOnSurfaceLight,
|
|
||||||
inversePrimary = inversePrimaryLight,
|
|
||||||
surfaceDim = surfaceDimLight,
|
|
||||||
surfaceBright = surfaceBrightLight,
|
|
||||||
surfaceContainerLowest = surfaceContainerLowestLight,
|
|
||||||
surfaceContainerLow = surfaceContainerLowLight,
|
|
||||||
surfaceContainer = surfaceContainerLight,
|
|
||||||
surfaceContainerHigh = surfaceContainerHighLight,
|
|
||||||
surfaceContainerHighest = surfaceContainerHighestLight,
|
|
||||||
)
|
|
||||||
|
|
||||||
private val darkScheme = darkColorScheme(
|
private val darkScheme = darkColorScheme(
|
||||||
primary = primaryDark,
|
primary = primaryDark,
|
||||||
onPrimary = onPrimaryDark,
|
onPrimary = onPrimaryDark,
|
||||||
@@ -70,173 +30,7 @@ private val darkScheme = darkColorScheme(
|
|||||||
onBackground = onBackgroundDark,
|
onBackground = onBackgroundDark,
|
||||||
surface = surfaceDark,
|
surface = surfaceDark,
|
||||||
onSurface = onSurfaceDark,
|
onSurface = onSurfaceDark,
|
||||||
surfaceVariant = surfaceVariantDark,
|
surfaceContainer = surfaceContainerDark
|
||||||
onSurfaceVariant = onSurfaceVariantDark,
|
|
||||||
outline = outlineDark,
|
|
||||||
outlineVariant = outlineVariantDark,
|
|
||||||
scrim = scrimDark,
|
|
||||||
inverseSurface = inverseSurfaceDark,
|
|
||||||
inverseOnSurface = inverseOnSurfaceDark,
|
|
||||||
inversePrimary = inversePrimaryDark,
|
|
||||||
surfaceDim = surfaceDimDark,
|
|
||||||
surfaceBright = surfaceBrightDark,
|
|
||||||
surfaceContainerLowest = surfaceContainerLowestDark,
|
|
||||||
surfaceContainerLow = surfaceContainerLowDark,
|
|
||||||
surfaceContainer = surfaceContainerDark,
|
|
||||||
surfaceContainerHigh = surfaceContainerHighDark,
|
|
||||||
surfaceContainerHighest = surfaceContainerHighestDark,
|
|
||||||
)
|
|
||||||
|
|
||||||
private val mediumContrastLightColorScheme = lightColorScheme(
|
|
||||||
primary = primaryLightMediumContrast,
|
|
||||||
onPrimary = onPrimaryLightMediumContrast,
|
|
||||||
primaryContainer = primaryContainerLightMediumContrast,
|
|
||||||
onPrimaryContainer = onPrimaryContainerLightMediumContrast,
|
|
||||||
secondary = secondaryLightMediumContrast,
|
|
||||||
onSecondary = onSecondaryLightMediumContrast,
|
|
||||||
secondaryContainer = secondaryContainerLightMediumContrast,
|
|
||||||
onSecondaryContainer = onSecondaryContainerLightMediumContrast,
|
|
||||||
tertiary = tertiaryLightMediumContrast,
|
|
||||||
onTertiary = onTertiaryLightMediumContrast,
|
|
||||||
tertiaryContainer = tertiaryContainerLightMediumContrast,
|
|
||||||
onTertiaryContainer = onTertiaryContainerLightMediumContrast,
|
|
||||||
error = errorLightMediumContrast,
|
|
||||||
onError = onErrorLightMediumContrast,
|
|
||||||
errorContainer = errorContainerLightMediumContrast,
|
|
||||||
onErrorContainer = onErrorContainerLightMediumContrast,
|
|
||||||
background = backgroundLightMediumContrast,
|
|
||||||
onBackground = onBackgroundLightMediumContrast,
|
|
||||||
surface = surfaceLightMediumContrast,
|
|
||||||
onSurface = onSurfaceLightMediumContrast,
|
|
||||||
surfaceVariant = surfaceVariantLightMediumContrast,
|
|
||||||
onSurfaceVariant = onSurfaceVariantLightMediumContrast,
|
|
||||||
outline = outlineLightMediumContrast,
|
|
||||||
outlineVariant = outlineVariantLightMediumContrast,
|
|
||||||
scrim = scrimLightMediumContrast,
|
|
||||||
inverseSurface = inverseSurfaceLightMediumContrast,
|
|
||||||
inverseOnSurface = inverseOnSurfaceLightMediumContrast,
|
|
||||||
inversePrimary = inversePrimaryLightMediumContrast,
|
|
||||||
surfaceDim = surfaceDimLightMediumContrast,
|
|
||||||
surfaceBright = surfaceBrightLightMediumContrast,
|
|
||||||
surfaceContainerLowest = surfaceContainerLowestLightMediumContrast,
|
|
||||||
surfaceContainerLow = surfaceContainerLowLightMediumContrast,
|
|
||||||
surfaceContainer = surfaceContainerLightMediumContrast,
|
|
||||||
surfaceContainerHigh = surfaceContainerHighLightMediumContrast,
|
|
||||||
surfaceContainerHighest = surfaceContainerHighestLightMediumContrast,
|
|
||||||
)
|
|
||||||
|
|
||||||
private val highContrastLightColorScheme = lightColorScheme(
|
|
||||||
primary = primaryLightHighContrast,
|
|
||||||
onPrimary = onPrimaryLightHighContrast,
|
|
||||||
primaryContainer = primaryContainerLightHighContrast,
|
|
||||||
onPrimaryContainer = onPrimaryContainerLightHighContrast,
|
|
||||||
secondary = secondaryLightHighContrast,
|
|
||||||
onSecondary = onSecondaryLightHighContrast,
|
|
||||||
secondaryContainer = secondaryContainerLightHighContrast,
|
|
||||||
onSecondaryContainer = onSecondaryContainerLightHighContrast,
|
|
||||||
tertiary = tertiaryLightHighContrast,
|
|
||||||
onTertiary = onTertiaryLightHighContrast,
|
|
||||||
tertiaryContainer = tertiaryContainerLightHighContrast,
|
|
||||||
onTertiaryContainer = onTertiaryContainerLightHighContrast,
|
|
||||||
error = errorLightHighContrast,
|
|
||||||
onError = onErrorLightHighContrast,
|
|
||||||
errorContainer = errorContainerLightHighContrast,
|
|
||||||
onErrorContainer = onErrorContainerLightHighContrast,
|
|
||||||
background = backgroundLightHighContrast,
|
|
||||||
onBackground = onBackgroundLightHighContrast,
|
|
||||||
surface = surfaceLightHighContrast,
|
|
||||||
onSurface = onSurfaceLightHighContrast,
|
|
||||||
surfaceVariant = surfaceVariantLightHighContrast,
|
|
||||||
onSurfaceVariant = onSurfaceVariantLightHighContrast,
|
|
||||||
outline = outlineLightHighContrast,
|
|
||||||
outlineVariant = outlineVariantLightHighContrast,
|
|
||||||
scrim = scrimLightHighContrast,
|
|
||||||
inverseSurface = inverseSurfaceLightHighContrast,
|
|
||||||
inverseOnSurface = inverseOnSurfaceLightHighContrast,
|
|
||||||
inversePrimary = inversePrimaryLightHighContrast,
|
|
||||||
surfaceDim = surfaceDimLightHighContrast,
|
|
||||||
surfaceBright = surfaceBrightLightHighContrast,
|
|
||||||
surfaceContainerLowest = surfaceContainerLowestLightHighContrast,
|
|
||||||
surfaceContainerLow = surfaceContainerLowLightHighContrast,
|
|
||||||
surfaceContainer = surfaceContainerLightHighContrast,
|
|
||||||
surfaceContainerHigh = surfaceContainerHighLightHighContrast,
|
|
||||||
surfaceContainerHighest = surfaceContainerHighestLightHighContrast,
|
|
||||||
)
|
|
||||||
|
|
||||||
private val mediumContrastDarkColorScheme = darkColorScheme(
|
|
||||||
primary = primaryDarkMediumContrast,
|
|
||||||
onPrimary = onPrimaryDarkMediumContrast,
|
|
||||||
primaryContainer = primaryContainerDarkMediumContrast,
|
|
||||||
onPrimaryContainer = onPrimaryContainerDarkMediumContrast,
|
|
||||||
secondary = secondaryDarkMediumContrast,
|
|
||||||
onSecondary = onSecondaryDarkMediumContrast,
|
|
||||||
secondaryContainer = secondaryContainerDarkMediumContrast,
|
|
||||||
onSecondaryContainer = onSecondaryContainerDarkMediumContrast,
|
|
||||||
tertiary = tertiaryDarkMediumContrast,
|
|
||||||
onTertiary = onTertiaryDarkMediumContrast,
|
|
||||||
tertiaryContainer = tertiaryContainerDarkMediumContrast,
|
|
||||||
onTertiaryContainer = onTertiaryContainerDarkMediumContrast,
|
|
||||||
error = errorDarkMediumContrast,
|
|
||||||
onError = onErrorDarkMediumContrast,
|
|
||||||
errorContainer = errorContainerDarkMediumContrast,
|
|
||||||
onErrorContainer = onErrorContainerDarkMediumContrast,
|
|
||||||
background = backgroundDarkMediumContrast,
|
|
||||||
onBackground = onBackgroundDarkMediumContrast,
|
|
||||||
surface = surfaceDarkMediumContrast,
|
|
||||||
onSurface = onSurfaceDarkMediumContrast,
|
|
||||||
surfaceVariant = surfaceVariantDarkMediumContrast,
|
|
||||||
onSurfaceVariant = onSurfaceVariantDarkMediumContrast,
|
|
||||||
outline = outlineDarkMediumContrast,
|
|
||||||
outlineVariant = outlineVariantDarkMediumContrast,
|
|
||||||
scrim = scrimDarkMediumContrast,
|
|
||||||
inverseSurface = inverseSurfaceDarkMediumContrast,
|
|
||||||
inverseOnSurface = inverseOnSurfaceDarkMediumContrast,
|
|
||||||
inversePrimary = inversePrimaryDarkMediumContrast,
|
|
||||||
surfaceDim = surfaceDimDarkMediumContrast,
|
|
||||||
surfaceBright = surfaceBrightDarkMediumContrast,
|
|
||||||
surfaceContainerLowest = surfaceContainerLowestDarkMediumContrast,
|
|
||||||
surfaceContainerLow = surfaceContainerLowDarkMediumContrast,
|
|
||||||
surfaceContainer = surfaceContainerDarkMediumContrast,
|
|
||||||
surfaceContainerHigh = surfaceContainerHighDarkMediumContrast,
|
|
||||||
surfaceContainerHighest = surfaceContainerHighestDarkMediumContrast,
|
|
||||||
)
|
|
||||||
|
|
||||||
private val highContrastDarkColorScheme = darkColorScheme(
|
|
||||||
primary = primaryDarkHighContrast,
|
|
||||||
onPrimary = onPrimaryDarkHighContrast,
|
|
||||||
primaryContainer = primaryContainerDarkHighContrast,
|
|
||||||
onPrimaryContainer = onPrimaryContainerDarkHighContrast,
|
|
||||||
secondary = secondaryDarkHighContrast,
|
|
||||||
onSecondary = onSecondaryDarkHighContrast,
|
|
||||||
secondaryContainer = secondaryContainerDarkHighContrast,
|
|
||||||
onSecondaryContainer = onSecondaryContainerDarkHighContrast,
|
|
||||||
tertiary = tertiaryDarkHighContrast,
|
|
||||||
onTertiary = onTertiaryDarkHighContrast,
|
|
||||||
tertiaryContainer = tertiaryContainerDarkHighContrast,
|
|
||||||
onTertiaryContainer = onTertiaryContainerDarkHighContrast,
|
|
||||||
error = errorDarkHighContrast,
|
|
||||||
onError = onErrorDarkHighContrast,
|
|
||||||
errorContainer = errorContainerDarkHighContrast,
|
|
||||||
onErrorContainer = onErrorContainerDarkHighContrast,
|
|
||||||
background = backgroundDarkHighContrast,
|
|
||||||
onBackground = onBackgroundDarkHighContrast,
|
|
||||||
surface = surfaceDarkHighContrast,
|
|
||||||
onSurface = onSurfaceDarkHighContrast,
|
|
||||||
surfaceVariant = surfaceVariantDarkHighContrast,
|
|
||||||
onSurfaceVariant = onSurfaceVariantDarkHighContrast,
|
|
||||||
outline = outlineDarkHighContrast,
|
|
||||||
outlineVariant = outlineVariantDarkHighContrast,
|
|
||||||
scrim = scrimDarkHighContrast,
|
|
||||||
inverseSurface = inverseSurfaceDarkHighContrast,
|
|
||||||
inverseOnSurface = inverseOnSurfaceDarkHighContrast,
|
|
||||||
inversePrimary = inversePrimaryDarkHighContrast,
|
|
||||||
surfaceDim = surfaceDimDarkHighContrast,
|
|
||||||
surfaceBright = surfaceBrightDarkHighContrast,
|
|
||||||
surfaceContainerLowest = surfaceContainerLowestDarkHighContrast,
|
|
||||||
surfaceContainerLow = surfaceContainerLowDarkHighContrast,
|
|
||||||
surfaceContainer = surfaceContainerDarkHighContrast,
|
|
||||||
surfaceContainerHigh = surfaceContainerHighDarkHighContrast,
|
|
||||||
surfaceContainerHighest = surfaceContainerHighestDarkHighContrast,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
@Immutable
|
@Immutable
|
||||||
@@ -247,10 +41,6 @@ data class ColorFamily(
|
|||||||
val onColorContainer: Color
|
val onColorContainer: Color
|
||||||
)
|
)
|
||||||
|
|
||||||
val unspecified_scheme = ColorFamily(
|
|
||||||
Color.Unspecified, Color.Unspecified, Color.Unspecified, Color.Unspecified
|
|
||||||
)
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun AppTheme(
|
fun AppTheme(
|
||||||
darkTheme: Boolean = isSystemInDarkTheme(),
|
darkTheme: Boolean = isSystemInDarkTheme(),
|
||||||
@@ -264,7 +54,7 @@ fun AppTheme(
|
|||||||
}
|
}
|
||||||
|
|
||||||
darkTheme -> darkScheme
|
darkTheme -> darkScheme
|
||||||
else -> lightScheme
|
else -> darkScheme
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialTheme(
|
MaterialTheme(
|
||||||
|
|||||||
Reference in New Issue
Block a user