29. Dashboard layout + header - #516
Conversation
Replaces the placeholder home route with app/(tabs)/index.tsx: the dashboard shell, sticky top bar, and gold "VEIL" wordmark that data widgets (balance, assets, activity, etc.) will slot into in follow-up issues.
|
@ibochivincent-lang is attempting to deploy a commit to the miracle656's projects Team on Vercel. A member of the Team first needs to authorize it. |
|
@ibochivincent-lang 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! 🚀 |
Miracle656
left a comment
There was a problem hiding this comment.
First — you flagged in the test plan that you couldn't run the toolchain ("this sandbox has no Node.js installed at all") and asked for it to be run before merge. I ran it. Results:
$ git merge origin/main # clean, no conflicts
$ npm install # added 640 packages
$ npm run typecheck # tsc --noEmit
TYPECHECK_EXIT=0
Clean. Your manual import check held up — react-native-safe-area-context resolves, the expo-router imports are all present, and there's no implicit any. Saying plainly what you couldn't verify, instead of ticking the box, is the right call and I'd rather have that every time.
Scope is good too: header frame only, with balance card / asset list / quick actions / activity feed explicitly deferred to backlog #30–#34 rather than half-built here. SafeAreaProvider in the root layout is correct for the notch.
One blocker: route design collides with #507
#507 (navigation shell, Closes #434) is ahead of you in the queue and lands first, because it defines the route tree everything else drops into. The two of you have chosen incompatible layouts for the same URL.
#507:
// app/index.tsx
export default function Entry() {
return <Redirect href="/dashboard" />;
}
// dashboard lives at app/(tabs)/dashboard.tsxThis PR:
deletes app/index.tsx (0+/31-)
adds app/(tabs)/index.tsx ← serves "/" from inside the tab group
Both are legitimate expo-router idioms and neither is wrong in isolation. But #507's app/index.tsx is the entry point that will later branch between onboarding and the unlocked tab group once session logic exists (#520 is already building a welcome screen against it), so deleting it removes a hook other work is depending on.
Please rebase onto #507 once it lands and move your header into its app/(tabs)/dashboard.tsx, rather than introducing (tabs)/index.tsx. Concretely:
- Keep
app/index.tsxas #507's redirect — don't delete it. - Your sticky top bar, VEIL wordmark, and design tokens go into
(tabs)/dashboard.tsx, replacing theComingSoonBadgeplaceholder content that #507 puts there. - Keep your
SafeAreaProviderchange toapp/_layout.tsx— #507's root layout doesn't have it and it's needed. - Your README structure update will need a small adjustment to match.
That should be a small edit — the actual header component you wrote carries over unchanged.
I'll comment here when #507 is in. No need to do anything before then.
Nit
The README diff (5+/4-) describes the structure as you've built it; once you rebase onto #507's tree it'll need to match that instead. Easy to forget, so flagging now.
|
Thanks for this. Closing it — #457 has since been satisfied on The wordmark and shell already render. #507 landed <Text style={styles.logo}>VEIL</Text>
...
logo: { color: colors.gold, fontSize: 18, fontWeight: '900', letterSpacing: 2 },
The route would collide.
One thing worth carrying forward: this branch hardcodes The data widgets from backlog #30–#34 that sit inside this shell are still unclaimed, if you're looking for the natural follow-on work. |
Summary
frontend/mobile/app/(tabs)/index.tsxwith the shell, sticky top bar, and gold "VEIL" wordmark, ported from the top offrontend/wallet/app/dashboard/page.tsx's header region and matching the wallet's design tokens (--near-black,--gold,--off-white).SafeAreaProviderso the header respects the notch/status bar.app/index.tsx(superseded by the(tabs)group'sindex.tsxat the same/route) and updates the mobile README's structure section accordingly.closes #457
Test plan
any, all RN/expo-router imports exist inpackage.json).npm install && npm run typecheck/expo start— not run: this sandbox has no Node.js installed at all (not just a broken install), so I could not execute the toolchain. Please run these before merging.