configure samples and refactor test-app for tv libraries

* Added samples app in tv/ . This will contain samples for both tv/foundation and tv/material

* Moved test app to tv/ because it references both tv-foundation and tv-material and as recommended, moved it to
a higher level

Test: Verified test-app on emulator and samples code shows up onHovering of Composable

Change-Id: Idd6e7867212ae2ab0e6565f9488e26965bb8ed79
diff --git a/docs-tip-of-tree/build.gradle b/docs-tip-of-tree/build.gradle
index 5336ce4..2e1c392 100644
--- a/docs-tip-of-tree/build.gradle
+++ b/docs-tip-of-tree/build.gradle
@@ -301,6 +301,7 @@
     docs(project(":transition:transition-ktx"))
     docs(project(":tv:tv-foundation"))
     docs(project(":tv:tv-material"))
+    samples(project(":tv:tv-samples"))
     docs(project(":tvprovider:tvprovider"))
     docs(project(":vectordrawable:vectordrawable"))
     docs(project(":vectordrawable:vectordrawable-animated"))
diff --git a/settings.gradle b/settings.gradle
index 2a444ec..efd31c8 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -886,7 +886,8 @@
 includeProject(":transition:transition-ktx", [BuildType.MAIN, BuildType.FLAN])
 includeProject(":tv:tv-foundation", [BuildType.COMPOSE])
 includeProject(":tv:tv-material", [BuildType.COMPOSE])
-includeProject(":tv:tv-material-samples", "tv/tv-material/samples", [BuildType.COMPOSE])
+includeProject(":tv:integration-tests:demos", [BuildType.COMPOSE])
+includeProject(":tv:tv-samples", "tv/samples", [BuildType.COMPOSE])
 includeProject(":tvprovider:tvprovider", [BuildType.MAIN])
 includeProject(":vectordrawable:integration-tests:testapp", [BuildType.MAIN])
 includeProject(":vectordrawable:vectordrawable", [BuildType.MAIN])
diff --git a/tv/tv-material/samples/build.gradle b/tv/integration-tests/demos/build.gradle
similarity index 85%
rename from tv/tv-material/samples/build.gradle
rename to tv/integration-tests/demos/build.gradle
index af6e84b..932571e 100644
--- a/tv/tv-material/samples/build.gradle
+++ b/tv/integration-tests/demos/build.gradle
@@ -24,23 +24,25 @@
 }
 
 dependencies {
-    implementation(project(":tv:tv-material"))
     implementation(libs.kotlinStdlib)
+
+    implementation("androidx.activity:activity-compose:1.6.1")
     implementation(project(":activity:activity"))
+
     implementation(project(":compose:material3:material3"))
     implementation(project(":navigation:navigation-runtime"))
-    implementation("androidx.activity:activity-compose:1.6.1")
+
     implementation(project(":tv:tv-foundation"))
+    implementation(project(":tv:tv-material"))
+
     implementation("androidx.appcompat:appcompat:1.6.0-alpha05")
-    compileOnly(project(':annotation:annotation-sampled'))
 }
 
 androidx {
-    name = "TV-Compose Samples"
+    name = "TV-Compose Test App"
     type = LibraryType.SAMPLES
-    mavenGroup = LibraryGroups.TV
     inceptionYear = "2022"
-    description = "Contains the sample code for the APIs in the androidx.tv:tv-material library"
+    description = "Test application for TV libraries"
 }
 
 android {
@@ -55,5 +57,5 @@
             proguardFiles getDefaultProguardFile('proguard-android.txt')
         }
     }
-    namespace "androidx.tv.tvmaterial.samples"
+    namespace "androidx.tv.integration.demos"
 }
\ No newline at end of file
diff --git a/tv/tv-material/samples/src/main/AndroidManifest.xml b/tv/integration-tests/demos/src/main/AndroidManifest.xml
similarity index 100%
rename from tv/tv-material/samples/src/main/AndroidManifest.xml
rename to tv/integration-tests/demos/src/main/AndroidManifest.xml
diff --git a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/App.kt b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/App.kt
similarity index 96%
rename from tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/App.kt
rename to tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/App.kt
index 1e448a1..7898201 100644
--- a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/App.kt
+++ b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/App.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.tv.tvmaterial.samples
+package androidx.tv.integration.demos
 
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Column
diff --git a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/FeaturedCarousel.kt b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/FeaturedCarousel.kt
similarity index 98%
rename from tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/FeaturedCarousel.kt
rename to tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/FeaturedCarousel.kt
index c5dfada..1d1113f 100644
--- a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/FeaturedCarousel.kt
+++ b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/FeaturedCarousel.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.tv.tvmaterial.samples
+package androidx.tv.integration.demos
 
 import androidx.compose.foundation.background
 import androidx.compose.foundation.border
diff --git a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/ImmersiveList.kt b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/ImmersiveList.kt
similarity index 98%
rename from tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/ImmersiveList.kt
rename to tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/ImmersiveList.kt
index cb4847f..29dfe8d 100644
--- a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/ImmersiveList.kt
+++ b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/ImmersiveList.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.tv.tvmaterial.samples
+package androidx.tv.integration.demos
 
 import androidx.compose.foundation.background
 import androidx.compose.foundation.border
diff --git a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/LazyRowsAndColumns.kt b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/LazyRowsAndColumns.kt
similarity index 97%
rename from tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/LazyRowsAndColumns.kt
rename to tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/LazyRowsAndColumns.kt
index f28379e..c6e9b1b 100644
--- a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/LazyRowsAndColumns.kt
+++ b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/LazyRowsAndColumns.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.tv.tvmaterial.samples
+package androidx.tv.integration.demos
 
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Arrangement
diff --git a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/MainActivity.kt b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/MainActivity.kt
similarity index 95%
rename from tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/MainActivity.kt
rename to tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/MainActivity.kt
index e8ebd3a..fd0f6da 100644
--- a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/MainActivity.kt
+++ b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/MainActivity.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.tv.tvmaterial.samples
+package androidx.tv.integration.demos
 
 import android.os.Bundle
 import androidx.activity.ComponentActivity
diff --git a/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/TopNavigation.kt b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/TopNavigation.kt
new file mode 100644
index 0000000..351d05a
--- /dev/null
+++ b/tv/integration-tests/demos/src/main/java/androidx/tv/integration/demos/TopNavigation.kt
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.tv.integration.demos
+
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.width
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import androidx.tv.material.LocalContentColor
+import androidx.tv.material.Tab
+import androidx.tv.material.TabRow
+import kotlinx.coroutines.delay
+
+enum class Navigation(val displayName: String, val action: @Composable () -> Unit) {
+  LazyRowsAndColumns("Lazy Rows and Columns", { LazyRowsAndColumns() }),
+  FeaturedCarousel("Featured Carousel", { FeaturedCarouselContent() }),
+  ImmersiveList("Immersive List", { SampleImmersiveList() }),
+}
+
+@Composable
+internal fun TopNavigation(
+  updateSelectedTab: (Navigation) -> Unit = {},
+) {
+  var selectedTabIndex by remember { mutableStateOf(0) }
+  val tabs = Navigation.values().map { it.displayName }
+
+  // Pill indicator
+  PillIndicatorTabRow(
+    tabs = tabs,
+    selectedTabIndex = selectedTabIndex,
+    updateSelectedTab = { selectedTabIndex = it }
+  )
+
+  LaunchedEffect(selectedTabIndex) {
+    // Only update the tab after 250 milliseconds to avoid loading intermediate tabs while
+    // fast scrolling in the TabRow
+    delay(250)
+    updateSelectedTab(Navigation.values()[selectedTabIndex])
+  }
+}
+
+/**
+ * Pill indicator tab row for reference
+ */
+@Composable
+fun PillIndicatorTabRow(
+  tabs: List<String>,
+  selectedTabIndex: Int,
+  updateSelectedTab: (Int) -> Unit
+) {
+  TabRow(
+    selectedTabIndex = selectedTabIndex,
+    separator = { Spacer(modifier = Modifier.width(12.dp)) },
+  ) {
+    tabs.forEachIndexed { index, tab ->
+      Tab(
+        selected = index == selectedTabIndex,
+        onFocus = { updateSelectedTab(index) },
+      ) {
+        Text(
+          text = tab,
+          fontSize = 12.sp,
+          color = LocalContentColor.current,
+          modifier = Modifier.padding(horizontal = 16.dp, vertical = 6.dp)
+        )
+      }
+    }
+  }
+}
diff --git a/tv/tv-material/samples/src/main/res/drawable/app_icon_your_company.png b/tv/integration-tests/demos/src/main/res/drawable/app_icon_your_company.png
similarity index 100%
rename from tv/tv-material/samples/src/main/res/drawable/app_icon_your_company.png
rename to tv/integration-tests/demos/src/main/res/drawable/app_icon_your_company.png
Binary files differ
diff --git a/tv/tv-material/samples/src/main/res/layout/activity_main.xml b/tv/integration-tests/demos/src/main/res/layout/activity_main.xml
similarity index 100%
rename from tv/tv-material/samples/src/main/res/layout/activity_main.xml
rename to tv/integration-tests/demos/src/main/res/layout/activity_main.xml
diff --git a/tv/tv-material/samples/src/main/res/mipmap-hdpi/ic_launcher.webp b/tv/integration-tests/demos/src/main/res/mipmap-hdpi/ic_launcher.webp
similarity index 100%
rename from tv/tv-material/samples/src/main/res/mipmap-hdpi/ic_launcher.webp
rename to tv/integration-tests/demos/src/main/res/mipmap-hdpi/ic_launcher.webp
Binary files differ
diff --git a/tv/tv-material/samples/src/main/res/mipmap-mdpi/ic_launcher.webp b/tv/integration-tests/demos/src/main/res/mipmap-mdpi/ic_launcher.webp
similarity index 100%
rename from tv/tv-material/samples/src/main/res/mipmap-mdpi/ic_launcher.webp
rename to tv/integration-tests/demos/src/main/res/mipmap-mdpi/ic_launcher.webp
Binary files differ
diff --git a/tv/tv-material/samples/src/main/res/mipmap-xhdpi/ic_launcher.webp b/tv/integration-tests/demos/src/main/res/mipmap-xhdpi/ic_launcher.webp
similarity index 100%
rename from tv/tv-material/samples/src/main/res/mipmap-xhdpi/ic_launcher.webp
rename to tv/integration-tests/demos/src/main/res/mipmap-xhdpi/ic_launcher.webp
Binary files differ
diff --git a/tv/tv-material/samples/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/tv/integration-tests/demos/src/main/res/mipmap-xxhdpi/ic_launcher.webp
similarity index 100%
rename from tv/tv-material/samples/src/main/res/mipmap-xxhdpi/ic_launcher.webp
rename to tv/integration-tests/demos/src/main/res/mipmap-xxhdpi/ic_launcher.webp
Binary files differ
diff --git a/tv/tv-material/samples/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/tv/integration-tests/demos/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
similarity index 100%
rename from tv/tv-material/samples/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
rename to tv/integration-tests/demos/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
Binary files differ
diff --git a/tv/tv-material/samples/src/main/res/values/colors.xml b/tv/integration-tests/demos/src/main/res/values/colors.xml
similarity index 100%
rename from tv/tv-material/samples/src/main/res/values/colors.xml
rename to tv/integration-tests/demos/src/main/res/values/colors.xml
diff --git a/tv/tv-material/samples/src/main/res/values/strings.xml b/tv/integration-tests/demos/src/main/res/values/strings.xml
similarity index 100%
rename from tv/tv-material/samples/src/main/res/values/strings.xml
rename to tv/integration-tests/demos/src/main/res/values/strings.xml
diff --git a/tv/tv-material/samples/src/main/res/values/themes.xml b/tv/integration-tests/demos/src/main/res/values/themes.xml
similarity index 100%
rename from tv/tv-material/samples/src/main/res/values/themes.xml
rename to tv/integration-tests/demos/src/main/res/values/themes.xml
diff --git a/tv/tv-material/samples/build.gradle b/tv/samples/build.gradle
similarity index 62%
copy from tv/tv-material/samples/build.gradle
copy to tv/samples/build.gradle
index af6e84b..dd420cc 100644
--- a/tv/tv-material/samples/build.gradle
+++ b/tv/samples/build.gradle
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 The Android Open Source Project
+ * Copyright 2022 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,46 +14,36 @@
  * limitations under the License.
  */
 
+
 import androidx.build.LibraryType
 
 plugins {
     id("AndroidXPlugin")
-    id("com.android.application")
+    id("com.android.library")
     id("AndroidXComposePlugin")
     id("org.jetbrains.kotlin.android")
 }
 
 dependencies {
-    implementation(project(":tv:tv-material"))
     implementation(libs.kotlinStdlib)
-    implementation(project(":activity:activity"))
-    implementation(project(":compose:material3:material3"))
-    implementation(project(":navigation:navigation-runtime"))
-    implementation("androidx.activity:activity-compose:1.6.1")
+
     implementation(project(":tv:tv-foundation"))
-    implementation("androidx.appcompat:appcompat:1.6.0-alpha05")
-    compileOnly(project(':annotation:annotation-sampled'))
+    implementation(project(":tv:tv-material"))
+    implementation(project(":compose:material3:material3"))
+    compileOnly(project(":annotation:annotation-sampled"))
 }
 
 androidx {
-    name = "TV-Compose Samples"
+    name = "Samples library for TV packages"
     type = LibraryType.SAMPLES
     mavenGroup = LibraryGroups.TV
     inceptionYear = "2022"
-    description = "Contains the sample code for the APIs in the androidx.tv:tv-material library"
+    description = "Contains the sample code for the APIs in the androidx.tv libraries"
 }
 
 android {
     defaultConfig {
         minSdkVersion 28
     }
-
-    buildTypes {
-        release {
-            minifyEnabled true
-            shrinkResources true
-            proguardFiles getDefaultProguardFile('proguard-android.txt')
-        }
-    }
-    namespace "androidx.tv.tvmaterial.samples"
-}
\ No newline at end of file
+    namespace "androidx.tv.samples"
+}
diff --git a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/TopNavigation.kt b/tv/samples/src/main/java/androidx/tv/samples/TabRowSamples.kt
similarity index 72%
rename from tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/TopNavigation.kt
rename to tv/samples/src/main/java/androidx/tv/samples/TabRowSamples.kt
index 36ee067..8b2fb6b 100644
--- a/tv/tv-material/samples/src/main/java/androidx/tv/tvmaterial/samples/TopNavigation.kt
+++ b/tv/samples/src/main/java/androidx/tv/samples/TabRowSamples.kt
@@ -14,8 +14,9 @@
  * limitations under the License.
  */
 
-package androidx.tv.tvmaterial.samples
+package androidx.tv.samples
 
+import androidx.annotation.Sampled
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Spacer
@@ -24,13 +25,11 @@
 import androidx.compose.foundation.layout.width
 import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Brush
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
@@ -39,45 +38,16 @@
 import androidx.tv.material.TabDefaults
 import androidx.tv.material.TabRow
 import androidx.tv.material.TabRowDefaults
-import kotlinx.coroutines.delay
-
-enum class Navigation(val displayName: String, val action: @Composable () -> Unit) {
-  LazyRowsAndColumns("Lazy Rows and Columns", { LazyRowsAndColumns() }),
-  FeaturedCarousel("Featured Carousel", { FeaturedCarouselContent() }),
-  ImmersiveList("Immersive List", { SampleImmersiveList() }),
-}
-
-@Composable
-internal fun TopNavigation(
-  updateSelectedTab: (Navigation) -> Unit = {},
-) {
-  var selectedTabIndex by remember { mutableStateOf(0) }
-  val tabs = Navigation.values().map { it.displayName }
-
-  // Pill indicator
-  PillIndicatorTabRow(
-    tabs = tabs,
-    selectedTabIndex = selectedTabIndex,
-    updateSelectedTab = { selectedTabIndex = it }
-  )
-
-  LaunchedEffect(selectedTabIndex) {
-    // Only update the tab after 250 milliseconds to avoid loading intermediate tabs while
-    // fast scrolling in the TabRow
-    delay(250)
-    updateSelectedTab(Navigation.values()[selectedTabIndex])
-  }
-}
 
 /**
  * Pill indicator tab row for reference
  */
 @Composable
-fun PillIndicatorTabRow(
-  tabs: List<String>,
-  selectedTabIndex: Int,
-  updateSelectedTab: (Int) -> Unit
-) {
+@Sampled
+fun PillIndicatorTabRow() {
+  val tabs = listOf("Tab 1", "Tab 2", "Tab 3")
+  var selectedTabIndex by remember { mutableStateOf(0) }
+
   TabRow(
     selectedTabIndex = selectedTabIndex,
     separator = { Spacer(modifier = Modifier.width(12.dp)) },
@@ -85,7 +55,7 @@
     tabs.forEachIndexed { index, tab ->
       Tab(
         selected = index == selectedTabIndex,
-        onFocus = { updateSelectedTab(index) },
+        onFocus = { selectedTabIndex = index },
       ) {
         Text(
           text = tab,
@@ -102,11 +72,11 @@
  * Underlined indicator tab row for reference
  */
 @Composable
-fun UnderlinedIndicatorTabRow(
-  tabs: List<String>,
-  selectedTabIndex: Int,
-  updateSelectedTab: (Int) -> Unit
-) {
+@Sampled
+fun UnderlinedIndicatorTabRow() {
+  val tabs = listOf("Tab 1", "Tab 2", "Tab 3")
+  var selectedTabIndex by remember { mutableStateOf(0) }
+
   TabRow(
     selectedTabIndex = selectedTabIndex,
     separator = { Spacer(modifier = Modifier.width(12.dp)) },
@@ -119,7 +89,7 @@
     tabs.forEachIndexed { index, tab ->
       Tab(
         selected = index == selectedTabIndex,
-        onFocus = { updateSelectedTab(index) },
+        onFocus = { selectedTabIndex = index },
         colors = TabDefaults.underlinedIndicatorTabColors(),
       ) {
         Text(
@@ -137,6 +107,7 @@
  * Tab changes onClick instead of onFocus
  */
 @Composable
+@Sampled
 fun OnClickNavigation() {
   val bgColors = listOf(
     Color(0x6a, 0x16, 0x16),
@@ -151,7 +122,7 @@
   Box(
     modifier = Modifier
       .fillMaxSize()
-      .background(Brush.verticalGradient(listOf(bgColors[activeTabIndex], Color.DarkGray)))
+      .background(bgColors[activeTabIndex])
   ) {
     TabRow(
       selectedTabIndex = focusedTabIndex,
@@ -172,9 +143,7 @@
       repeat(bgColors.size) {
         Tab(
           selected = activeTabIndex == it,
-          onFocus = {
-            focusedTabIndex = it
-          },
+          onFocus = { focusedTabIndex = it },
           onClick = {
             focusedTabIndex = it
             activeTabIndex = it
diff --git a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyDsl.kt b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyDsl.kt
index 6510890..e7949fe 100644
--- a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyDsl.kt
+++ b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyDsl.kt
@@ -80,8 +80,6 @@
      * Adds a sticky header item, which will remain pinned even when scrolling after it.
      * The header will remain pinned until the next header will take its place.
      *
-     * @sample androidx.compose.foundation.samples.StickyHeaderSample
-     *
      * @param key a stable and unique key representing the item. Using the same key
      * for multiple items in the list is not allowed. Type of the key should be saveable
      * via Bundle on Android. If null is passed the position in the list will represent the key.
diff --git a/tv/tv-material/build.gradle b/tv/tv-material/build.gradle
index 892bde3..2190bec 100644
--- a/tv/tv-material/build.gradle
+++ b/tv/tv-material/build.gradle
@@ -50,7 +50,7 @@
     androidTestImplementation(project(":compose:test-utils"))
     androidTestImplementation(libs.testRunner)
 
-    samples(projectOrArtifact(":tv:tv-material-samples"))
+    samples(project(":tv:tv-samples"))
 }
 
 android {
diff --git a/tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt b/tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt
index 9fb0765..8630320 100644
--- a/tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt
+++ b/tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt
@@ -64,6 +64,11 @@
  * tab. A TvTabRow places its tabs offset from the starting edge, and allows scrolling to tabs that
  * are placed off screen.
  *
+ * Examples:
+ * @sample androidx.tv.samples.PillIndicatorTabRow
+ * @sample androidx.tv.samples.UnderlinedIndicatorTabRow
+ * @sample androidx.tv.samples.OnClickNavigation
+ *
  * @param selectedTabIndex the index of the currently selected tab
  * @param modifier the [Modifier] to be applied to this tab row
  * @param containerColor the color used for the background of this tab row