diff --git a/android/src/main/java/com/tailscale/ipn/ui/theme/Theme.kt b/android/src/main/java/com/tailscale/ipn/ui/theme/Theme.kt
index 9f8daa0..519b81d 100644
--- a/android/src/main/java/com/tailscale/ipn/ui/theme/Theme.kt
+++ b/android/src/main/java/com/tailscale/ipn/ui/theme/Theme.kt
@@ -123,6 +123,9 @@ val ColorScheme.on: Color
val ColorScheme.off: Color
get() = Color(0xFFD9D6D5) // gray-300
+val ColorScheme.link: Color
+ get() = onPrimaryContainer
+
/**
* Main color scheme for list items, uses onPrimaryContainer color for leading and trailing icons.
*/
diff --git a/android/src/main/java/com/tailscale/ipn/ui/view/AboutView.kt b/android/src/main/java/com/tailscale/ipn/ui/view/AboutView.kt
index bbbfc85..92097d2 100644
--- a/android/src/main/java/com/tailscale/ipn/ui/view/AboutView.kt
+++ b/android/src/main/java/com/tailscale/ipn/ui/view/AboutView.kt
@@ -47,6 +47,7 @@ fun AboutView(nav: BackNavigation) {
.padding(15.dp),
painter = painterResource(id = R.drawable.ic_tile),
contentDescription = stringResource(R.string.app_icon_content_description))
+
Column(
verticalArrangement =
Arrangement.spacedBy(space = 2.dp, alignment = Alignment.CenterVertically),
@@ -56,18 +57,16 @@ fun AboutView(nav: BackNavigation) {
fontWeight = FontWeight.SemiBold,
fontSize = MaterialTheme.typography.titleLarge.fontSize)
Text(
- text = BuildConfig.VERSION_NAME,
+ text = "${stringResource(R.string.version)} ${BuildConfig.VERSION_NAME}",
fontWeight = MaterialTheme.typography.bodyMedium.fontWeight,
fontSize = MaterialTheme.typography.bodyMedium.fontSize)
}
- Column(
- verticalArrangement =
- Arrangement.spacedBy(space = 4.dp, alignment = Alignment.CenterVertically),
- horizontalAlignment = Alignment.CenterHorizontally) {
- OpenURLButton(stringResource(R.string.acknowledgements), Links.LICENSES_URL)
- OpenURLButton(stringResource(R.string.privacy_policy), Links.PRIVACY_POLICY_URL)
- OpenURLButton(stringResource(R.string.terms_of_service), Links.TERMS_URL)
- }
+
+ Column(horizontalAlignment = Alignment.CenterHorizontally) {
+ OpenURLButton(stringResource(R.string.acknowledgements), Links.LICENSES_URL)
+ OpenURLButton(stringResource(R.string.privacy_policy), Links.PRIVACY_POLICY_URL)
+ OpenURLButton(stringResource(R.string.terms_of_service), Links.TERMS_URL)
+ }
Text(
stringResource(R.string.about_view_footnotes),
diff --git a/android/src/main/java/com/tailscale/ipn/ui/view/Buttons.kt b/android/src/main/java/com/tailscale/ipn/ui/view/Buttons.kt
index 9891912..1b80163 100644
--- a/android/src/main/java/com/tailscale/ipn/ui/view/Buttons.kt
+++ b/android/src/main/java/com/tailscale/ipn/ui/view/Buttons.kt
@@ -13,12 +13,16 @@ import androidx.compose.material.icons.outlined.Close
import androidx.compose.material3.Button
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
+import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
+import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.platform.LocalUriHandler
+import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.unit.dp
+import com.tailscale.ipn.ui.theme.link
@Composable
fun PrimaryActionButton(onClick: () -> Unit, content: @Composable RowScope.() -> Unit) {
@@ -33,10 +37,14 @@ fun PrimaryActionButton(onClick: () -> Unit, content: @Composable RowScope.() ->
fun OpenURLButton(title: String, url: String) {
val handler = LocalUriHandler.current
- Button(
- onClick = { handler.openUri(url) },
- content = { Text(title) },
- )
+ TextButton(onClick = { handler.openUri(url) }) {
+ Text(
+ title,
+ style = MaterialTheme.typography.bodyMedium,
+ color = MaterialTheme.colorScheme.link,
+ textDecoration = TextDecoration.Underline,
+ )
+ }
}
@Composable
diff --git a/android/src/main/java/com/tailscale/ipn/ui/view/SettingsView.kt b/android/src/main/java/com/tailscale/ipn/ui/view/SettingsView.kt
index 47760a2..fa9b610 100644
--- a/android/src/main/java/com/tailscale/ipn/ui/view/SettingsView.kt
+++ b/android/src/main/java/com/tailscale/ipn/ui/view/SettingsView.kt
@@ -26,6 +26,7 @@ import androidx.lifecycle.viewmodel.compose.viewModel
import com.tailscale.ipn.BuildConfig
import com.tailscale.ipn.R
import com.tailscale.ipn.ui.Links
+import com.tailscale.ipn.ui.theme.link
import com.tailscale.ipn.ui.theme.listItem
import com.tailscale.ipn.ui.util.Lists
import com.tailscale.ipn.ui.viewModel.Setting
@@ -156,7 +157,7 @@ fun AdminTextView(onNavigateToAdminConsole: () -> Unit) {
withStyle(
style =
SpanStyle(
- color = MaterialTheme.colorScheme.onPrimaryContainer,
+ color = MaterialTheme.colorScheme.link,
textDecoration = TextDecoration.Underline)) {
append(stringResource(id = R.string.settings_admin_link))
}
diff --git a/android/src/main/res/values/strings.xml b/android/src/main/res/values/strings.xml
index b2e76e0..ac16a91 100644
--- a/android/src/main/res/values/strings.xml
+++ b/android/src/main/res/values/strings.xml
@@ -20,6 +20,7 @@
Tailscale
Tailscale
+ Version
Tailscale for Android
Acknowledgements
Privacy Policy