diff --git a/JetStreamCompose/jetstream/src/main/res/drawable/app_banner_foreground.xml b/JetStreamCompose/jetstream/src/main/res/drawable/app_banner_foreground.xml new file mode 100644 index 00000000..c4656f8b --- /dev/null +++ b/JetStreamCompose/jetstream/src/main/res/drawable/app_banner_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + diff --git a/JetStreamCompose/jetstream/src/main/res/drawable/ic_launcher_foreground.xml b/JetStreamCompose/jetstream/src/main/res/drawable/ic_launcher_foreground.xml index a544fcf1..38339e14 100644 --- a/JetStreamCompose/jetstream/src/main/res/drawable/ic_launcher_foreground.xml +++ b/JetStreamCompose/jetstream/src/main/res/drawable/ic_launcher_foreground.xml @@ -23,9 +23,6 @@ android:scaleY="0.2371875" android:translateX="16.05" android:translateY="32.653126"> - + + + + + + \ No newline at end of file diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/App.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/App.kt index 6b8aa0e4..1501af64 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/App.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/App.kt @@ -12,14 +12,12 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.unit.LayoutDirection -import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.MaterialTheme import androidx.tv.material3.Surface import com.google.tv.material.catalog.colorutils.Scheme.Companion.dark import com.google.tv.material.catalog.colorutils.Scheme.Companion.light import com.google.tv.material.catalog.colorutils.toColorScheme -@OptIn(ExperimentalTvMaterial3Api::class) @Composable fun App() { var themeMode by remember { mutableStateOf(Mode.Dark) } diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/AppBar.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/AppBar.kt index eaa08387..b40d907e 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/AppBar.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/AppBar.kt @@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape @@ -22,7 +23,6 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.navigation.compose.currentBackStackEntryAsState import androidx.tv.material3.Button -import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.Icon import androidx.tv.material3.MaterialTheme import androidx.tv.material3.Text @@ -64,7 +64,6 @@ fun AppBar( } } -@OptIn(ExperimentalTvMaterial3Api::class) @Composable private fun HeadlineContent( title: String, @@ -72,6 +71,7 @@ private fun HeadlineContent( isMainIconMagnified: Boolean, ) { Row( + modifier = Modifier.height(64.dp), horizontalArrangement = Arrangement.spacedBy(16.dp), verticalAlignment = Alignment.CenterVertically, ) { @@ -110,7 +110,6 @@ private fun HeadlineContent( } } -@OptIn(ExperimentalTvMaterial3Api::class) @Composable private fun Actions( onThemeColorModeClick: () -> Unit, @@ -129,7 +128,10 @@ private fun Actions( ) ) - Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) { + Row( + horizontalArrangement = Arrangement.spacedBy(16.dp), + modifier = Modifier.padding(end = 8.dp) + ) { actions.forEach { Button(onClick = it.onClick) { Icon( diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/Component.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/Component.kt index 23a106a5..45dac91c 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/Component.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/Component.kt @@ -1,5 +1,12 @@ package com.google.tv.material.catalog +val foundations = listOf( + Component.Color, + Component.Typography, + Component.Motion, + Component.Interaction, +) + val components = listOf( Component.Button, Component.Card, @@ -7,28 +14,21 @@ val components = listOf( Component.ListItem, Component.ImmersiveList, Component.FeaturedCarousel, - Component.NavigationDrawer, Component.TabRow, +) + +val componentsPlanned = listOf( + Component.NavigationDrawer, Component.ModalDialog, Component.TextField, Component.MediaPlayerOverlay, ) -val foundations = listOf( - Foundation.Color, - Foundation.Typography, - Foundation.Motion, - Foundation.Interaction, -) - -enum class Foundation(val title: String, val imageArg: String, val routeValue: String) { +enum class Component(val title: String, val imageArg: String, val routeValue: String) { Color(title = "Color", imageArg = "colors", routeValue = NavGraph.Color.routeName), Typography(title = "Typography", imageArg = "typography", routeValue = NavGraph.Typography.routeName), Motion(title = "Motion", imageArg = "motion", routeValue = NavGraph.Motion.routeName), Interaction(title = "Interaction", imageArg = "interaction", routeValue = NavGraph.Interaction.routeName), -} - -enum class Component(val title: String, val imageArg: String, val routeValue: String) { Button(title = "Buttons", imageArg = "buttons", routeValue = NavGraph.Buttons.routeName), Card(title = "Cards", imageArg = "cards", routeValue = NavGraph.Cards.routeName), Chip(title = "Chips", imageArg = "chips", routeValue = NavGraph.Chips.routeName), diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/ExamplesScreenWithDottedBackground.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/ExamplesScreenWithDottedBackground.kt index 00e75278..9c55a3fd 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/ExamplesScreenWithDottedBackground.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/ExamplesScreenWithDottedBackground.kt @@ -30,7 +30,6 @@ import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.PathEffect import androidx.compose.ui.unit.dp -import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.ListItem import androidx.tv.material3.MaterialTheme import androidx.tv.material3.Text @@ -38,7 +37,7 @@ import androidx.tv.material3.surfaceColorAtElevation import kotlinx.coroutines.delay import kotlin.time.Duration.Companion.milliseconds -@OptIn(ExperimentalTvMaterial3Api::class, ExperimentalComposeUiApi::class) +@OptIn(ExperimentalComposeUiApi::class) @Composable fun ExamplesScreenWithDottedBackground( actions: List @@ -76,10 +75,11 @@ fun ExamplesScreenWithDottedBackground( if (it.isFocused) { activeAction = action } - } - ) { - Text(text = action.title) - } + }, + headlineContent = { + Text(text = action.title) + } + ) } } } diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/FontScaleAndLayoutDirectionSelector.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/FontScaleAndLayoutDirectionSelector.kt index cc37a010..99e9f6a3 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/FontScaleAndLayoutDirectionSelector.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/FontScaleAndLayoutDirectionSelector.kt @@ -28,16 +28,15 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.tv.foundation.PivotOffsets import androidx.tv.foundation.lazy.list.TvLazyColumn -import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.Icon import androidx.tv.material3.ListItem import androidx.tv.material3.MaterialTheme -import androidx.tv.material3.NonInteractiveSurfaceDefaults import androidx.tv.material3.RadioButton import androidx.tv.material3.Surface +import androidx.tv.material3.SurfaceDefaults import androidx.tv.material3.Text -@OptIn(ExperimentalTvMaterial3Api::class, ExperimentalComposeUiApi::class) +@OptIn(ExperimentalComposeUiApi::class) @Composable fun FontScaleAndLayoutDirectionSelector( isExpanded: Boolean, @@ -69,7 +68,7 @@ fun FontScaleAndLayoutDirectionSelector( .width(300.dp) .padding(12.dp) .align(Alignment.End), - colors = NonInteractiveSurfaceDefaults + colors = SurfaceDefaults .colors(containerColor = MaterialTheme.colorScheme.surface) ) { TvLazyColumn( @@ -122,10 +121,10 @@ fun FontScaleAndLayoutDirectionSelector( }, trailingContent = { RadioButton(selected = isSelected, onClick = { }) - } - ) { - Text(text = it.title) - } + }, + headlineContent = { + Text(text = it.title) + }) } } } @@ -163,10 +162,10 @@ fun FontScaleAndLayoutDirectionSelector( }, trailingContent = { RadioButton(selected = isSelected, onClick = { }) - } - ) { - Text(text = it.title) - } + }, + headlineContent = { + Text(text = it.title) + }) } } } diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/HomeGrid.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/HomeGrid.kt index acda4c28..07dee90a 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/HomeGrid.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/HomeGrid.kt @@ -6,19 +6,30 @@ import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.remember import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.focus.focusRestorer import androidx.compose.ui.unit.dp import androidx.tv.foundation.lazy.grid.TvGridCells import androidx.tv.foundation.lazy.grid.TvGridItemSpan import androidx.tv.foundation.lazy.grid.TvLazyVerticalGrid import androidx.tv.foundation.lazy.grid.itemsIndexed -import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.Text -@OptIn(ExperimentalTvMaterial3Api::class, ExperimentalComposeUiApi::class) +@OptIn(ExperimentalComposeUiApi::class) @Composable fun HomeGrid() { + val focusRequester = remember { FocusRequester() } + val itemClick = { + focusRequester.saveFocusedChild() + } + LaunchedEffect(Unit) { + focusRequester.requestFocus() + } Column(Modifier.fillMaxSize()) { Column( Modifier @@ -27,7 +38,10 @@ fun HomeGrid() { ) { TvLazyVerticalGrid( columns = TvGridCells.Fixed(4), - modifier = Modifier.padding(top = 12.dp), + modifier = Modifier + .padding(top = 12.dp) + .focusRequester(focusRequester) + .focusRestorer(), contentPadding = PaddingValues(vertical = 12.dp), horizontalArrangement = Arrangement.spacedBy(20.dp), verticalArrangement = Arrangement.spacedBy(20.dp) @@ -37,7 +51,7 @@ fun HomeGrid() { } itemsIndexed(foundations) { index, item -> - FoundationsGridCard(foundation = item) + ComponentsGridCard(component = item, onClick = itemClick) } item(span = { TvGridItemSpan(4) }) { @@ -45,7 +59,15 @@ fun HomeGrid() { } itemsIndexed(components) { index, item -> - ComponentsGridCard(component = item) + ComponentsGridCard(component = item, onClick = itemClick) + } + + item(span = { TvGridItemSpan(4) }) { + Text(text = "Components (planned)") + } + + itemsIndexed(componentsPlanned) { index, item -> + ComponentsGridCard(component = item, onClick = itemClick) } } } diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/HomeGridCard.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/HomeGridCard.kt index a075808f..e39f1a6d 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/HomeGridCard.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/HomeGridCard.kt @@ -7,26 +7,29 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp +import androidx.tv.material3.Card import androidx.tv.material3.CardDefaults -import androidx.tv.material3.CardLayoutDefaults -import androidx.tv.material3.ExperimentalTvMaterial3Api -import androidx.tv.material3.StandardCardLayout +import androidx.tv.material3.StandardCardContainer import androidx.tv.material3.Text -@OptIn(ExperimentalTvMaterial3Api::class) @Composable fun ComponentsGridCard( component: Component, - modifier: Modifier = Modifier + modifier: Modifier = Modifier, + onClick: () -> Any = {} ) { val image = getHomeGridCardImage(imageArg = component.imageArg) val navHostController = LocalNavController.current - StandardCardLayout( + StandardCardContainer( modifier = modifier, imageCard = { - CardLayoutDefaults.ImageCard( - onClick = { navHostController.navigate(component.routeValue) }, + Card( + onClick = { + onClick().also { + navHostController.navigate(component.routeValue) + } + }, interactionSource = it, colors = CardDefaults.colors(containerColor = Color.Transparent) ) { @@ -41,32 +44,3 @@ fun ComponentsGridCard( } ) } - -@OptIn(ExperimentalTvMaterial3Api::class) -@Composable -fun FoundationsGridCard( - foundation: Foundation, - modifier: Modifier = Modifier -) { - val image = getHomeGridCardImage(imageArg = foundation.imageArg) - val navHostController = LocalNavController.current - - StandardCardLayout( - modifier = modifier, - imageCard = { - CardLayoutDefaults.ImageCard( - onClick = { navHostController.navigate(foundation.routeValue) }, - interactionSource = it, - colors = CardDefaults.colors(containerColor = Color.Transparent) - ) { - Image(painter = painterResource(id = image), contentDescription = null) - } - }, - title = { - Text( - text = foundation.title, - modifier = Modifier.padding(top = 8.dp) - ) - } - ) -} diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/NavGraph.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/NavGraph.kt index c05ef4c3..e841321d 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/NavGraph.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/NavGraph.kt @@ -147,12 +147,6 @@ enum class NavGraph( } } ), - NavigationDrawer( - routeName = "nav-drawer", - composable = { - WorkInProgressScreen() - } - ), TabRow( routeName = "tab-row", composable = { appBar -> @@ -162,6 +156,12 @@ enum class NavGraph( } } ), + NavigationDrawer( + routeName = "nav-drawer", + composable = { + WorkInProgressScreen() + } + ), ModalDialog( routeName = "modal-dialog", composable = { diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/ThemeAndColorModeSelector.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/ThemeAndColorModeSelector.kt index fdd3cdf8..8b705814 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/ThemeAndColorModeSelector.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/ThemeAndColorModeSelector.kt @@ -27,16 +27,15 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.tv.foundation.PivotOffsets import androidx.tv.foundation.lazy.list.TvLazyColumn -import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.Icon import androidx.tv.material3.ListItem import androidx.tv.material3.MaterialTheme -import androidx.tv.material3.NonInteractiveSurfaceDefaults import androidx.tv.material3.RadioButton import androidx.tv.material3.Surface +import androidx.tv.material3.SurfaceDefaults import androidx.tv.material3.Text -@OptIn(ExperimentalTvMaterial3Api::class, ExperimentalComposeUiApi::class) +@OptIn(ExperimentalComposeUiApi::class) @Composable fun ThemeAndColorModeSelector( isExpanded: Boolean, @@ -68,7 +67,7 @@ fun ThemeAndColorModeSelector( .width(300.dp) .padding(12.dp) .align(Alignment.End), - colors = NonInteractiveSurfaceDefaults + colors = SurfaceDefaults .colors(containerColor = MaterialTheme.colorScheme.surface) ) { TvLazyColumn( @@ -120,10 +119,10 @@ fun ThemeAndColorModeSelector( }, trailingContent = { RadioButton(selected = isSelected, onClick = { }) - } - ) { - Text(text = it.title) - } + }, + headlineContent = { + Text(text = it.title) + }) } } } @@ -162,10 +161,10 @@ fun ThemeAndColorModeSelector( }, trailingContent = { RadioButton(selected = isSelected, onClick = { }) - } - ) { - Text(text = it.name) - } + }, + headlineContent = { + Text(text = it.name) + }) } } } diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/colorutils/ColorUtils.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/colorutils/ColorUtils.kt index 61750482..b7a7744c 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/colorutils/ColorUtils.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/colorutils/ColorUtils.kt @@ -2,7 +2,6 @@ package com.google.tv.material.catalog.colorutils import androidx.compose.ui.graphics.Color import androidx.tv.material3.ColorScheme -import androidx.tv.material3.ExperimentalTvMaterial3Api import kotlin.math.pow @@ -233,7 +232,6 @@ object ColorUtils { } } -@OptIn(ExperimentalTvMaterial3Api::class) fun Scheme.toColorScheme(): ColorScheme { return ColorScheme( primary = Color(primary), diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ButtonsScreen.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ButtonsScreen.kt index 866cc510..5b89a035 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ButtonsScreen.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ButtonsScreen.kt @@ -14,7 +14,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.tv.material3.Button import androidx.tv.material3.ButtonDefaults -import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.Icon import androidx.tv.material3.IconButton import androidx.tv.material3.IconButtonDefaults @@ -27,7 +26,6 @@ import androidx.tv.material3.WideButton import com.google.tv.material.catalog.ExampleAction import com.google.tv.material.catalog.ExamplesScreenWithDottedBackground -@OptIn(ExperimentalTvMaterial3Api::class) @Composable fun ButtonsScreen() { val actions = listOf( diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/CardsScreen.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/CardsScreen.kt index fd80cfe3..866d3089 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/CardsScreen.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/CardsScreen.kt @@ -10,31 +10,29 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp +import androidx.tv.material3.Card import androidx.tv.material3.CardDefaults -import androidx.tv.material3.CardLayoutDefaults import androidx.tv.material3.ClassicCard import androidx.tv.material3.CompactCard -import androidx.tv.material3.ExperimentalTvMaterial3Api -import androidx.tv.material3.StandardCardLayout +import androidx.tv.material3.StandardCardContainer import androidx.tv.material3.Text -import androidx.tv.material3.WideCardLayout +import androidx.tv.material3.WideCardContainer import androidx.tv.material3.WideClassicCard import com.google.tv.material.catalog.ExampleAction import com.google.tv.material.catalog.ExamplesScreenWithDottedBackground import com.google.tv.material.catalog.R -@OptIn(ExperimentalTvMaterial3Api::class) @Composable fun CardsScreen() { val actions = listOf( ExampleAction( title = "Standard card", content = { - StandardCardLayout( + StandardCardContainer( modifier = Modifier.width(180.dp), imageCard = { - CardLayoutDefaults.ImageCard( - onClick = { }, + Card( + onClick = {}, interactionSource = it, colors = CardDefaults.colors(containerColor = Color.Transparent) ) { @@ -133,10 +131,10 @@ fun CardsScreen() { ExampleAction( title = "Wide standard card", content = { - WideCardLayout( + WideCardContainer( modifier = Modifier, imageCard = { - CardLayoutDefaults.ImageCard( + Card( onClick = { }, interactionSource = it, colors = CardDefaults.colors(containerColor = Color.Transparent) diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ChipsScreen.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ChipsScreen.kt index 0eb4f954..5a616e76 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ChipsScreen.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ChipsScreen.kt @@ -113,7 +113,6 @@ fun ChipsScreen() { ExamplesScreenWithDottedBackground(actions) } -@OptIn(ExperimentalTvMaterial3Api::class) private val editIcon = @Composable { Icon( imageVector = Icons.Default.Edit, @@ -121,7 +120,6 @@ private val editIcon = @Composable { ) } -@OptIn(ExperimentalTvMaterial3Api::class) private val checkIcon = @Composable { Icon( imageVector = Icons.Default.Check, @@ -129,7 +127,6 @@ private val checkIcon = @Composable { ) } -@OptIn(ExperimentalTvMaterial3Api::class) private val clearIcon = @Composable { Icon( imageVector = Icons.Default.Clear, diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ColorsScreen.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ColorsScreen.kt index 04e99c19..b374f2b3 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ColorsScreen.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ColorsScreen.kt @@ -16,13 +16,11 @@ import androidx.tv.foundation.lazy.grid.TvGridCells import androidx.tv.foundation.lazy.grid.TvGridItemSpan import androidx.tv.foundation.lazy.grid.TvLazyVerticalGrid import androidx.tv.material3.Border -import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.MaterialTheme -import androidx.tv.material3.NonInteractiveSurfaceDefaults import androidx.tv.material3.Surface +import androidx.tv.material3.SurfaceDefaults import androidx.tv.material3.Text -@OptIn(ExperimentalTvMaterial3Api::class) @Composable fun ColorsScreen() { Row( @@ -131,7 +129,6 @@ fun ColorsScreen() { } } -@OptIn(ExperimentalTvMaterial3Api::class) @Composable private fun ColorBg( text: String, @@ -141,7 +138,7 @@ private fun ColorBg( modifier = Modifier .fillMaxWidth() .height(60.dp), - colors = NonInteractiveSurfaceDefaults.colors( + colors = SurfaceDefaults.colors( containerColor = color ), border = Border( diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/FeaturedCarouselScreen.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/FeaturedCarouselScreen.kt index 77499377..4d7dbcda 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/FeaturedCarouselScreen.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/FeaturedCarouselScreen.kt @@ -219,7 +219,6 @@ fun Modifier.carouselGradient(): Modifier = composed { ) } -@OptIn(ExperimentalTvMaterial3Api::class) @Composable fun BottomCards(modifier: Modifier) { TvLazyRow( diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ImmersiveListScreen.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ImmersiveListScreen.kt index 10f1b7e9..31f6baef 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ImmersiveListScreen.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ImmersiveListScreen.kt @@ -9,6 +9,7 @@ import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width @@ -37,13 +38,12 @@ import androidx.tv.foundation.lazy.list.TvLazyRow import androidx.tv.foundation.lazy.list.itemsIndexed import androidx.tv.material3.CardDefaults import androidx.tv.material3.CompactCard -import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.MaterialTheme import androidx.tv.material3.Text import com.google.tv.material.catalog.R import com.google.tv.material.catalog.ifElse -@OptIn(ExperimentalTvMaterial3Api::class, ExperimentalComposeUiApi::class) +@OptIn(ExperimentalComposeUiApi::class) @Composable fun ImmersiveListScreen() { var selectedCard by remember { mutableStateOf(immersiveListItems.first()) } @@ -99,6 +99,7 @@ fun ImmersiveListScreen() { TvLazyRow( modifier = Modifier .align(Alignment.BottomStart) + .fillMaxWidth() .padding(bottom = 20.dp) .focusRestorer { firstChildFr }, contentPadding = PaddingValues(start = 58.dp), @@ -171,7 +172,6 @@ private data class ImmersiveListSlide( val image: Int = 10, ) -@OptIn(ExperimentalTvMaterial3Api::class) fun Modifier.immersiveListGradient(): Modifier = composed { val color = MaterialTheme.colorScheme.surface diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/InteractionsScreen.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/InteractionsScreen.kt index 60e61ccd..a016fd47 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/InteractionsScreen.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/InteractionsScreen.kt @@ -15,7 +15,6 @@ import androidx.compose.ui.unit.dp import androidx.tv.material3.Border import androidx.tv.material3.ClickableSurfaceDefaults import androidx.tv.material3.ClickableSurfaceScale -import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.Glow import androidx.tv.material3.MaterialTheme import androidx.tv.material3.Surface @@ -23,7 +22,6 @@ import androidx.tv.material3.Text import com.google.tv.material.catalog.ExampleAction import com.google.tv.material.catalog.ExamplesScreenWithDottedBackground -@OptIn(ExperimentalTvMaterial3Api::class) @Composable fun InteractionsScreen() { val actions = listOf( diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ListsScreen.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ListsScreen.kt index b8af2ce3..7b7eb7ff 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ListsScreen.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/ListsScreen.kt @@ -15,7 +15,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.tv.material3.DenseListItem -import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.Icon import androidx.tv.material3.ListItem import androidx.tv.material3.ListItemDefaults @@ -23,7 +22,6 @@ import androidx.tv.material3.Text import com.google.tv.material.catalog.ExampleAction import com.google.tv.material.catalog.ExamplesScreenWithDottedBackground -@OptIn(ExperimentalTvMaterial3Api::class) @Composable fun ListsScreen() { val actions = listOf( diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/MotionScreen.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/MotionScreen.kt index c460002b..ae994d25 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/MotionScreen.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/MotionScreen.kt @@ -24,7 +24,6 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.MaterialTheme import androidx.tv.material3.Text import com.google.tv.material.catalog.ExampleAction @@ -63,7 +62,6 @@ fun MotionScreen() { ExamplesScreenWithDottedBackground(actions) } -@OptIn(ExperimentalTvMaterial3Api::class) @Composable private fun StandardMotion() { Column( @@ -143,7 +141,6 @@ private fun StandardMotion() { } } -@OptIn(ExperimentalTvMaterial3Api::class) @Composable private fun BrowseMotion() { Column( @@ -223,7 +220,6 @@ private fun BrowseMotion() { } } -@OptIn(ExperimentalTvMaterial3Api::class) @Composable private fun EnterMotion() { Column( @@ -303,7 +299,6 @@ private fun EnterMotion() { } } -@OptIn(ExperimentalTvMaterial3Api::class) @Composable private fun ExitMotion() { Column( diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/TabRowScreen.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/TabRowScreen.kt index c6829981..ae1a6c48 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/TabRowScreen.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/TabRowScreen.kt @@ -23,7 +23,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp -import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.MaterialTheme import androidx.tv.material3.Tab import androidx.tv.material3.TabDefaults @@ -60,7 +59,6 @@ fun TabRowScreen() { ExamplesScreenWithDottedBackground(actions) } -@OptIn(ExperimentalTvMaterial3Api::class) @Composable private fun PillIndicatorTabRow() { var selectedTabIndex by remember { mutableIntStateOf(0) } @@ -89,7 +87,6 @@ private fun PillIndicatorTabRow() { } } -@OptIn(ExperimentalTvMaterial3Api::class) @Composable private fun UnderlinedIndicatorTabRow() { var selectedTabIndex by remember { mutableIntStateOf(0) } @@ -130,12 +127,8 @@ private fun UnderlinedIndicatorTabRow() { @Composable private fun TabPanels(selectedTabIndex: Int) { - var value = 0 - AnimatedContent(targetState = selectedTabIndex, label = "") { - value = it - - when (selectedTabIndex) { + when (it) { getTabIndex("Search") -> { Column( modifier = Modifier diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/TypographyScreen.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/TypographyScreen.kt index 1a167353..d51883bc 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/TypographyScreen.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/TypographyScreen.kt @@ -8,13 +8,11 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.MaterialTheme import androidx.tv.material3.Text import com.google.tv.material.catalog.ExampleAction import com.google.tv.material.catalog.ExamplesScreenWithDottedBackground -@OptIn(ExperimentalTvMaterial3Api::class) @Composable fun TypographyScreen() { val actions = listOf( diff --git a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/WorkInProgressScreen.kt b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/WorkInProgressScreen.kt index 546d1012..5be61987 100644 --- a/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/WorkInProgressScreen.kt +++ b/TvMaterialCatalog/app/src/main/java/com/google/tv/material/catalog/screens/WorkInProgressScreen.kt @@ -7,10 +7,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import androidx.tv.material3.ExperimentalTvMaterial3Api import androidx.tv.material3.Text -@OptIn(ExperimentalTvMaterial3Api::class) @Composable fun WorkInProgressScreen() { Box(modifier = Modifier.fillMaxSize()) { diff --git a/TvMaterialCatalog/gradle/libs.versions.toml b/TvMaterialCatalog/gradle/libs.versions.toml index 9c94179f..39c04f75 100644 --- a/TvMaterialCatalog/gradle/libs.versions.toml +++ b/TvMaterialCatalog/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -agp = "8.3.1" +agp = "8.4.0" coil-compose = "2.5.0" kotlin = "1.9.0" core-ktx = "1.12.0" @@ -7,7 +7,7 @@ appcompat = "1.6.1" compose-bom = "2024.03.00" navigation-compose = "2.7.7" tv-foundation = "1.0.0-alpha10" -tv-material = "1.0.0-alpha10" +tv-material = "1.0.0-beta01" lifecycle-runtime-ktx = "2.7.0" activity-compose = "1.8.2" @@ -25,4 +25,3 @@ activity-compose = { group = "androidx.activity", name = "activity-compose", ver [plugins] androidApplication = { id = "com.android.application", version.ref = "agp" } kotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } - diff --git a/TvMaterialCatalog/gradle/wrapper/gradle-wrapper.properties b/TvMaterialCatalog/gradle/wrapper/gradle-wrapper.properties index 5b26786d..34e2261e 100644 --- a/TvMaterialCatalog/gradle/wrapper/gradle-wrapper.properties +++ b/TvMaterialCatalog/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue Dec 12 14:24:49 IST 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists