Skip to content

feat(mobile): add the settings shell - #535

Merged
Miracle656 merged 4 commits into
Miracle656:mainfrom
Ipramking:feat/mobile-settings-shell
Jul 28, 2026
Merged

feat(mobile): add the settings shell#535
Miracle656 merged 4 commits into
Miracle656:mainfrom
Ipramking:feat/mobile-settings-shell

Conversation

@Ipramking

Copy link
Copy Markdown
Contributor

What

Establishes the settings screen structure at app/(tabs)/settings.tsx, ported from the web wallet's settings page (frontend/wallet/app/settings/page.tsx). This is the shell that later settings issues fill with real controls.

Screen

  • Grouped sections — configuration organised into Security (Passkeys, Guardian recovery, Paper backup, Security & lock), Preferences (Profile & AI, Agent settings, Privacy), and General (Address book, About). Each group is an Anton-capped header over a card of navigable rows (title + subtitle + chevron, hairline dividers).
  • Wallet card — a WALLET label over an AddressChip (reuses the 5. Shared UI primitives #433 primitive, tap-to-copy).
  • Navigation — selecting a row opens that section's detail with a back control, mirroring the web page's in-page section state. (Detail screens are placeholders — real controls arrive in the follow-up settings issues.) This avoids linking to routes that don't exist yet under typedRoutes.

Composes the shared primitives Screen, Card, AddressChip.

Acceptance

grouped settings sections render + navigate.

✅ Three grouped sections render; tapping any row navigates to its section detail and back.

Stacked on #532#531

Builds on the shared primitives (#433, PR #532) and typography (#432, PR #531). Until those merge the diff includes their commits — review the feat(mobile): add the settings shell commit for this issue. I'll rebase as they land.

Verification (local — no mobile CI job)

  • npm run typecheck ✅ · eslint app/(tabs)/settings.tsx

Closes #488

The mobile shell rendered everything in the system font. Load the four
brand typefaces at startup with useFonts and hold render behind the splash
screen so the UI never flashes a system font.

- theme/typography.ts: font assets + role→family map + role text styles,
  mirroring the web wallet (Lora 600 italic headings, Anton accent caps at
  0.08em, Inter body, Inconsolata addresses/hashes).
- app/_layout.tsx: preventAutoHideAsync + useFonts(fontAssets); render held
  until fonts resolve, then hideAsync.
- app/fonts.tsx: a /fonts specimen screen rendering all four roles.

Closes Miracle656#432
Build the reusable components every screen composes from, as native ports
of the web wallet's core CSS classes so feature screens don't re-implement
layout chrome.

- theme/colors.ts: native palette mirroring globals.css :root vars.
- components/ui/Screen.tsx (.wallet-shell shell + safe area), Card.tsx
  (.card/.card-md), Button.tsx (.btn-gold/.btn-ghost gold variants),
  AddressChip.tsx (.address-chip, Inconsolata + tap-to-copy via
  expo-clipboard), Highlight.tsx (.hl gold underlay).
- app/_layout.tsx: wrap in SafeAreaProvider (required by Screen).
- app/ui.tsx: /ui gallery rendering every primitive for side-by-side check.

Closes Miracle656#433
Establish the settings screen structure, ported from the web wallet's
settings page: configuration grouped into Security / Preferences / General
sections of navigable rows, plus a wallet-address card. Selecting a row
opens that section's detail (in-page navigation mirroring the web page's
section state); later settings issues fill each with real controls.
Composes the shared UI primitives (Screen, Card, AddressChip).

Closes Miracle656#488
@Ipramking
Ipramking requested a review from Miracle656 as a code owner July 28, 2026 13:10
@vercel

vercel Bot commented Jul 28, 2026

Copy link
Copy Markdown

@Ipramking is attempting to deploy a commit to the miracle656's projects Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Jul 28, 2026

Copy link
Copy Markdown

@Ipramking Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

…shell

# Conflicts:
#	frontend/mobile/app/_layout.tsx
#	frontend/mobile/package-lock.json
#	frontend/mobile/package.json
@Miracle656

Copy link
Copy Markdown
Owner

Thanks @Ipramking — settings shell built on the shared primitives from #433 and typography from #432, with a wallet card using the tap-to-copy AddressChip. Rounds out the Ipramking stack nicely. Closes #488.

@Miracle656
Miracle656 merged commit f8d1100 into Miracle656:main Jul 28, 2026
9 of 12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

60. Settings shell

3 participants