Navegacion
La app Vivla utiliza Expo Router 6 con file-based routing y typed routes. Toda la estructura de navegacion se define a traves de la jerarquia de archivos en el directorioapp/.
Root Layout
El punto de entrada (app/_layout.tsx) configura un Stack Navigator envuelto en multiples providers, cada uno aportando una funcionalidad clave:
El componente raiz esta envuelto con
Sentry.wrap() para capturar errores automaticamente. Se
llama a SplashScreen.preventAutoHideAsync() al inicio y se oculta el splash screen cuando
appIsReady es true.Screens del Root Stack
Animation Presets
Los presets de animacion se definen ensrc/shared/constants/navigation.ts:
Tab Navigator
El Tab Navigator (app/(tabs)/_layout.tsx) define 5 tabs con iconos SVG custom:
01_home
Stack Navigator: index, gallery, amenities
02_book
Material Top Tabs: book-stays, exchange-stays, rent-stays
03_inbox
Stack Navigator: index, archived, search (badge de no leidos)
04_stays
Material Top Tabs: active, past, cancelled, pending
05_profile
Stack Navigator: index
Property Selection Gate
Navegacion basada en rol
- Property Owners
- Visitors / Guests
- 02_book: Material Top Tabs con book-stays, exchange-stays, rent-stays y un indicador de
llaves disponibles (
HeaderKeysIndicator) - 04_stays: Material Top Tabs con active, past, cancelled, pending yBookingToastProvider
Modal Stacks
Chat (app/chat/)
Stack con animacion slide_from_right:
Booking (app/booking/)
Usa Slot envuelto en BookingToastProvider:
Property (app/property/)
Invite (app/invite/)
Issues (app/issues/)
Stack con BackButton fijo, que contiene Material Top Tabs:
Arbol de Rutas Completo
Las rutas publicas (que no requieren autenticacion) estan definidas en
NAVIGATION_CONFIG.PUBLIC_GROUPS: (onboarding), (auth) e invite. El hook useNavigation
gestiona las redirecciones segun el estado de autenticacion.