Build the shared building blocks for the unified bottom-nav UX across the
hub + 7 standalones. Phase A is groundwork only — no App.vue or Hub.vue
consumer is wired up yet, so this commit is purely additive.
New components in src/components/layout/:
- PreferencesRow.vue theme/language/currency triad (row + list layouts)
- ProfileSheetContent.vue identity card + back-to-hub + prefs + ProfileSettings
- ProfileSheetTrigger.vue bottom-row Profile button → opens sheet
- HubPill.vue fixed top-right back-to-hub link
- BottomNav.vue consumer tabs + appended Profile slot
- AppShell.vue outer wrapper composing the above
New composable: useCurrentUserAvatar — picture/displayName/fallbackInitial
from the auth user object.
i18n: new common.nav.* namespace in en/es/fr (typed via LocaleMessages).
Env: VITE_HUB_ROOT_URL added to .env.example with path/subdomain/local
guidance — consumed by HubPill and the back-to-hub sheet item.
Phase B (consumer refactor: chat/wallet/tasks first, then forum/libra/
market/activities, then hub) lands separately.