πŸ“¦ Component Inventory

Componentes Mobile

Inventario completo de todos los componentes UI necesarios para el alcance completo del app β€” clasificados por fase de implementaciΓ³n y estado actual.

9
Implementados βœ“
19
P1–P3 pendientes
4
P4 Β· Gmail
3
P5 Β· Native
2
P6 Β· Offline
37
Total componentes
Implementado
P1 Β· Foundation
P2 Β· Budgets
P3 Β· Transactions
P4 Β· Gmail
P5 Β· Push & Native
P6 Β· Polish & Offline
βœ“ Implementado
Design System β€” Primitivos
9 componentes
Todos los primitivos estΓ‘n completos y funcionando con soporte light/dark mode via useTheme(). Son la base sobre la que se construyen todos los componentes de negocio.
Text
βœ“ Done
10 variantes tipogrΓ‘ficas (display, headline, title, subtitle, body, bodyMedium, small, caption, label, mono). Soporte de color semΓ‘ntico.
variantsΓ—10color props
Button
βœ“ Done
5 variantes (primary, secondary, outline, ghost, destructive) Γ— 3 tamaΓ±os. Estado loading con spinner.
variantsΓ—5sizesΓ—3loading
Card
βœ“ Done
4 variantes (default, elevated, outlined, flat). Base de contenedor reutilizable.
variantsΓ—4
Input
βœ“ Done
Campo de texto con label, placeholder, mensaje de error, helper text, Γ­conos left/right.
labelerroricons
Badge
βœ“ Done
6 variantes (primary, success, warning, error, info, neutral) Γ— 2 tamaΓ±os.
variantsΓ—6sizesΓ—2
Divider
βœ“ Done
Separador horizontal con variante labeled (texto centrado).
plainlabeled
Skeleton
βœ“ Done
Placeholder animado (shimmer) para estados de carga. Configurable en ancho/alto.
shimmerconfigurable
TransactionCard
βœ“ Done
Tarjeta de transacciΓ³n con estado categorizado y pendiente. Swipe-to-reveal con acciones Edit/Delete via Feather icons. 18 category color mappings.
swipepending statedark modees-DO format
β†— Basado en: TransactionList.tsx
BudgetCard
βœ“ Done
Tarjeta de presupuesto con 3 estados (normal/warning/exceeded), barra de progreso, y panel expansible con ΓΊltimas 3 transacciones + "Ver todas" CTA.
expand/collapse3 statesmini-transactions
β†— Basado en: BudgetCard.tsx
P1 Β· Foundation
Auth + Dashboard
8 componentes
LoginForm
P1 Β· Pendiente
Email + password con validaciΓ³n Zod. Manejo de errores de servidor (credenciales incorrectas). Link a registro y forgot password.
react-hook-formzodJWT
β†— Web: Auth.tsx
RegisterForm
P1 Β· Pendiente
Email ΓΊnico + password + confirm password. ValidaciΓ³n de requisitos de seguridad. Redirect al dashboard al completar.
validationunique email
β†— Web: Auth.tsx
ForgotPasswordForm
P1 Β· Pendiente
EnvΓ­o de email de recuperaciΓ³n. Estado de Γ©xito con instrucciones. Deep link para abrir formulario de reset.
deep linkemail
β†— Web: ForgotPassword.tsx
AppHeader
βœ“ Done
Barra superior con logo FinPal + menΓΊ hamburguesa (dropdown: cerrar sesiΓ³n, exportar datos, preferencias, tema). Sticky con safe area.
stickysafe-areadropdown
β†— Web: Index.tsx (nav bar)
StatsCard
βœ“ Done
Tarjeta de resumen con icono, valor principal y label. Variantes: total gastado, presupuesto restante, ingresos, balance. Soporte de tendencia (↑/↓).
icontrendvariants
β†— Web: StatsCard.tsx
EmptyState
βœ“ Done
Estado vacΓ­o genΓ©rico con icono, tΓ­tulo, descripciΓ³n y CTA opcional. Reutilizable para listas vacΓ­as de transacciones, presupuestos, Gmail.
iconCTAreusable
LoadingScreen
βœ“ Done
Pantalla de carga inicial con logo + spinner. Se muestra durante verificaciΓ³n de auth y carga de datos crΓ­ticos.
logospinner
PeriodNavigator
βœ“ Done
Navegador de perΓ­odo ← Anterior / Mes actual / Siguiente β†’. Muestra nombre del mes + rango de fechas exacto del perΓ­odo. BotΓ³n "Hoy" para regresar al perΓ­odo actual.
chevronsperiod calctoday btn
β†— Web: BudgetPeriodNavigator.tsx
P2 Β· Budgets
Presupuestos Core
6 componentes
BottomSheet
P2 Β· Pendiente
Modal deslizable desde abajo. Base reutilizable para formularios, confirmaciones y selectores. Drag handle, backdrop dismiss, snap points.
reanimatedsnap pointsbackdrop
NewBudgetSheet
P2 Β· Pendiente
Bottom sheet para crear presupuesto: nombre de categorΓ­a (con sugerencias), monto y moneda. ValidaciΓ³n con react-hook-form + Zod.
formzodcategory suggest
β†— Web: NewBudgetModal.tsx
EditBudgetSheet
P2 Β· Pendiente
Bottom sheet para editar monto o nombre de categorΓ­a de un presupuesto existente. Precarga los valores actuales.
prefilledinline edit
β†— Web: AddBudgetCard.tsx inline edit
CategoryPicker
P2 Β· Pendiente
Selector de categorΓ­a reutilizable (en formularios de presupuestos y transacciones). Lista de categorΓ­as existentes + opciΓ³n "Nueva categorΓ­a". Chips con color de categorΓ­a.
reusablecolor chipsnew option
BudgetWizard
P2 Β· Pendiente
Flujo multi-paso para primer uso: selecciΓ³n de perfil de gasto β†’ categorΓ­as personalizables β†’ configuraciΓ³n de perΓ­odo. Se muestra cuando no hay presupuestos.
multi-steponboardingprofile templates
β†— Web: BudgetWizard.tsx
MissingBudgetsBanner
P2 Β· Pendiente
Banner con CTA "Copiar presupuestos del mes anterior" cuando hay categorΓ­as del perΓ­odo anterior sin crear en el perΓ­odo actual.
contextualone-tap action
β†— Web: CreateMissingBudgetsCard.tsx
P3 Β· Transactions
Transacciones Core
7 componentes
TransactionList
P3 Β· Pendiente
FlatList paginada de TransactionCards con infinite scroll. SearchBar integrado con debounce. Estado vacΓ­o diferenciado (sin resultados vs. sin transacciones).
FlatListinfinite scrollsearch
β†— Web: TransactionList.tsx
AddTransactionFAB
P3 Β· Pendiente
Floating Action Button (+) posicionado sobre el tab bar. Abre el TransactionFormSheet al presionar.
FABabove tab bar
β†— Web: AddTransactionButton.tsx
TransactionFormSheet
P3 Β· Pendiente
Bottom sheet con formulario completo: monto, descripciΓ³n, categorΓ­a (CategoryPicker), fecha (DatePicker), tipo (gasto/ingreso), moneda. Modo crear y editar.
create + editDatePickerCategoryPicker
β†— Web: TransactionForm.tsx + EditTransactionDialog.tsx
UncategorizedBanner
P3 Β· Pendiente
SecciΓ³n colapsable en el dashboard con transacciones sin categorΓ­a. Contador visual (badge rojo). Prioridad alta en la jerarquΓ­a visual.
collapsiblebadge countpriority
β†— Web: UncategorizedTransactions.tsx
CategorySelectSheet
P3 Β· Pendiente
Bottom sheet rΓ‘pido para asignar categorΓ­a a una transacciΓ³n pendiente. Lista de categorΓ­as existentes + opciΓ³n de crear presupuesto nuevo.
quick assigncreate budget flow
DeleteConfirmSheet
P3 Β· Pendiente
Bottom sheet de confirmaciΓ³n de borrado con mensaje descriptivo y botones Cancel/Delete. Reutilizable para transacciones y presupuestos.
destructive confirmreusable
SearchBar
P3 Β· Pendiente
Barra de bΓΊsqueda con Γ­cono de lupa, clear button (Γ—), debounce 300ms. Reset de paginaciΓ³n al cambiar la query. Estado de "sin resultados" para bΓΊsqueda vacΓ­a.
debounceclear btnempty state
β†— Web: TransactionList.tsx (search input)
P4 Β· Gmail
IntegraciΓ³n Gmail / Penny
4 componentes
⚠️ Requiere Development Build (EAS). Usa expo-auth-session con PKCE β€” no WebView. Necesita deep links configurados en app.json.
GmailConnectButton
P4 Β· Gmail
BotΓ³n "Conectar con Google" que inicia el flujo OAuth 2.0 con PKCE via expo-auth-session. Maneja callback y almacena tokens.
expo-auth-sessionPKCEOAuth
β†— Web: GmailConnectButton.tsx
GmailStatusCard
P4 Β· Gmail
Card de estado de cuenta Gmail: conectado (verde) / sincronizando (amarillo) / error (rojo). Muestra email, ΓΊltima sincronizaciΓ³n y monitoreo activo.
3 stateslast syncmonitoring
β†— Web: GmailStatusIndicator.tsx + GmailAccountCard.tsx
GmailAccountList
P4 Β· Gmail
Lista de cuentas Gmail conectadas con opciones: pausar/reanudar monitoreo, desconectar cuenta. Estado vacΓ­o con CTA de conectar.
pause/resumedisconnect
β†— Web: GmailAccountList.tsx
GmailSettingsScreen
P4 Β· Gmail
Pantalla completa de gestiΓ³n de Gmail (fuera de tabs). Incluye GmailAccountList + GmailConnectButton + info de integraciΓ³n con Penny.
full screenPenny info
β†— Web: GmailSettings.tsx
P5 Β· Push & Native
Push Notifications + BiometrΓ­a
3 componentes
⚠️ Requiere Development Build (EAS) con FCM credentials (Android) y APNs (iOS). Nuevas tablas Prisma: PushToken, NotificationSetting.
BiometricPrompt
P5 Β· Native
Prompt de autenticaciΓ³n biomΓ©trica (Face ID / Touch ID) al abrir la app si hay sesiΓ³n activa. Usa expo-local-authentication + SecureStore.
Face IDTouch IDSecureStore
NotificationSettings
P5 Β· Native
Panel de configuraciΓ³n de alertas push por categorΓ­a: toggle on/off y umbral de % para alerta de presupuesto. Guardado en backend via NotificationSetting table.
per-categorythreshold %toggle
PushPermissionPrompt
P5 Β· Native
Pantalla/modal de solicitud de permisos de notificaciones con valor claro ("Te avisamos cuando te acercas al lΓ­mite"). Solo se muestra una vez.
one-timevalue prop
P6 Β· Polish & Offline
SincronizaciΓ³n Offline
2 componentes
Requiere MMKV para offline queue, NetInfo para detecciΓ³n de conectividad, y lΓ³gica de reconciliaciΓ³n de cambios en Zustand.
OfflineBanner
P6 Β· Offline
Banner persistente en la parte superior cuando no hay conexiΓ³n: "Sin conexiΓ³n β€” los cambios se sincronizarΓ‘n al reconectar". Desaparece automΓ‘ticamente al recuperar conexiΓ³n.
NetInfoauto dismiss
SyncIndicator
P6 Β· Offline
Indicador sutil (spinner pequeΓ±o o badge en el header) cuando hay cambios pendientes de sincronizar. Muestra conteo de operaciones en cola.
pending countMMKV queue
Screens
Pantallas / Rutas
10 pantallas
Estructura de rutas con Expo Router. Las pantallas de tabs ya existen como archivos vacΓ­os; las de auth y modales estΓ‘n pendientes.
app/(auth)/login.tsx
Login
Pantalla de inicio de sesiΓ³n con LoginForm. Redirect a /tabs si ya autenticado.
P1
app/(auth)/register.tsx
Registro
Pantalla de creaciΓ³n de cuenta con RegisterForm.
P1
app/(auth)/forgot-password.tsx
Recuperar ContraseΓ±a
ForgotPasswordForm + confirmaciΓ³n de envΓ­o de email.
P1
app/(tabs)/index.tsx
Dashboard
Resumen del perΓ­odo: StatsCards + PeriodNavigator + BudgetCards + UncategorizedBanner. Archivo existe, pendiente de implementar.
P1
app/(tabs)/budgets.tsx
Presupuestos
Lista completa de BudgetCards + FAB para agregar + BudgetWizard (primer uso). Archivo existe, vacΓ­o.
P2
app/(tabs)/transactions.tsx
Gastos
TransactionList con SearchBar + AddTransactionFAB. Filtros por categorΓ­a opcionales. Archivo existe, vacΓ­o.
P3
app/(tabs)/settings.tsx
Ajustes
Idioma, moneda, tipo de perΓ­odo, tema, notificaciones. Actualmente tiene el design system showcase.
P1
app/gmail-settings.tsx
ConfiguraciΓ³n Gmail
GmailSettingsScreen β€” gestiΓ³n de cuentas Gmail conectadas y monitoreo Penny.
P4
app/preferences.tsx
Preferencias
Idioma, moneda predeterminada, tipo de perΓ­odo. Puede combinarse con settings.
P2
app/reset-password.tsx
Reset Password
Formulario de nueva contraseΓ±a accesible via deep link desde el email de reset.
P1