Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ScrollableTabRow
import androidx.compose.material3.PrimaryScrollableTabRow
import androidx.compose.material3.Tab
import androidx.compose.material3.TabPosition
import androidx.compose.material3.TabRowDefaults.tabIndicatorOffset
Expand All @@ -46,14 +46,14 @@ enum class SleepTab(val title: Int) {

@Composable
fun JetLaggedHeaderTabs(onTabSelected: (SleepTab) -> Unit, selectedTab: SleepTab, modifier: Modifier = Modifier) {
ScrollableTabRow(
PrimaryScrollableTabRow(
modifier = modifier,
edgePadding = 12.dp,
selectedTabIndex = selectedTab.ordinal,
indicator = { tabPositions: List<TabPosition> ->
indicator = {
Box(
Modifier
.tabIndicatorOffset(tabPositions[selectedTab.ordinal])
.tabIndicatorOffset(selectedTab.ordinal, matchContentSize = true)
.fillMaxSize()
.padding(horizontal = 2.dp)
.border(
Expand Down
4 changes: 2 additions & 2 deletions JetLagged/gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
accompanist = "0.37.3"
android-material3 = "1.14.0-alpha09"
androidGradlePlugin = "9.0.1"
androidx-activity-compose = "1.12.4"
androidx-activity-compose = "1.13.0"
androidx-appcompat = "1.7.1"
androidx-compose-bom = "2026.02.00"
androidx-compose-bom = "2026.03.00"
androidx-constraintlayout = "1.1.1"
androidx-core-splashscreen = "1.2.0"
androidx-corektx = "1.17.0"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,13 @@ import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.PrimaryScrollableTabRow
import androidx.compose.material3.PrimaryTabRow
import androidx.compose.material3.Scaffold
import androidx.compose.material3.ScrollableTabRow
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Surface
import androidx.compose.material3.Tab
import androidx.compose.material3.TabRow
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
Expand Down Expand Up @@ -356,7 +356,7 @@ private fun InterestsTabRow(
) {
when (isExpandedScreen) {
false -> {
TabRow(
PrimaryTabRow(
selectedTabIndex = selectedTabIndex,
contentColor = MaterialTheme.colorScheme.primary,
) {
Expand All @@ -365,7 +365,7 @@ private fun InterestsTabRow(
}

true -> {
ScrollableTabRow(
PrimaryScrollableTabRow(
selectedTabIndex = selectedTabIndex,
contentColor = MaterialTheme.colorScheme.primary,
edgePadding = 0.dp,
Expand Down
4 changes: 2 additions & 2 deletions JetNews/gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
accompanist = "0.37.3"
android-material3 = "1.14.0-alpha09"
androidGradlePlugin = "9.0.1"
androidx-activity-compose = "1.12.4"
androidx-activity-compose = "1.13.0"
androidx-appcompat = "1.7.1"
androidx-compose-bom = "2026.02.00"
androidx-compose-bom = "2026.03.00"
androidx-constraintlayout = "1.1.1"
androidx-core-splashscreen = "1.2.0"
androidx-corektx = "1.17.0"
Expand Down
14 changes: 7 additions & 7 deletions Jetcaster/gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@
accompanist = "0.37.3"
android-material3 = "1.13.0-alpha13"
androidGradlePlugin = "8.10.1"
androidx-activity-compose = "1.10.1"
androidx-activity-compose = "1.13.0"
androidx-appcompat = "1.7.1"
androidx-compose-bom = "2025.09.00"
androidx-compose-bom = "2026.03.00"
androidx-constraintlayout = "1.1.1"
androidx-core-splashscreen = "1.0.1"
androidx-corektx = "1.16.0"
androidx-glance = "1.1.1"
androidx-lifecycle = "2.8.2"
androidx-lifecycle-compose = "2.9.1"
androidx-lifecycle-runtime-compose = "2.9.1"
androidx-navigation = "2.9.0"
androidx-lifecycle-compose = "2.10.0"
androidx-lifecycle-runtime-compose = "2.10.0"
androidx-navigation = "2.9.7"
androidx-palette = "1.0.0"
androidx-test = "1.6.1"
androidx-test-espresso = "3.6.1"
Expand All @@ -25,9 +25,9 @@ androidx-test-ext-truth = "1.6.0"
androidx-tv-foundation = "1.0.0-alpha12"
androidx-tv-material = "1.0.0"
androidx-wear-compose-material3 = "1.5.1"
androidx-wear-compose = "1.5.0"
androidx-wear-compose = "1.5.6"
androidx-window = "1.4.0"
androidxHiltNavigationCompose = "1.2.0"
androidxHiltNavigationCompose = "1.3.0"
androix-test-uiautomator = "2.3.0"
coil = "2.7.0"
# @keep
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,9 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.window.core.layout.WindowSizeClass
import androidx.window.core.layout.WindowWidthSizeClass
import com.example.jetcaster.R
import com.example.jetcaster.core.domain.testing.PreviewCategories
import com.example.jetcaster.core.domain.testing.PreviewPodcastEpisodes
Expand Down Expand Up @@ -141,21 +140,12 @@ fun calculateScaffoldDirective(
maxHorizontalPartitions = 1
verticalSpacerSize = 0.dp
} else {
when (windowAdaptiveInfo.windowSizeClass.windowWidthSizeClass) {
WindowWidthSizeClass.COMPACT -> {
maxHorizontalPartitions = 1
verticalSpacerSize = 0.dp
}

WindowWidthSizeClass.MEDIUM -> {
maxHorizontalPartitions = 1
verticalSpacerSize = 0.dp
}

else -> {
maxHorizontalPartitions = 2
verticalSpacerSize = 24.dp
}
if (windowAdaptiveInfo.windowSizeClass.isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_EXPANDED_LOWER_BOUND)) {
maxHorizontalPartitions = 2
verticalSpacerSize = 24.dp
} else {
maxHorizontalPartitions = 1
verticalSpacerSize = 0.dp
}
}
val maxVerticalPartitions: Int
Expand Down Expand Up @@ -261,7 +251,7 @@ private fun HomeScreenReady(
directive = navigator.scaffoldDirective,
mainPane = {
HomeScreen(
windowSizeClass = windowSizeClass,
isHomeAppBarExpanded = windowSizeClass.isCompact,
isLoading = uiState.isLoading,
featuredPodcasts = uiState.featuredPodcasts,
homeCategories = uiState.homeCategories,
Expand Down Expand Up @@ -371,7 +361,7 @@ private fun HomeScreenBackground(modifier: Modifier = Modifier, content: @Compos

@Composable
private fun HomeScreen(
windowSizeClass: WindowSizeClass,
isHomeAppBarExpanded: Boolean,
isLoading: Boolean,
featuredPodcasts: ImmutableList<PodcastInfo>,
selectedHomeCategory: HomeCategory,
Expand Down Expand Up @@ -400,7 +390,7 @@ private fun HomeScreen(
topBar = {
Column {
HomeAppBar(
isExpanded = windowSizeClass.isCompact,
isExpanded = isHomeAppBarExpanded,
modifier = Modifier.fillMaxWidth(),
)
if (isLoading) {
Expand Down Expand Up @@ -758,14 +748,12 @@ private fun HomeAppBarPreview() {
}
}

private val CompactWindowSizeClass = WindowSizeClass.compute(360f, 780f)

@DevicePreviews
@Composable
private fun PreviewHome() {
JetcasterTheme {
HomeScreen(
windowSizeClass = CompactWindowSizeClass,
isHomeAppBarExpanded = true,
isLoading = true,
featuredPodcasts = PreviewPodcasts.toImmutableList(),
homeCategories = HomeCategory.entries,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,9 @@ import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.window.core.layout.WindowSizeClass
import androidx.window.core.layout.WindowWidthSizeClass
import androidx.window.core.layout.computeWindowSizeClass
import androidx.window.layout.DisplayFeature
import androidx.window.layout.FoldingFeature
import com.example.jetcaster.R
Expand Down Expand Up @@ -256,7 +256,7 @@ fun PlayerContent(
// Use a two pane layout if there is a fold impacting layout (meaning it is separating
// or non-flat) or if we have a large enough width to show both.
if (
windowSizeClass.windowWidthSizeClass == WindowWidthSizeClass.EXPANDED ||
windowSizeClass.isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_EXPANDED_LOWER_BOUND) ||
isBookPosture(foldingFeature) ||
isTableTopPosture(foldingFeature) ||
isSeparatingPosture(foldingFeature)
Expand Down Expand Up @@ -926,7 +926,7 @@ fun PlayerScreenPreview() {
),
),
displayFeatures = emptyList(),
windowSizeClass = WindowSizeClass.compute(maxWidth.value, maxHeight.value),
windowSizeClass = WindowSizeClass.BREAKPOINTS_V1.computeWindowSizeClass(maxWidth.value, maxHeight.value),
onBackPress = { },
onAddToQueue = {},
onStop = {},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,11 @@

package com.example.jetcaster.util

import androidx.window.core.layout.WindowHeightSizeClass
import androidx.window.core.layout.WindowSizeClass
import androidx.window.core.layout.WindowWidthSizeClass

/**
* Returns true if the width or height size classes are compact.
*/
val WindowSizeClass.isCompact: Boolean
get() = windowWidthSizeClass == WindowWidthSizeClass.COMPACT ||
windowHeightSizeClass == WindowHeightSizeClass.COMPACT
get() = !isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND) ||
!isHeightAtLeastBreakpoint(WindowSizeClass.HEIGHT_DP_MEDIUM_LOWER_BOUND)
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ private fun GlobalNavigationContainer(
modifier = Modifier
.padding(JetcasterAppDefaults.overScanMargin.drawer.intoPaddingValues())
.focusProperties {
enter = {
onEnter = {
when (currentRoute) {
Screen.Discover.route -> discover
Screen.Library.route -> library
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,11 +154,11 @@ private fun PodcastRow(
modifier = modifier
.focusRequester(focusRequester)
.focusProperties {
exit = {
onExit = {
focusRequester.saveFocusedChild()
FocusRequester.Default
}
enter = {
onEnter = {
if (focusRequester.restoreFocusedChild()) {
FocusRequester.Cancel
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,14 @@ internal fun EpisodeRow(
modifier = Modifier
.focusRequester(focusRequester)
.focusProperties {
enter = {
onEnter = {
when {
lazyListState.layoutInfo.visibleItemsInfo.isEmpty() -> FocusRequester.Cancel
isSameList && focusRequester.restoreFocusedChild() -> FocusRequester.Cancel
else -> firstItem
}
}
exit = {
onExit = {
previousEpisodeListHash = playerEpisodeList.hashCode()
focusRequester.saveFocusedChild()
FocusRequester.Default
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusProperties
import androidx.compose.ui.focus.focusRequester
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.tv.material3.Tab
import androidx.tv.material3.TabRow
import androidx.tv.material3.Text
Expand Down Expand Up @@ -120,7 +120,7 @@ private fun CatalogWithCategorySelection(
TabRow(
selectedTabIndex = selectedTabIndex,
modifier = Modifier.focusProperties {
enter = {
onEnter = {
selectedTab
}
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextOverflow
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Text
import com.example.jetcaster.core.player.model.PlayerEpisode
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.focus.focusRestorer
import androidx.compose.ui.res.stringResource
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.tv.material3.Button
import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Text
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.media3.common.C
import androidx.media3.common.MediaItem
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.tv.material3.ButtonDefaults
import androidx.tv.material3.MaterialTheme
import androidx.tv.material3.Text
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.tv.material3.ExperimentalTvMaterial3Api
import androidx.tv.material3.FilterChip
import androidx.tv.material3.Icon
Expand Down
2 changes: 1 addition & 1 deletion Jetcaster/wear/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ plugins {
}

android {
compileSdk 35
compileSdk 36

namespace "com.example.jetcaster"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.wear.compose.foundation.lazy.TransformingLazyColumn
import androidx.wear.compose.foundation.lazy.TransformingLazyColumnScope
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.wear.compose.foundation.lazy.TransformingLazyColumn
import androidx.wear.compose.foundation.lazy.TransformingLazyColumnState
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.wear.compose.foundation.lazy.TransformingLazyColumn
import androidx.wear.compose.foundation.lazy.TransformingLazyColumnState
import androidx.wear.compose.foundation.lazy.items
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.media3.common.C
import androidx.media3.common.MediaItem
Expand Down
Loading
Loading