Brand and design · Hi-fi screens · Hi-fi screens
Hi-fi: S27 Profile · Settings
Contract, a board per state (default, language, delete-data-confirm, delete-account-confirm, loading, empty, error, offline), tokens and strings.
Generated by
botgumi-design indexfrom../../screens.json. Edit that file, not this page.
Stage: hifi · Key: profile/settings · Data-binding map: bindings.md
Drawn in the gallery: Profile. Each board is the committed HTML in screens/, drawn on the example data in docs/api/examples/.
Contract
- default: App language, practice languages, reminders, retention 7/30/365, privacy, delete data/account, subscription.
- language: UI language (follow device or override → settings.ui_locale; drives Accept-Language) is separate from practice languages (settings.practice_languages, first = primary).
- delete-data-confirm: Destructive confirm with exact consequences (counts from me.stats).
- delete-account-confirm: Warns that the App Store subscription is not cancelled automatically.
Flows: F8 Delete training data / account, F9 Change UI language / practice languages.
Reads and calls:
GET /v1/mePATCH /v1/me {settings}GET /v1/config → supported_ui_locales / supported_practice_languagesPATCH /v1/me {settings.ui_locale, settings.practice_languages}DELETE /v1/me/training-data → 202 {job_id, purge_backups_by}DELETE /v1/me → 204
Local state:
- none
Boards
One row per state. A state without boards of its own says what shows it.
| State | Board | Example data |
|---|---|---|
| default | zh-Hans · en | me.json (zh-Hans · en) |
| language | zh-Hans · en | me.json (zh-Hans · en) |
| delete-data-confirm | zh-Hans · en | me.json (zh-Hans · en) |
| delete-account-confirm | zh-Hans · en | me.json (zh-Hans · en) |
| loading | no board of its own: From states.md (Settings): toggles disabled until /me |
|
| empty | no board of its own: From states.md (Settings): — | |
| error | no board of its own: From states.md (Settings): PATCH failed → revert toggle + toast · fatal: — | |
| offline | no board of its own: From states.md (Settings): changes queued; retention / delete disabled offline |
The boards
Each state as drawn (393 × 852), one board per locale. Open a board on its own for its spec panel.
default
language
delete-data-confirm
delete-account-confirm
Tokens used
By path in ../../system/tokens.source.json.
| Token | Where |
|---|---|
color.bgCanvas |
.device, .navbar, .screen |
color.bgInverse |
.tag--ink |
color.bgInverseRaised |
.icon-btn |
color.bgScrim |
.scrim |
color.bgSunken |
.icon-btn, .segmented, .tag |
color.bgSurface |
.alert, .list, .segmented |
color.lineHairline |
.list-row |
color.lineStrong |
.alert, .alert-btn, .toggle |
color.statusDanger |
.alert, .alert-btn, .c-danger, .destructive |
color.statusSuccess |
.toggle, inline |
color.textOnInverse |
.icon-btn, .tag--ink |
color.textPrimary |
.device, .home-indicator, .icon-btn, .segmented … |
color.textSecondary |
.segmented, .tag |
color.textTertiary |
.c-tertiary, .chev, .list-row |
radius.md |
.list |
radius.xs |
.tag |
space.gutter |
.group-label, .navbar, .pad |
space.s2 |
.group-label |
space.s6 |
.group-label, .screen |
space.safeBottom |
.screen |
space.safeTop |
.device, .screen |
space.sizeCtaHeight |
.screen |
space.sizeHitMin |
.icon-btn |
space.sizeNavbarHeight |
.navbar |
space.sizeTabbarHeight |
.screen |
typography.callout |
.t-callout |
typography.caption1 |
.t-caption |
typography.footnote |
.t-footnote |
typography.headline |
.t-headline |
typography.subheadline |
.t-subhead |
Strings
app.name, common.back, common.cancel, common.points, delete_account.confirm, delete_account.manage, delete_account.title, delete_data.confirm, delete_data.title, delete_session.confirm, feedback.confidence.low, growth.ability.delta, home.greeting.format, lang.en, lang.follow_system, lang.zh-Hans, notif.daily.title, onboarding.commitment.reminder.a11y, paywall.calendar.rest, paywall.k.value, paywall.per.year, paywall.privacy, paywall.projection.score, paywall.restore, privacy.nav, profile.account.title, profile.privacy, profile.reminder, profile.settings, profile.settings.a11y, record.indicator.recording, record.leave.stay, settings.delete_account, settings.delete_data, settings.language.add_note, settings.language.primary, settings.manage_sub, settings.nav, settings.practice_languages, settings.practice_languages.note, settings.reminder_time, settings.reminders, settings.restore, settings.retention, settings.retention.30, settings.retention.365, settings.retention.7, settings.retention.note, settings.section.account, settings.section.data, settings.section.language, settings.section.reminders, settings.streak_alert, settings.streak_alert.note, settings.ui_language, settings.ui_language.value, settings.version, tab.library
Notes for the app tracks
Motion, haptics, Dynamic Type and VoiceOver: engagement.md, tokens.md §6–7 and
ios-handoff.md. Open a board with ?theme=dark&dt=1.35&binds=1 to see dark mode, the largest
tested type size and every bound element.
Tracking-plan events: no tracking plan page exists yet; ADR-001 D12 names the events.
Tokens with no group in system/tokens.source.json yet (they stay in tokens.css): --dt, --elevation-1, --elevation-3, --font-family-text, --font-weight-medium, --font-weight-regular, --font-weight-semibold, --motion-duration-base, --motion-duration-fast, --motion-ease-spring, --motion-ease-standard.