Settings Screen

SettingsScreen — a grouped settings screen with theme picker, account actions, privacy toggles, language, and an About section. Composed from the settings row components. Also includes the Play-mandatory delete account flow.

📱Settings — lightlight/docs/screens/settings-light.png
📱Settings — darkdark/docs/screens/settings-dark.png

feature/settings/SettingsScreen.kt

Built from settings rows

The screen is assembled from reusable rows in …designsystem.settings — reuse them to add your own sections:

SettingsSection(title = "Preferences") {
    ToggleRow(title = "Analytics", checked = analytics, onCheckedChange = ::setAnalytics)
    NavRow(title = "Language", value = currentLocale, onClick = ::pickLanguage)
}

SettingsSection(title = "Account") {
    AccountRow(name = user.name, email = user.email, onClick = ::openProfile)
    DangerRow(title = "Delete account", onClick = ::confirmDelete)
}

LegalLinks(onPrivacy = ::openPrivacy, onTerms = ::openTerms)

Available rows — SettingsSection, ToggleRow, NavRow, AccountRow, DangerRow, LegalLinks, SettingsDivider.

Features

  • Theme picker (light / dark / system) via a bottom sheet
  • Account section gated by AUTH_ENABLED — no sign-out/delete on a no-login app
  • Delete account + data — removes the auth account, DataStore, and Room (Play-mandatory)
  • Language row auto-hides when the app ships a single locale
  • Rate opens your Play listing; Privacy / Terms open in Custom Tabs
  • About → What's new (Changelog) + Open-source licenses

Notes

Legal links read KitConfig.PRIVACY_URL / TERMS_URL. Generate the privacy policy itself with /kit-generate-legal. The licenses list is powered by AboutLibraries (scans your full dependency tree at build time).

Deep dive: Features · privacy: /kit-generate-legal