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