refactor(tv): move background gradient to theme

This commit is contained in:
Jarne Demeulemeester 2023-12-31 20:54:13 +01:00
parent 96288db877
commit 2b6649e0ce
No known key found for this signature in database
GPG key ID: 1E5C6AFBD622E9F5
22 changed files with 331 additions and 466 deletions

View file

@ -4,13 +4,6 @@ import android.os.Bundle
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.RectangleShape
import androidx.tv.material3.ExperimentalTvMaterial3Api
import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.NonInteractiveSurfaceDefaults
import androidx.tv.material3.Surface
import com.ramcosta.composedestinations.DestinationsNavHost import com.ramcosta.composedestinations.DestinationsNavHost
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.database.ServerDatabaseDao import dev.jdtech.jellyfin.database.ServerDatabaseDao
@ -32,7 +25,6 @@ class MainActivity : ComponentActivity() {
@Inject @Inject
lateinit var appPreferences: AppPreferences lateinit var appPreferences: AppPreferences
@OptIn(ExperimentalTvMaterial3Api::class)
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -48,13 +40,6 @@ class MainActivity : ComponentActivity() {
setContent { setContent {
FindroidTheme { FindroidTheme {
Surface(
colors = NonInteractiveSurfaceDefaults.colors(
containerColor = MaterialTheme.colorScheme.background,
),
shape = RectangleShape,
modifier = Modifier.fillMaxSize(),
) {
DestinationsNavHost( DestinationsNavHost(
navGraph = NavGraphs.root, navGraph = NavGraphs.root,
startRoute = startRoute, startRoute = startRoute,
@ -62,7 +47,6 @@ class MainActivity : ComponentActivity() {
} }
} }
} }
}
private fun checkServersEmpty(): Boolean { private fun checkServersEmpty(): Boolean {
if (!viewModel.startDestinationChanged) { if (!viewModel.startDestinationChanged) {

View file

@ -1,6 +1,5 @@
package dev.jdtech.jellyfin.ui package dev.jdtech.jellyfin.ui
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
@ -24,8 +23,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@ -39,7 +36,6 @@ import androidx.tv.material3.ExperimentalTvMaterial3Api
import androidx.tv.material3.Icon import androidx.tv.material3.Icon
import androidx.tv.material3.LocalContentColor import androidx.tv.material3.LocalContentColor
import androidx.tv.material3.MaterialTheme import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Surface
import androidx.tv.material3.Text import androidx.tv.material3.Text
import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator import com.ramcosta.composedestinations.navigation.DestinationsNavigator
@ -92,8 +88,7 @@ private fun AddServerScreenLayout(
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize(),
.background(Brush.linearGradient(listOf(Color.Black, Color(0xFF001721)))),
) { ) {
Column( Column(
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
@ -179,16 +174,13 @@ private fun AddServerScreenLayout(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun AddServerScreenLayoutPreview() { private fun AddServerScreenLayoutPreview() {
FindroidTheme { FindroidTheme {
Surface {
AddServerScreenLayout( AddServerScreenLayout(
uiState = AddServerViewModel.UiState.Normal, uiState = AddServerViewModel.UiState.Normal,
onConnectClick = {}, onConnectClick = {},
) )
} }
}
} }

View file

@ -30,7 +30,6 @@ import androidx.tv.foundation.lazy.list.TvLazyRow
import androidx.tv.foundation.lazy.list.items import androidx.tv.foundation.lazy.list.items
import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.ExperimentalTvMaterial3Api
import androidx.tv.material3.MaterialTheme import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Surface
import androidx.tv.material3.Text import androidx.tv.material3.Text
import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator import com.ramcosta.composedestinations.navigation.DestinationsNavigator
@ -179,19 +178,16 @@ private fun HomeScreenLayout(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun HomeScreenLayoutPreview() { private fun HomeScreenLayoutPreview() {
FindroidTheme { FindroidTheme {
Surface {
HomeScreenLayout( HomeScreenLayout(
uiState = HomeViewModel.UiState.Normal(dummyHomeItems), uiState = HomeViewModel.UiState.Normal(dummyHomeItems),
isLoading = {}, isLoading = {},
onClick = {}, onClick = {},
) )
} }
}
} }
@Preview(showBackground = true) @Preview(showBackground = true)

View file

@ -19,7 +19,6 @@ import androidx.tv.foundation.lazy.grid.TvLazyVerticalGrid
import androidx.tv.foundation.lazy.grid.items import androidx.tv.foundation.lazy.grid.items
import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.ExperimentalTvMaterial3Api
import androidx.tv.material3.MaterialTheme import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Surface
import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import dev.jdtech.jellyfin.destinations.LibraryScreenDestination import dev.jdtech.jellyfin.destinations.LibraryScreenDestination
@ -102,17 +101,14 @@ private fun LibrariesScreenLayout(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun LibrariesScreenLayoutPreview() { private fun LibrariesScreenLayoutPreview() {
FindroidTheme { FindroidTheme {
Surface {
LibrariesScreenLayout( LibrariesScreenLayout(
uiState = MediaViewModel.UiState.Normal(dummyCollections), uiState = MediaViewModel.UiState.Normal(dummyCollections),
isLoading = {}, isLoading = {},
onClick = { _, _, _ -> }, onClick = { _, _, _ -> },
) )
} }
}
} }

View file

@ -1,6 +1,5 @@
package dev.jdtech.jellyfin.ui package dev.jdtech.jellyfin.ui
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
@ -12,8 +11,6 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.hilt.navigation.compose.hiltViewModel import androidx.hilt.navigation.compose.hiltViewModel
import androidx.paging.PagingData import androidx.paging.PagingData
@ -23,7 +20,6 @@ import androidx.tv.foundation.lazy.grid.TvGridItemSpan
import androidx.tv.foundation.lazy.grid.TvLazyVerticalGrid import androidx.tv.foundation.lazy.grid.TvLazyVerticalGrid
import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.ExperimentalTvMaterial3Api
import androidx.tv.material3.MaterialTheme import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Surface
import androidx.tv.material3.Text import androidx.tv.material3.Text
import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator import com.ramcosta.composedestinations.navigation.DestinationsNavigator
@ -94,7 +90,6 @@ private fun LibraryScreenLayout(
contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.default * 2, vertical = MaterialTheme.spacings.large), contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.default * 2, vertical = MaterialTheme.spacings.large),
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize()
.background(Brush.linearGradient(listOf(Color.Black, Color(0xFF001721))))
.focusRequester(focusRequester), .focusRequester(focusRequester),
) { ) {
item(span = { TvGridItemSpan(this.maxLineSpan) }) { item(span = { TvGridItemSpan(this.maxLineSpan) }) {
@ -126,18 +121,15 @@ private fun LibraryScreenLayout(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun LibraryScreenLayoutPreview() { private fun LibraryScreenLayoutPreview() {
val data: Flow<PagingData<FindroidItem>> = flowOf(PagingData.from(dummyMovies)) val data: Flow<PagingData<FindroidItem>> = flowOf(PagingData.from(dummyMovies))
FindroidTheme { FindroidTheme {
Surface {
LibraryScreenLayout( LibraryScreenLayout(
libraryName = "Movies", libraryName = "Movies",
uiState = LibraryViewModel.UiState.Normal(data), uiState = LibraryViewModel.UiState.Normal(data),
onClick = {}, onClick = {},
) )
} }
}
} }

View file

@ -1,6 +1,5 @@
package dev.jdtech.jellyfin.ui package dev.jdtech.jellyfin.ui
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
@ -24,8 +23,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.ImeAction
@ -40,7 +37,6 @@ import androidx.tv.material3.Icon
import androidx.tv.material3.LocalContentColor import androidx.tv.material3.LocalContentColor
import androidx.tv.material3.MaterialTheme import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.OutlinedButton import androidx.tv.material3.OutlinedButton
import androidx.tv.material3.Surface
import androidx.tv.material3.Text import androidx.tv.material3.Text
import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator import com.ramcosta.composedestinations.navigation.DestinationsNavigator
@ -124,8 +120,7 @@ private fun LoginScreenLayout(
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize(),
.background(Brush.linearGradient(listOf(Color.Black, Color(0xFF001721)))),
) { ) {
Column( Column(
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
@ -254,12 +249,10 @@ private fun LoginScreenLayout(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun LoginScreenLayoutPreview() { private fun LoginScreenLayoutPreview() {
FindroidTheme { FindroidTheme {
Surface {
LoginScreenLayout( LoginScreenLayout(
uiState = LoginViewModel.UiState.Normal, uiState = LoginViewModel.UiState.Normal,
quickConnectUiState = LoginViewModel.QuickConnectUiState.Normal, quickConnectUiState = LoginViewModel.QuickConnectUiState.Normal,
@ -267,15 +260,12 @@ private fun LoginScreenLayoutPreview() {
onQuickConnectClick = {}, onQuickConnectClick = {},
) )
} }
}
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun LoginScreenLayoutPreviewError() { private fun LoginScreenLayoutPreviewError() {
FindroidTheme { FindroidTheme {
Surface {
LoginScreenLayout( LoginScreenLayout(
uiState = LoginViewModel.UiState.Error(UiText.DynamicString("Invalid username or password")), uiState = LoginViewModel.UiState.Error(UiText.DynamicString("Invalid username or password")),
quickConnectUiState = LoginViewModel.QuickConnectUiState.Normal, quickConnectUiState = LoginViewModel.QuickConnectUiState.Normal,
@ -283,5 +273,4 @@ private fun LoginScreenLayoutPreviewError() {
onQuickConnectClick = {}, onQuickConnectClick = {},
) )
} }
}
} }

View file

@ -2,7 +2,6 @@ package dev.jdtech.jellyfin.ui
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.annotation.StringRes import androidx.annotation.StringRes
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.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@ -24,7 +23,6 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@ -34,7 +32,6 @@ import androidx.hilt.navigation.compose.hiltViewModel
import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.ExperimentalTvMaterial3Api
import androidx.tv.material3.Icon import androidx.tv.material3.Icon
import androidx.tv.material3.MaterialTheme import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Surface
import androidx.tv.material3.Tab import androidx.tv.material3.Tab
import androidx.tv.material3.TabDefaults import androidx.tv.material3.TabDefaults
import androidx.tv.material3.TabRow import androidx.tv.material3.TabRow
@ -102,8 +99,7 @@ private fun MainScreenLayout(
Column( Column(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize(),
.background(Brush.linearGradient(listOf(Color.Black, Color(0xFF001721)))),
) { ) {
Box( Box(
modifier = Modifier modifier = Modifier
@ -195,16 +191,13 @@ private fun MainScreenLayout(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun MainScreenLayoutPreview() { private fun MainScreenLayoutPreview() {
FindroidTheme { FindroidTheme {
Surface {
MainScreenLayout( MainScreenLayout(
uiState = MainViewModel.UiState.Normal(server = dummyServer, user = dummyUser), uiState = MainViewModel.UiState.Normal(server = dummyServer, user = dummyUser),
navigator = EmptyDestinationsNavigator, navigator = EmptyDestinationsNavigator,
) )
} }
}
} }

View file

@ -43,7 +43,6 @@ import androidx.tv.material3.ExperimentalTvMaterial3Api
import androidx.tv.material3.Icon import androidx.tv.material3.Icon
import androidx.tv.material3.LocalContentColor import androidx.tv.material3.LocalContentColor
import androidx.tv.material3.MaterialTheme import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Surface
import androidx.tv.material3.Text import androidx.tv.material3.Text
import coil.compose.AsyncImage import coil.compose.AsyncImage
import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.Destination
@ -335,12 +334,10 @@ private fun MovieScreenLayout(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun MovieScreenLayoutPreview() { private fun MovieScreenLayoutPreview() {
FindroidTheme { FindroidTheme {
Surface {
MovieScreenLayout( MovieScreenLayout(
uiState = MovieViewModel.UiState.Normal( uiState = MovieViewModel.UiState.Normal(
item = dummyMovie, item = dummyMovie,
@ -371,5 +368,4 @@ private fun MovieScreenLayoutPreview() {
onFavoriteClick = {}, onFavoriteClick = {},
) )
} }
}
} }

View file

@ -1,8 +1,6 @@
package dev.jdtech.jellyfin.ui package dev.jdtech.jellyfin.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.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
@ -16,15 +14,12 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.hilt.navigation.compose.hiltViewModel import androidx.hilt.navigation.compose.hiltViewModel
import androidx.tv.foundation.lazy.list.TvLazyColumn import androidx.tv.foundation.lazy.list.TvLazyColumn
import androidx.tv.foundation.lazy.list.items import androidx.tv.foundation.lazy.list.items
import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.ExperimentalTvMaterial3Api
import androidx.tv.material3.MaterialTheme import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Surface
import androidx.tv.material3.Text import androidx.tv.material3.Text
import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator import com.ramcosta.composedestinations.navigation.DestinationsNavigator
@ -95,11 +90,6 @@ private fun SeasonScreenLayout(
is SeasonViewModel.UiState.Loading -> Text(text = "LOADING") is SeasonViewModel.UiState.Loading -> Text(text = "LOADING")
is SeasonViewModel.UiState.Normal -> { is SeasonViewModel.UiState.Normal -> {
val episodes = uiState.episodes val episodes = uiState.episodes
Box(
modifier = Modifier
.fillMaxSize()
.background(Brush.linearGradient(listOf(Color.Black, Color(0xFF001721)))),
) {
Row( Row(
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
) { ) {
@ -148,17 +138,14 @@ private fun SeasonScreenLayout(
} }
} }
} }
}
is SeasonViewModel.UiState.Error -> Text(text = uiState.error.toString()) is SeasonViewModel.UiState.Error -> Text(text = uiState.error.toString())
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun SeasonScreenLayoutPreview() { private fun SeasonScreenLayoutPreview() {
FindroidTheme { FindroidTheme {
Surface {
SeasonScreenLayout( SeasonScreenLayout(
seriesName = "86 EIGHTY-SIX", seriesName = "86 EIGHTY-SIX",
seasonName = "Season 1", seasonName = "Season 1",
@ -166,5 +153,4 @@ private fun SeasonScreenLayoutPreview() {
onClick = {}, onClick = {},
) )
} }
}
} }

View file

@ -1,7 +1,6 @@
package dev.jdtech.jellyfin.ui package dev.jdtech.jellyfin.ui
import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.BorderStroke
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.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@ -24,7 +23,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.pluralStringResource import androidx.compose.ui.res.pluralStringResource
@ -136,8 +134,7 @@ private fun ServerSelectScreenLayout(
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize(),
.background(Brush.linearGradient(listOf(Color.Black, Color(0xFF001721)))),
) { ) {
Column( Column(
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
@ -204,12 +201,10 @@ private fun ServerSelectScreenLayout(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun ServerSelectScreenLayoutPreview() { private fun ServerSelectScreenLayoutPreview() {
FindroidTheme { FindroidTheme {
Surface {
ServerSelectScreenLayout( ServerSelectScreenLayout(
uiState = ServerSelectViewModel.UiState.Normal(dummyServers), uiState = ServerSelectViewModel.UiState.Normal(dummyServers),
discoveredServersState = ServerSelectViewModel.DiscoveredServersState.Servers( discoveredServersState = ServerSelectViewModel.DiscoveredServersState.Servers(
@ -219,15 +214,12 @@ private fun ServerSelectScreenLayoutPreview() {
onAddServerClick = {}, onAddServerClick = {},
) )
} }
}
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun ServerSelectScreenLayoutPreviewNoDiscovered() { private fun ServerSelectScreenLayoutPreviewNoDiscovered() {
FindroidTheme { FindroidTheme {
Surface {
ServerSelectScreenLayout( ServerSelectScreenLayout(
uiState = ServerSelectViewModel.UiState.Normal(dummyServers), uiState = ServerSelectViewModel.UiState.Normal(dummyServers),
discoveredServersState = ServerSelectViewModel.DiscoveredServersState.Servers( discoveredServersState = ServerSelectViewModel.DiscoveredServersState.Servers(
@ -237,15 +229,12 @@ private fun ServerSelectScreenLayoutPreviewNoDiscovered() {
onAddServerClick = {}, onAddServerClick = {},
) )
} }
}
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun ServerSelectScreenLayoutPreviewNoServers() { private fun ServerSelectScreenLayoutPreviewNoServers() {
FindroidTheme { FindroidTheme {
Surface {
ServerSelectScreenLayout( ServerSelectScreenLayout(
uiState = ServerSelectViewModel.UiState.Normal(emptyList()), uiState = ServerSelectViewModel.UiState.Normal(emptyList()),
discoveredServersState = ServerSelectViewModel.DiscoveredServersState.Servers( discoveredServersState = ServerSelectViewModel.DiscoveredServersState.Servers(
@ -255,7 +244,6 @@ private fun ServerSelectScreenLayoutPreviewNoServers() {
onAddServerClick = {}, onAddServerClick = {},
) )
} }
}
} }
@OptIn(ExperimentalTvMaterial3Api::class) @OptIn(ExperimentalTvMaterial3Api::class)
@ -324,27 +312,21 @@ private fun ServerComponent(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class)
@Preview @Preview
@Composable @Composable
private fun ServerComponentPreview() { private fun ServerComponentPreview() {
FindroidTheme { FindroidTheme {
Surface {
ServerComponent(dummyDiscoveredServer) ServerComponent(dummyDiscoveredServer)
} }
}
} }
@OptIn(ExperimentalTvMaterial3Api::class)
@Preview @Preview
@Composable @Composable
private fun ServerComponentPreviewDiscovered() { private fun ServerComponentPreviewDiscovered() {
FindroidTheme { FindroidTheme {
Surface {
ServerComponent( ServerComponent(
server = dummyDiscoveredServer, server = dummyDiscoveredServer,
discovered = true, discovered = true,
) )
} }
}
} }

View file

@ -1,6 +1,5 @@
package dev.jdtech.jellyfin.ui package dev.jdtech.jellyfin.ui
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
@ -12,8 +11,6 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringArrayResource import androidx.compose.ui.res.stringArrayResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
@ -24,7 +21,6 @@ import androidx.tv.foundation.lazy.grid.TvLazyVerticalGrid
import androidx.tv.foundation.lazy.grid.items import androidx.tv.foundation.lazy.grid.items
import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.ExperimentalTvMaterial3Api
import androidx.tv.material3.MaterialTheme import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Surface
import androidx.tv.material3.Text import androidx.tv.material3.Text
import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator import com.ramcosta.composedestinations.navigation.DestinationsNavigator
@ -101,7 +97,6 @@ private fun SettingsScreenLayout(
contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.default * 2, vertical = MaterialTheme.spacings.large), contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.default * 2, vertical = MaterialTheme.spacings.large),
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize()
.background(Brush.linearGradient(listOf(Color.Black, Color(0xFF001721))))
.focusRequester(focusRequester), .focusRequester(focusRequester),
) { ) {
item(span = { TvGridItemSpan(this.maxLineSpan) }) { item(span = { TvGridItemSpan(this.maxLineSpan) }) {
@ -143,12 +138,10 @@ private fun SettingsScreenLayout(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun SettingsScreenLayoutPreview() { private fun SettingsScreenLayoutPreview() {
FindroidTheme { FindroidTheme {
Surface {
SettingsScreenLayout( SettingsScreenLayout(
uiState = SettingsViewModel.UiState.Normal( uiState = SettingsViewModel.UiState.Normal(
listOf( listOf(
@ -165,5 +158,4 @@ private fun SettingsScreenLayoutPreview() {
onUpdate = {}, onUpdate = {},
) )
} }
}
} }

View file

@ -1,7 +1,6 @@
package dev.jdtech.jellyfin.ui package dev.jdtech.jellyfin.ui
import androidx.annotation.StringRes import androidx.annotation.StringRes
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.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@ -20,8 +19,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.focus.onFocusChanged
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringArrayResource import androidx.compose.ui.res.stringArrayResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
@ -30,7 +27,6 @@ import androidx.tv.foundation.lazy.list.TvLazyColumn
import androidx.tv.foundation.lazy.list.items import androidx.tv.foundation.lazy.list.items
import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.ExperimentalTvMaterial3Api
import androidx.tv.material3.MaterialTheme import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Surface
import androidx.tv.material3.Text import androidx.tv.material3.Text
import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator import com.ramcosta.composedestinations.navigation.DestinationsNavigator
@ -111,7 +107,6 @@ private fun SettingsSubScreenLayout(
Column( Column(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize()
.background(Brush.linearGradient(listOf(Color.Black, Color(0xFF001721))))
.padding( .padding(
start = MaterialTheme.spacings.large, start = MaterialTheme.spacings.large,
top = MaterialTheme.spacings.default * 2, top = MaterialTheme.spacings.default * 2,
@ -223,12 +218,10 @@ private fun SettingsSubScreenLayout(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun SettingsSubScreenLayoutPreview() { private fun SettingsSubScreenLayoutPreview() {
FindroidTheme { FindroidTheme {
Surface {
SettingsSubScreenLayout( SettingsSubScreenLayout(
uiState = SettingsViewModel.UiState.Normal( uiState = SettingsViewModel.UiState.Normal(
listOf( listOf(
@ -245,5 +238,4 @@ private fun SettingsSubScreenLayoutPreview() {
onUpdate = {}, onUpdate = {},
) )
} }
}
} }

View file

@ -53,7 +53,6 @@ import androidx.tv.material3.ExperimentalTvMaterial3Api
import androidx.tv.material3.Icon import androidx.tv.material3.Icon
import androidx.tv.material3.LocalContentColor import androidx.tv.material3.LocalContentColor
import androidx.tv.material3.MaterialTheme import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Surface
import androidx.tv.material3.Text import androidx.tv.material3.Text
import coil.compose.AsyncImage import coil.compose.AsyncImage
import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.Destination
@ -394,12 +393,10 @@ private fun ShowScreenLayout(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun ShowScreenLayoutPreview() { private fun ShowScreenLayoutPreview() {
FindroidTheme { FindroidTheme {
Surface {
ShowScreenLayout( ShowScreenLayout(
uiState = ShowViewModel.UiState.Normal( uiState = ShowViewModel.UiState.Normal(
item = dummyShow, item = dummyShow,
@ -420,5 +417,4 @@ private fun ShowScreenLayoutPreview() {
onSeasonClick = {}, onSeasonClick = {},
) )
} }
}
} }

View file

@ -1,7 +1,6 @@
package dev.jdtech.jellyfin.ui package dev.jdtech.jellyfin.ui
import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.BorderStroke
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.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@ -22,7 +21,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
@ -124,8 +122,7 @@ private fun UserSelectScreenLayout(
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize(),
.background(Brush.linearGradient(listOf(Color.Black, Color(0xFF001721)))),
) { ) {
Column( Column(
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
@ -181,12 +178,10 @@ private fun UserSelectScreenLayout(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun UserSelectScreenLayoutPreview() { private fun UserSelectScreenLayoutPreview() {
FindroidTheme { FindroidTheme {
Surface {
UserSelectScreenLayout( UserSelectScreenLayout(
uiState = UserSelectViewModel.UiState.Normal(dummyServer, dummyUsers), uiState = UserSelectViewModel.UiState.Normal(dummyServer, dummyUsers),
baseUrl = "https://demo.jellyfin.org/stable", baseUrl = "https://demo.jellyfin.org/stable",
@ -194,15 +189,12 @@ private fun UserSelectScreenLayoutPreview() {
onAddUserClick = {}, onAddUserClick = {},
) )
} }
}
} }
@OptIn(ExperimentalTvMaterial3Api::class) @Preview(device = "id:tv_1080p")
@Preview(widthDp = 960, heightDp = 540)
@Composable @Composable
private fun UserSelectScreenLayoutPreviewNoUsers() { private fun UserSelectScreenLayoutPreviewNoUsers() {
FindroidTheme { FindroidTheme {
Surface {
UserSelectScreenLayout( UserSelectScreenLayout(
uiState = UserSelectViewModel.UiState.Normal(dummyServer, emptyList()), uiState = UserSelectViewModel.UiState.Normal(dummyServer, emptyList()),
baseUrl = "https://demo.jellyfin.org/stable", baseUrl = "https://demo.jellyfin.org/stable",
@ -210,7 +202,6 @@ private fun UserSelectScreenLayoutPreviewNoUsers() {
onAddUserClick = {}, onAddUserClick = {},
) )
} }
}
} }
@OptIn(ExperimentalTvMaterial3Api::class) @OptIn(ExperimentalTvMaterial3Api::class)
@ -273,16 +264,13 @@ private fun UserComponent(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class)
@Preview @Preview
@Composable @Composable
private fun UserComponentPreview() { private fun UserComponentPreview() {
FindroidTheme { FindroidTheme {
Surface {
UserComponent( UserComponent(
user = dummyUser, user = dummyUser,
baseUrl = "https://demo.jellyfin.org/stable", baseUrl = "https://demo.jellyfin.org/stable",
) )
} }
}
} }

View file

@ -98,16 +98,13 @@ fun EpisodeCard(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class)
@Preview @Preview
@Composable @Composable
private fun ItemCardPreviewEpisode() { private fun ItemCardPreviewEpisode() {
FindroidTheme { FindroidTheme {
Surface {
EpisodeCard( EpisodeCard(
episode = dummyEpisode, episode = dummyEpisode,
onClick = {}, onClick = {},
) )
} }
}
} }

View file

@ -127,47 +127,38 @@ fun ItemCard(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class)
@Preview @Preview
@Composable @Composable
private fun ItemCardPreviewMovie() { private fun ItemCardPreviewMovie() {
FindroidTheme { FindroidTheme {
Surface {
ItemCard( ItemCard(
item = dummyMovie, item = dummyMovie,
direction = Direction.HORIZONTAL, direction = Direction.HORIZONTAL,
onClick = {}, onClick = {},
) )
} }
}
} }
@OptIn(ExperimentalTvMaterial3Api::class)
@Preview @Preview
@Composable @Composable
private fun ItemCardPreviewMovieVertical() { private fun ItemCardPreviewMovieVertical() {
FindroidTheme { FindroidTheme {
Surface {
ItemCard( ItemCard(
item = dummyMovie, item = dummyMovie,
direction = Direction.VERTICAL, direction = Direction.VERTICAL,
onClick = {}, onClick = {},
) )
} }
}
} }
@OptIn(ExperimentalTvMaterial3Api::class)
@Preview @Preview
@Composable @Composable
private fun ItemCardPreviewEpisode() { private fun ItemCardPreviewEpisode() {
FindroidTheme { FindroidTheme {
Surface {
ItemCard( ItemCard(
item = dummyEpisode, item = dummyEpisode,
direction = Direction.HORIZONTAL, direction = Direction.HORIZONTAL,
onClick = {}, onClick = {},
) )
} }
}
} }

View file

@ -81,16 +81,13 @@ fun ProfileButton(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class)
@Preview @Preview
@Composable @Composable
private fun ProfileButtonPreview() { private fun ProfileButtonPreview() {
FindroidTheme { FindroidTheme {
Surface {
ProfileButton( ProfileButton(
user = dummyUser, user = dummyUser,
onClick = {}, onClick = {},
) )
} }
}
} }

View file

@ -17,7 +17,6 @@ import androidx.compose.ui.unit.dp
import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.ExperimentalTvMaterial3Api
import androidx.tv.material3.Icon import androidx.tv.material3.Icon
import androidx.tv.material3.MaterialTheme import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Surface
import androidx.tv.material3.Text import androidx.tv.material3.Text
import dev.jdtech.jellyfin.models.FindroidItem import dev.jdtech.jellyfin.models.FindroidItem
import dev.jdtech.jellyfin.ui.dummy.dummyEpisode import dev.jdtech.jellyfin.ui.dummy.dummyEpisode
@ -67,28 +66,22 @@ fun ProgressBadge(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class)
@Preview @Preview
@Composable @Composable
private fun ProgressBadgePreviewWatched() { private fun ProgressBadgePreviewWatched() {
FindroidTheme { FindroidTheme {
Surface {
ProgressBadge( ProgressBadge(
item = dummyEpisode, item = dummyEpisode,
) )
} }
}
} }
@OptIn(ExperimentalTvMaterial3Api::class)
@Preview @Preview
@Composable @Composable
private fun ProgressBadgePreviewItemRemaining() { private fun ProgressBadgePreviewItemRemaining() {
FindroidTheme { FindroidTheme {
Surface {
ProgressBadge( ProgressBadge(
item = dummyShow, item = dummyShow,
) )
} }
}
} }

View file

@ -93,12 +93,10 @@ fun SettingsCategoryCard(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class)
@Preview @Preview
@Composable @Composable
private fun SettingsCategoryCardPreview() { private fun SettingsCategoryCardPreview() {
FindroidTheme { FindroidTheme {
Surface {
SettingsCategoryCard( SettingsCategoryCard(
preference = PreferenceCategory( preference = PreferenceCategory(
nameStringResource = CoreR.string.settings_category_player, nameStringResource = CoreR.string.settings_category_player,
@ -106,5 +104,4 @@ private fun SettingsCategoryCardPreview() {
), ),
) )
} }
}
} }

View file

@ -102,12 +102,10 @@ fun SettingsSelectCard(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class)
@Preview @Preview
@Composable @Composable
private fun SettingsSelectCardPreview() { private fun SettingsSelectCardPreview() {
FindroidTheme { FindroidTheme {
Surface {
SettingsSelectCard( SettingsSelectCard(
preference = PreferenceSelect( preference = PreferenceSelect(
nameStringResource = CoreR.string.settings_preferred_audio_language, nameStringResource = CoreR.string.settings_preferred_audio_language,
@ -120,5 +118,4 @@ private fun SettingsSelectCardPreview() {
onClick = {}, onClick = {},
) )
} }
}
} }

View file

@ -96,12 +96,10 @@ fun SettingsSwitchCard(
} }
} }
@OptIn(ExperimentalTvMaterial3Api::class)
@Preview @Preview
@Composable @Composable
private fun SettingsSwitchCardPreview() { private fun SettingsSwitchCardPreview() {
FindroidTheme { FindroidTheme {
Surface {
SettingsSwitchCard( SettingsSwitchCard(
preference = PreferenceSwitch( preference = PreferenceSwitch(
nameStringResource = R.string.settings_use_cache_title, nameStringResource = R.string.settings_use_cache_title,
@ -113,15 +111,12 @@ private fun SettingsSwitchCardPreview() {
onClick = {}, onClick = {},
) )
} }
}
} }
@OptIn(ExperimentalTvMaterial3Api::class)
@Preview @Preview
@Composable @Composable
private fun SettingsSwitchCardDisabledPreview() { private fun SettingsSwitchCardDisabledPreview() {
FindroidTheme { FindroidTheme {
Surface {
SettingsSwitchCard( SettingsSwitchCard(
preference = PreferenceSwitch( preference = PreferenceSwitch(
nameStringResource = R.string.settings_use_cache_title, nameStringResource = R.string.settings_use_cache_title,
@ -134,15 +129,12 @@ private fun SettingsSwitchCardDisabledPreview() {
onClick = {}, onClick = {},
) )
} }
}
} }
@OptIn(ExperimentalTvMaterial3Api::class)
@Preview @Preview
@Composable @Composable
private fun SettingsSwitchCardDescriptionPreview() { private fun SettingsSwitchCardDescriptionPreview() {
FindroidTheme { FindroidTheme {
Surface {
SettingsSwitchCard( SettingsSwitchCard(
preference = PreferenceSwitch( preference = PreferenceSwitch(
nameStringResource = R.string.settings_use_cache_title, nameStringResource = R.string.settings_use_cache_title,
@ -155,5 +147,4 @@ private fun SettingsSwitchCardDescriptionPreview() {
onClick = {}, onClick = {},
) )
} }
}
} }

View file

@ -1,15 +1,24 @@
package dev.jdtech.jellyfin.ui.theme package dev.jdtech.jellyfin.ui.theme
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.RectangleShape
import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.ExperimentalTvMaterial3Api
import androidx.tv.material3.NonInteractiveSurfaceDefaults
import androidx.tv.material3.Surface
import androidx.tv.material3.MaterialTheme as MaterialThemeTv import androidx.tv.material3.MaterialTheme as MaterialThemeTv
@OptIn(ExperimentalTvMaterial3Api::class) @OptIn(ExperimentalTvMaterial3Api::class)
@Composable @Composable
fun FindroidTheme( fun FindroidTheme(
content: @Composable () -> Unit, content: @Composable BoxScope.() -> Unit,
) { ) {
MaterialTheme( MaterialTheme(
colorScheme = ColorScheme, colorScheme = ColorScheme,
@ -23,8 +32,27 @@ fun FindroidTheme(
colorScheme = ColorSchemeTv, colorScheme = ColorSchemeTv,
typography = TypographyTv, typography = TypographyTv,
shapes = shapesTv, shapes = shapesTv,
content = {
Surface(
colors = NonInteractiveSurfaceDefaults.colors(
containerColor = androidx.tv.material3.MaterialTheme.colorScheme.background,
),
shape = RectangleShape,
) {
Box(
modifier = Modifier.background(
Brush.linearGradient(
listOf(
Color.Black,
Color(0xFF001721),
),
),
),
content = content, content = content,
) )
} }
},
)
}
} }
} }