diff --git a/core-ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NiaScreens.kt b/core-ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NiaScreens.kt
index 5906ddede..1a80ed22f 100644
--- a/core-ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NiaScreens.kt
+++ b/core-ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NiaScreens.kt
@@ -16,63 +16,18 @@
package com.google.samples.apps.nowinandroid.core.ui
-import androidx.annotation.StringRes
-import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.wrapContentSize
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.MoreVert
-import androidx.compose.material.icons.filled.Search
import androidx.compose.material.ripple.RippleAlpha
import androidx.compose.material.ripple.RippleTheme
import androidx.compose.material3.CircularProgressIndicator
-import androidx.compose.material3.Icon
-import androidx.compose.material3.IconButton
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.semantics
-import androidx.compose.ui.text.font.FontWeight
-
-@Composable
-fun NiaToolbar(
- modifier: Modifier = Modifier,
- @StringRes titleRes: Int,
- onSearchClick: () -> Unit = {},
- onMenuClick: () -> Unit = {},
-) {
- Row(
- horizontalArrangement = Arrangement.SpaceBetween,
- verticalAlignment = Alignment.CenterVertically,
- modifier = modifier.fillMaxWidth()
- ) {
- IconButton(onClick = { onSearchClick() }) {
- Icon(
- imageVector = Icons.Filled.Search,
- contentDescription = null
- )
- }
- Text(
- text = stringResource(id = titleRes),
- style = MaterialTheme.typography.titleLarge,
- fontWeight = FontWeight.Bold
- )
- IconButton(onClick = { onMenuClick() }) {
- Icon(
- imageVector = Icons.Filled.MoreVert,
- contentDescription = null
- )
- }
- }
-}
@Composable
fun NiaLoadingIndicator(
diff --git a/core-ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/component/TopAppBar.kt b/core-ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/component/TopAppBar.kt
new file mode 100644
index 000000000..5a0caa2d2
--- /dev/null
+++ b/core-ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/component/TopAppBar.kt
@@ -0,0 +1,80 @@
+/*
+ * 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
+ *
+ * https://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 com.google.samples.apps.nowinandroid.core.ui.component
+
+import androidx.annotation.StringRes
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.MoreVert
+import androidx.compose.material.icons.filled.Search
+import androidx.compose.material3.CenterAlignedTopAppBar
+import androidx.compose.material3.Icon
+import androidx.compose.material3.IconButton
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.vector.ImageVector
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.tooling.preview.Preview
+import com.google.samples.apps.nowinandroid.core.ui.R
+
+@Composable
+fun NiaTopAppBar(
+ @StringRes titleRes: Int,
+ navigationIcon: ImageVector,
+ navigationIconContentDescription: String?,
+ actionIcon: ImageVector,
+ actionIconContentDescription: String?,
+ modifier: Modifier = Modifier,
+ onNavigationClick: () -> Unit = {},
+ onActionClick: () -> Unit = {}
+) {
+ CenterAlignedTopAppBar(
+ title = { Text(text = stringResource(id = titleRes)) },
+ navigationIcon = {
+ IconButton(onClick = onNavigationClick) {
+ Icon(
+ imageVector = navigationIcon,
+ contentDescription = navigationIconContentDescription,
+ tint = MaterialTheme.colorScheme.onSurface
+ )
+ }
+ },
+ actions = {
+ IconButton(onClick = onActionClick) {
+ Icon(
+ imageVector = actionIcon,
+ contentDescription = actionIconContentDescription,
+ tint = MaterialTheme.colorScheme.onSurface
+ )
+ }
+ },
+ modifier = modifier
+ )
+}
+
+@Preview("Top App Bar")
+@Composable
+fun NiaTopAppBarPreview() {
+ NiaTopAppBar(
+ titleRes = R.string.top_app_bar_preview_title,
+ navigationIcon = Icons.Default.Search,
+ navigationIconContentDescription = "Navigation icon",
+ actionIcon = Icons.Default.MoreVert,
+ actionIconContentDescription = "Action icon"
+ )
+}
diff --git a/core-ui/src/main/res/values/strings.xml b/core-ui/src/main/res/values/strings.xml
index 46f144829..78412bb0a 100644
--- a/core-ui/src/main/res/values/strings.xml
+++ b/core-ui/src/main/res/values/strings.xml
@@ -19,4 +19,6 @@
Back
Open Resource Link
+
+ Title
diff --git a/feature-following/src/main/java/com/google/samples/apps/nowinandroid/feature/following/FollowingScreen.kt b/feature-following/src/main/java/com/google/samples/apps/nowinandroid/feature/following/FollowingScreen.kt
index 83ae7c4a1..349989dee 100644
--- a/feature-following/src/main/java/com/google/samples/apps/nowinandroid/feature/following/FollowingScreen.kt
+++ b/feature-following/src/main/java/com/google/samples/apps/nowinandroid/feature/following/FollowingScreen.kt
@@ -18,6 +18,9 @@ package com.google.samples.apps.nowinandroid.feature.following
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.MoreVert
+import androidx.compose.material.icons.filled.Search
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
@@ -28,9 +31,9 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import com.google.samples.apps.nowinandroid.core.ui.NiaLoadingIndicator
-import com.google.samples.apps.nowinandroid.core.ui.NiaToolbar
import com.google.samples.apps.nowinandroid.core.ui.component.NiaTab
import com.google.samples.apps.nowinandroid.core.ui.component.NiaTabRow
+import com.google.samples.apps.nowinandroid.core.ui.component.NiaTopAppBar
@Composable
fun InterestsRoute(
@@ -69,7 +72,17 @@ fun FollowingScreen(
modifier = modifier,
horizontalAlignment = Alignment.CenterHorizontally
) {
- NiaToolbar(titleRes = R.string.interests)
+ NiaTopAppBar(
+ titleRes = R.string.interests,
+ navigationIcon = Icons.Filled.Search,
+ navigationIconContentDescription = stringResource(
+ id = R.string.top_app_bar_navigation_button_content_desc
+ ),
+ actionIcon = Icons.Filled.MoreVert,
+ actionIconContentDescription = stringResource(
+ id = R.string.top_app_bar_navigation_button_content_desc
+ )
+ )
when (uiState) {
FollowingUiState.Loading ->
NiaLoadingIndicator(
diff --git a/feature-following/src/main/res/values/strings.xml b/feature-following/src/main/res/values/strings.xml
index 7b0d5ef1a..4ba1d1ecd 100644
--- a/feature-following/src/main/res/values/strings.xml
+++ b/feature-following/src/main/res/values/strings.xml
@@ -21,4 +21,6 @@
"No available data"
Follow interest button
Unfollow interest button
+ Menu
+ Search
diff --git a/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt b/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt
index 71d713ed4..398a628a6 100644
--- a/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt
+++ b/feature-foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt
@@ -33,6 +33,9 @@ import androidx.compose.foundation.lazy.grid.items
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.CornerSize
import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Search
+import androidx.compose.material.icons.outlined.AccountCircle
import androidx.compose.material3.Button
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
@@ -64,6 +67,7 @@ import com.google.samples.apps.nowinandroid.core.model.data.Topic
import com.google.samples.apps.nowinandroid.core.ui.NewsResourceCardExpanded
import com.google.samples.apps.nowinandroid.core.ui.NiaLoadingIndicator
import com.google.samples.apps.nowinandroid.core.ui.component.NiaToggleButton
+import com.google.samples.apps.nowinandroid.core.ui.component.NiaTopAppBar
import com.google.samples.apps.nowinandroid.core.ui.icon.NiaIcons
import com.google.samples.apps.nowinandroid.core.ui.theme.NiaTypography
import com.google.samples.apps.nowinandroid.feature.foryou.ForYouFeedUiState.PopulatedFeed
@@ -99,6 +103,19 @@ fun ForYouScreen(
LazyColumn(
modifier = modifier.fillMaxSize()
) {
+ item {
+ NiaTopAppBar(
+ titleRes = R.string.top_app_bar_title,
+ navigationIcon = Icons.Filled.Search,
+ navigationIconContentDescription = stringResource(
+ id = R.string.top_app_bar_navigation_button_content_desc
+ ),
+ actionIcon = Icons.Outlined.AccountCircle,
+ actionIconContentDescription = stringResource(
+ id = R.string.top_app_bar_navigation_button_content_desc
+ )
+ )
+ }
when (uiState) {
is ForYouFeedUiState.Loading -> {
item {
diff --git a/feature-foryou/src/main/res/values/strings.xml b/feature-foryou/src/main/res/values/strings.xml
index be136b32d..48c40620d 100644
--- a/feature-foryou/src/main/res/values/strings.xml
+++ b/feature-foryou/src/main/res/values/strings.xml
@@ -22,6 +22,9 @@
Navigate up
What are you interested in?
Updates from topics you follow will appear here. Follow some things to get started.
+ Now in Android
+ My account
+ Search
You are following