feat: add AI-generated study plan creation dialog and API integration

- Implemented CreatePlanDialog component for generating study plans using AI.
- Integrated postAPI function for handling API requests.
- Updated planes.tsx to include AI plan generation logic.
- Modified usuarios.tsx to enable email confirmation for new users.
- Added Switch component for UI consistency.
- Created api.ts for centralized API handling.
- Developed carreras.tsx for managing career data with filtering and CRUD operations.
- Added CarreraFormDialog and CarreraDetailDialog for creating and editing career details.
- Implemented CriterioFormDialog for adding criteria to careers.
This commit is contained in:
2025-08-25 09:29:22 -06:00
parent ca3fed69b2
commit 012a5a58b0
12 changed files with 1590 additions and 246 deletions

View File

@@ -16,6 +16,7 @@ import { Route as AuthenticatedUsuariosRouteImport } from './routes/_authenticat
import { Route as AuthenticatedPlanesRouteImport } from './routes/_authenticated/planes'
import { Route as AuthenticatedFacultadesRouteImport } from './routes/_authenticated/facultades'
import { Route as AuthenticatedDashboardRouteImport } from './routes/_authenticated/dashboard'
import { Route as AuthenticatedCarrerasRouteImport } from './routes/_authenticated/carreras'
import { Route as AuthenticatedAsignaturasRouteImport } from './routes/_authenticated/asignaturas'
import { Route as AuthenticatedArchivosRouteImport } from './routes/_authenticated/archivos'
import { Route as AuthenticatedPlanPlanIdRouteImport } from './routes/_authenticated/plan/$planId'
@@ -57,6 +58,11 @@ const AuthenticatedDashboardRoute = AuthenticatedDashboardRouteImport.update({
path: '/dashboard',
getParentRoute: () => AuthenticatedRoute,
} as any)
const AuthenticatedCarrerasRoute = AuthenticatedCarrerasRouteImport.update({
id: '/carreras',
path: '/carreras',
getParentRoute: () => AuthenticatedRoute,
} as any)
const AuthenticatedAsignaturasRoute =
AuthenticatedAsignaturasRouteImport.update({
id: '/asignaturas',
@@ -97,6 +103,7 @@ export interface FileRoutesByFullPath {
'/login': typeof LoginRoute
'/archivos': typeof AuthenticatedArchivosRoute
'/asignaturas': typeof AuthenticatedAsignaturasRouteWithChildren
'/carreras': typeof AuthenticatedCarrerasRoute
'/dashboard': typeof AuthenticatedDashboardRoute
'/facultades': typeof AuthenticatedFacultadesRoute
'/planes': typeof AuthenticatedPlanesRoute
@@ -111,6 +118,7 @@ export interface FileRoutesByTo {
'/login': typeof LoginRoute
'/archivos': typeof AuthenticatedArchivosRoute
'/asignaturas': typeof AuthenticatedAsignaturasRouteWithChildren
'/carreras': typeof AuthenticatedCarrerasRoute
'/dashboard': typeof AuthenticatedDashboardRoute
'/facultades': typeof AuthenticatedFacultadesRoute
'/planes': typeof AuthenticatedPlanesRoute
@@ -127,6 +135,7 @@ export interface FileRoutesById {
'/login': typeof LoginRoute
'/_authenticated/archivos': typeof AuthenticatedArchivosRoute
'/_authenticated/asignaturas': typeof AuthenticatedAsignaturasRouteWithChildren
'/_authenticated/carreras': typeof AuthenticatedCarrerasRoute
'/_authenticated/dashboard': typeof AuthenticatedDashboardRoute
'/_authenticated/facultades': typeof AuthenticatedFacultadesRoute
'/_authenticated/planes': typeof AuthenticatedPlanesRoute
@@ -143,6 +152,7 @@ export interface FileRouteTypes {
| '/login'
| '/archivos'
| '/asignaturas'
| '/carreras'
| '/dashboard'
| '/facultades'
| '/planes'
@@ -157,6 +167,7 @@ export interface FileRouteTypes {
| '/login'
| '/archivos'
| '/asignaturas'
| '/carreras'
| '/dashboard'
| '/facultades'
| '/planes'
@@ -172,6 +183,7 @@ export interface FileRouteTypes {
| '/login'
| '/_authenticated/archivos'
| '/_authenticated/asignaturas'
| '/_authenticated/carreras'
| '/_authenticated/dashboard'
| '/_authenticated/facultades'
| '/_authenticated/planes'
@@ -239,6 +251,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof AuthenticatedDashboardRouteImport
parentRoute: typeof AuthenticatedRoute
}
'/_authenticated/carreras': {
id: '/_authenticated/carreras'
path: '/carreras'
fullPath: '/carreras'
preLoaderRoute: typeof AuthenticatedCarrerasRouteImport
parentRoute: typeof AuthenticatedRoute
}
'/_authenticated/asignaturas': {
id: '/_authenticated/asignaturas'
path: '/asignaturas'
@@ -301,6 +320,7 @@ const AuthenticatedAsignaturasRouteWithChildren =
interface AuthenticatedRouteChildren {
AuthenticatedArchivosRoute: typeof AuthenticatedArchivosRoute
AuthenticatedAsignaturasRoute: typeof AuthenticatedAsignaturasRouteWithChildren
AuthenticatedCarrerasRoute: typeof AuthenticatedCarrerasRoute
AuthenticatedDashboardRoute: typeof AuthenticatedDashboardRoute
AuthenticatedFacultadesRoute: typeof AuthenticatedFacultadesRoute
AuthenticatedPlanesRoute: typeof AuthenticatedPlanesRoute
@@ -313,6 +333,7 @@ interface AuthenticatedRouteChildren {
const AuthenticatedRouteChildren: AuthenticatedRouteChildren = {
AuthenticatedArchivosRoute: AuthenticatedArchivosRoute,
AuthenticatedAsignaturasRoute: AuthenticatedAsignaturasRouteWithChildren,
AuthenticatedCarrerasRoute: AuthenticatedCarrerasRoute,
AuthenticatedDashboardRoute: AuthenticatedDashboardRoute,
AuthenticatedFacultadesRoute: AuthenticatedFacultadesRoute,
AuthenticatedPlanesRoute: AuthenticatedPlanesRoute,