commit b7e969f64f8c015d42582619d367e638758c6ced
parent b6f028ef74091acc3e1938de4e6ec63f25c2033b
Author: Gabriel Luong <gabriel.luong@gmail.com>
Date: Thu, 20 Nov 2025 18:36:58 +0000
Bug 1998092 - Part 9: Extract a reusable Settings Section Header from DataChoicesScreen r=android-reviewers,007
- Extracts `TitleText` from `DataChoicesScreen` to become a reusable Section Header component that can be reused in other Settings Screen
- Figma: https://www.figma.com/design/ctk1Pw1TBxUwVgTTOvjHb4/2025-Android-Fundamentals?node-id=996-32991&m=dev
Differential Revision: https://phabricator.services.mozilla.com/D272176
Diffstat:
2 files changed, 61 insertions(+), 17 deletions(-)
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/compose/settings/SettingsSectionHeader.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/compose/settings/SettingsSectionHeader.kt
@@ -0,0 +1,51 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.mozilla.fenix.compose.settings
+
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.tooling.preview.PreviewLightDark
+import org.mozilla.fenix.theme.FirefoxTheme
+import org.mozilla.fenix.theme.Theme
+
+/**
+ * Settings section header.
+ *
+ * @param text The header string.
+ * @param modifier [Modifier] to be applied to the layout.
+ */
+@Composable
+fun SettingsSectionHeader(text: String, modifier: Modifier = Modifier) {
+ Text(
+ text = text,
+ style = FirefoxTheme.typography.headline8,
+ color = MaterialTheme.colorScheme.onSurfaceVariant,
+ modifier = modifier,
+ )
+}
+
+@Composable
+@PreviewLightDark
+private fun SettingsSectionHeaderPreview() {
+ FirefoxTheme {
+ Surface {
+ SettingsSectionHeader("Settings")
+ }
+ }
+}
+
+@Composable
+@Preview
+private fun SettingsSectionHeaderPrivatePreview() {
+ FirefoxTheme(theme = Theme.Private) {
+ Surface {
+ SettingsSectionHeader("Settings")
+ }
+ }
+}
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesScreen.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesScreen.kt
@@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.HorizontalDivider
-import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Switch
import androidx.compose.material3.SwitchDefaults
import androidx.compose.material3.Text
@@ -39,6 +38,7 @@ import org.mozilla.fenix.R
import org.mozilla.fenix.compose.LinkText
import org.mozilla.fenix.compose.LinkTextState
import org.mozilla.fenix.compose.list.RadioButtonListItem
+import org.mozilla.fenix.compose.settings.SettingsSectionHeader
import org.mozilla.fenix.theme.FirefoxTheme
/**
@@ -172,13 +172,13 @@ private fun CrashReportsSection(
selectedOption: CrashReportOption = CrashReportOption.Ask,
onOptionSelected: (CrashReportOption) -> Unit,
onLearnMoreClicked: () -> Unit,
- ) {
+) {
Column(
verticalArrangement = Arrangement.spacedBy(16.dp),
modifier = Modifier
.fillMaxWidth(),
) {
- TitleText(
+ SettingsSectionHeader(
text = stringResource(R.string.crash_reports_data_category),
modifier = Modifier
.padding(horizontal = 16.dp),
@@ -214,16 +214,6 @@ private fun CrashReportsSection(
}
@Composable
-private fun TitleText(text: String, modifier: Modifier) {
- Text(
- text = text,
- style = FirefoxTheme.typography.body2,
- color = MaterialTheme.colorScheme.tertiary,
- modifier = modifier,
- )
-}
-
-@Composable
private fun SectionBodyText(text: String, modifier: Modifier = Modifier) {
Text(
text = text,
@@ -261,7 +251,10 @@ private fun TogglePreferenceSection(
.fillMaxWidth()
.background(FirefoxTheme.colors.layer1),
) {
- TitleText(categoryTitle, Modifier.padding(horizontal = 16.dp))
+ SettingsSectionHeader(
+ text = categoryTitle,
+ modifier = Modifier.padding(horizontal = 16.dp),
+ )
// Section Body
Row(
@@ -329,9 +322,9 @@ private fun StudiesSection(
.fillMaxWidth()
.background(FirefoxTheme.colors.layer1),
) {
- TitleText(
- stringResource(R.string.studies_data_category),
- Modifier.padding(horizontal = 16.dp),
+ SettingsSectionHeader(
+ text = stringResource(R.string.studies_data_category),
+ modifier = Modifier.padding(horizontal = 16.dp),
)
Column(