Merge remote-tracking branch 'origin/feat/wizard-plan-vista'

This commit is contained in:
2026-01-09 11:19:21 -06:00
35 changed files with 2566 additions and 377 deletions

View File

@@ -1,6 +1,6 @@
import { createFileRoute } from '@tanstack/react-router'
import { NuevaAsignaturaModalContainer } from '@/features/asignaturas/new/NuevaAsignaturaModalContainer'
import { NuevaAsignaturaModalContainer } from '@/features/asignaturas/nueva/NuevaAsignaturaModalContainer'
export const Route = createFileRoute(
'/planes/$planId/asignaturas/_lista/nueva',

View File

@@ -1,6 +1,6 @@
import { createFileRoute } from '@tanstack/react-router'
import NuevoPlanModalContainer from '@/features/planes/new/NuevoPlanModalContainer'
import NuevoPlanModalContainer from '@/features/planes/nuevo/NuevoPlanModalContainer'
export const Route = createFileRoute('/planes/_lista/nuevo')({
component: NuevoPlanModalContainer,

View File

@@ -183,10 +183,19 @@ function RouteComponent() {
// Filtrado de planes
const filteredPlans = useMemo(() => {
const term = search.trim().toLowerCase()
// Función helper para limpiar texto (quita acentos y hace minúsculas)
const cleanText = (text: string) => {
return text
.normalize('NFD') // Descompone "á" en "a" + "´"
.replace(/[\u0300-\u036f]/g, '') // Elimina los símbolos diacríticos
.toLowerCase() // Convierte a minúsculas
}
// Limpiamos el término de búsqueda una sola vez antes de filtrar
const term = cleanText(search.trim())
return planes.filter((p) => {
const matchName = term
? p.nombrePrograma.toLowerCase().includes(term)
? // Limpiamos también el nombre del programa antes de comparar
cleanText(p.nombrePrograma).includes(term)
: true
const matchFac =
facultadSel === 'todas' ? true : p.facultadId === facultadSel