apps/web/src/app/layout.tsx:17 sigue con title: "Create Next App", y lang="en" aunque la UI está en español.
apps/web/src/app/_core/components/multi-select.tsx usa un id fijo ("multi-select-listbox"), así que dos instancias en la misma página chocan. El combobox no se navega con flechas y el contenedor es un div con onClick.
apps/web/src/app/_core/components/confirm-dialog.tsx:64 siempre muestra "Eliminando…" mientras procesa, aunque la acción no sea eliminar.
framer-motion (usado en 6 archivos) es el nombre anterior del paquete motion.
Payment.orderId y Payment.terminalId existen en el contrato pero no se usan.
Qué estamos pagando hoy
La pestaña del navegador dice "Create Next App".
Lectores de pantalla y corrector ortográfico tratan la UI como inglés.
El selector múltiple no se puede usar solo con teclado.
Campos sin uso en el contrato confunden sobre qué hace el sistema.
Arreglo propuesto
metadata con el nombre del producto y lang="es"
Id único con useId() en MultiSelect y navegación con flechas, o reemplazarlo por un componente de HeroUI
Prop pendingLabel en ConfirmDialog
Migrar framer-motion → motion (cambiar imports a motion/react)
Decidir si orderId / terminalId se van a usar (terminal de pago); si no, quitarlos del contrato
Techo de esta ronda
Arreglos puntuales de un PR chico. Fuera: auditoría completa de accesibilidad.
Superficie
Web (apps/web)
Módulos
Web / frontend, Base de datos / contrato Prisma
Esfuerzo
S — un PR chico
Riesgo de no tocarlo
Bajo
### Qué es la deuda
- `apps/web/src/app/layout.tsx:17` sigue con `title: "Create Next App"`, y `lang="en"` aunque la UI está en español.
- `apps/web/src/app/_core/components/multi-select.tsx` usa un id fijo (`"multi-select-listbox"`), así que dos instancias en la misma página chocan. El combobox no se navega con flechas y el contenedor es un `div` con `onClick`.
- `apps/web/src/app/_core/components/confirm-dialog.tsx:64` siempre muestra "Eliminando…" mientras procesa, aunque la acción no sea eliminar.
- `framer-motion` (usado en 6 archivos) es el nombre anterior del paquete `motion`.
- `Payment.orderId` y `Payment.terminalId` existen en el contrato pero no se usan.
### Qué estamos pagando hoy
- La pestaña del navegador dice "Create Next App".
- Lectores de pantalla y corrector ortográfico tratan la UI como inglés.
- El selector múltiple no se puede usar solo con teclado.
- Campos sin uso en el contrato confunden sobre qué hace el sistema.
### Arreglo propuesto
- [x] `metadata` con el nombre del producto y `lang="es"`
- [x] Id único con `useId()` en `MultiSelect` y navegación con flechas, o reemplazarlo por un componente de HeroUI
- [x] Prop `pendingLabel` en `ConfirmDialog`
- [x] Migrar `framer-motion` → `motion` (cambiar imports a `motion/react`)
- [x] Decidir si `orderId` / `terminalId` se van a usar (terminal de pago); si no, quitarlos del contrato
### Techo de esta ronda
Arreglos puntuales de un PR chico. Fuera: auditoría completa de accesibilidad.
### Superficie
Web (apps/web)
### Módulos
Web / frontend, Base de datos / contrato Prisma
### Esfuerzo
S — un PR chico
### Riesgo de no tocarlo
Bajo
Miguel
was assigned by Carlos2026-10-02 20:05:09 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Qué es la deuda
apps/web/src/app/layout.tsx:17sigue contitle: "Create Next App", ylang="en"aunque la UI está en español.apps/web/src/app/_core/components/multi-select.tsxusa un id fijo ("multi-select-listbox"), así que dos instancias en la misma página chocan. El combobox no se navega con flechas y el contenedor es undivcononClick.apps/web/src/app/_core/components/confirm-dialog.tsx:64siempre muestra "Eliminando…" mientras procesa, aunque la acción no sea eliminar.framer-motion(usado en 6 archivos) es el nombre anterior del paquetemotion.Payment.orderIdyPayment.terminalIdexisten en el contrato pero no se usan.Qué estamos pagando hoy
Arreglo propuesto
metadatacon el nombre del producto ylang="es"useId()enMultiSelecty navegación con flechas, o reemplazarlo por un componente de HeroUIpendingLabelenConfirmDialogframer-motion→motion(cambiar imports amotion/react)orderId/terminalIdse van a usar (terminal de pago); si no, quitarlos del contratoTecho de esta ronda
Arreglos puntuales de un PR chico. Fuera: auditoría completa de accesibilidad.
Superficie
Web (apps/web)
Módulos
Web / frontend, Base de datos / contrato Prisma
Esfuerzo
S — un PR chico
Riesgo de no tocarlo
Bajo