192 lines
7.2 KiB
TypeScript
192 lines
7.2 KiB
TypeScript
import { createFileRoute } from '@tanstack/react-router'
|
|
import {
|
|
ArrowRight,
|
|
BookOpenText,
|
|
Laptop,
|
|
Stethoscope,
|
|
Scale,
|
|
Calculator,
|
|
FlaskConical,
|
|
Activity,
|
|
PencilRuler,
|
|
ClipboardCheck,
|
|
} from 'lucide-react'
|
|
|
|
import DashboardHeader from '@/components/dashboard/DashboardHeader'
|
|
import PlanEstudiosCard from '@/components/planes/PlanEstudiosCard'
|
|
|
|
export const Route = createFileRoute('/dashboard')({
|
|
component: RouteComponent,
|
|
})
|
|
|
|
function RouteComponent() {
|
|
return (
|
|
// 1. min-h-screen para asegurar que llene la pantalla verticalmente
|
|
// 2. bg-background para asegurar consistencia con el tema
|
|
<main className="bg-background min-h-screen w-full">
|
|
{/* 1. max-w-7xl: El tope de anchura.
|
|
2. w-full: Para que ocupe el 100% hasta llegar al tope.
|
|
3. mx-auto: Para centrarse.
|
|
4. px-4 md:px-6: Padding RESPONSIVO interno (seguro para móviles y desktop).
|
|
5. py-6: Padding vertical (opcional, para separarse del header).
|
|
*/}
|
|
<div className="mx-auto flex w-full max-w-7xl flex-col gap-4 px-4 py-6 md:px-6 lg:px-8">
|
|
<DashboardHeader
|
|
nombre="Dr. Carlos Mendoza"
|
|
rol="Jefe de Carrera"
|
|
facultad="Facultad de Ingeniería"
|
|
/>
|
|
|
|
<div className="mt-6 grid gap-6 lg:grid-cols-3">
|
|
{/* --- Sección de Mis Planes de Estudio --- */}
|
|
<div className="flex flex-col gap-4 lg:col-span-2">
|
|
{/* --- Título de sección y enlace a página --- */}
|
|
<div className="flex items-center justify-between">
|
|
<div className="flex items-center gap-2">
|
|
<div className="text-primary">
|
|
<BookOpenText className="h-6 w-6" strokeWidth={2} />
|
|
</div>
|
|
|
|
<h3 className="text-foreground text-xl font-bold tracking-tight">
|
|
Mis Planes de Estudio
|
|
</h3>
|
|
</div>
|
|
|
|
{/* Usamos 'group' para animar la flecha al hacer hover en el texto */}
|
|
<a
|
|
href="/planes"
|
|
className="group text-muted-foreground hover:text-primary flex items-center gap-1.5 text-sm font-medium transition-colors"
|
|
>
|
|
<span>Ver todos</span>
|
|
{/* La flecha se mueve a la derecha al hacer hover en el grupoo */}
|
|
<ArrowRight className="h-4 w-4 transition-transform duration-300 group-hover:translate-x-1" />
|
|
</a>
|
|
</div>
|
|
|
|
<div className="grid gap-4 sm:grid-cols-2">
|
|
<PlanEstudiosCard
|
|
Icono={Laptop}
|
|
nombrePrograma="Ingeniería en Sistemas Computacionales"
|
|
nivel="Licenciatura"
|
|
ciclos="8 semestres"
|
|
facultad="Facultad de Ingeniería"
|
|
estado="Revisión expertos"
|
|
claseColorEstado="bg-amber-600"
|
|
colorFacultad="#2563eb"
|
|
onClick={() => console.log('Navegar a Sistemas...')}
|
|
/>
|
|
|
|
<PlanEstudiosCard
|
|
Icono={Stethoscope}
|
|
nombrePrograma="Médico Cirujano"
|
|
nivel="Licenciatura"
|
|
ciclos="10 semestres"
|
|
facultad="Facultad de Medicina"
|
|
estado="Aprobado"
|
|
claseColorEstado="bg-emerald-600"
|
|
colorFacultad="#dc2626"
|
|
/>
|
|
|
|
<PlanEstudiosCard
|
|
Icono={Calculator}
|
|
nombrePrograma="Licenciatura en Actuaría"
|
|
nivel="Licenciatura"
|
|
ciclos="9 semestres"
|
|
facultad="Facultad de Negocios"
|
|
estado="Aprobado"
|
|
claseColorEstado="bg-emerald-600"
|
|
colorFacultad="#059669"
|
|
onClick={() => console.log('Ver Actuaría')}
|
|
/>
|
|
|
|
<PlanEstudiosCard
|
|
Icono={PencilRuler}
|
|
nombrePrograma="Licenciatura en Arquitectura"
|
|
nivel="Licenciatura"
|
|
ciclos="10 semestres"
|
|
facultad="Facultad Mexicana de Arquitectura, Diseño y Comunicación"
|
|
estado="En proceso"
|
|
claseColorEstado="bg-orange-500"
|
|
colorFacultad="#ea580c"
|
|
onClick={() => console.log('Ver Arquitectura')}
|
|
/>
|
|
|
|
<PlanEstudiosCard
|
|
Icono={Activity}
|
|
nombrePrograma="Licenciatura en Fisioterapia"
|
|
nivel="Licenciatura"
|
|
ciclos="8 semestres"
|
|
facultad="Escuela de Altos Estudios en Salud"
|
|
estado="Revisión expertos"
|
|
claseColorEstado="bg-amber-600"
|
|
colorFacultad="#0891b2"
|
|
onClick={() => console.log('Ver Fisioterapia')}
|
|
/>
|
|
|
|
<PlanEstudiosCard
|
|
Icono={Scale}
|
|
nombrePrograma="Licenciatura en Derecho"
|
|
nivel="Licenciatura"
|
|
ciclos="10 semestres"
|
|
facultad="Facultad de Derecho"
|
|
estado="Pendiente"
|
|
claseColorEstado="bg-yellow-500"
|
|
colorFacultad="#7c3aed"
|
|
onClick={() => console.log('Ver Derecho')}
|
|
/>
|
|
|
|
<PlanEstudiosCard
|
|
Icono={FlaskConical}
|
|
nombrePrograma="Químico Farmacéutico Biólogo"
|
|
nivel="Licenciatura"
|
|
ciclos="9 semestres"
|
|
facultad="Facultad de Ciencias Químicas"
|
|
estado="Actualización"
|
|
claseColorEstado="bg-lime-600"
|
|
colorFacultad="#65a30d"
|
|
onClick={() => console.log('Ver QFB')}
|
|
/>
|
|
</div>
|
|
</div>
|
|
|
|
{/* --- Sección de Mis Revisiones --- */}
|
|
<div className="flex flex-col gap-4">
|
|
{/* --- Título de sección y enlace a página --- */}
|
|
<div className="flex items-center justify-between">
|
|
<div className="flex items-center gap-2">
|
|
<div className="text-primary">
|
|
<ClipboardCheck className="h-6 w-6" strokeWidth={2} />
|
|
</div>
|
|
|
|
<h3 className="text-foreground text-xl font-bold tracking-tight">
|
|
Mis Revisiones
|
|
</h3>
|
|
</div>
|
|
|
|
<a
|
|
href="/revisiones"
|
|
className="group text-muted-foreground hover:text-primary flex items-center gap-1.5 text-sm font-medium transition-colors"
|
|
>
|
|
<span>Ver todas</span>
|
|
<ArrowRight className="h-4 w-4 transition-transform duration-300 group-hover:translate-x-1" />
|
|
</a>
|
|
</div>
|
|
{/* --- Lista de revisiones (simplificada para este ejemplo) --- */}
|
|
<div className="flex flex-col gap-4">
|
|
<div className="min-h-20 rounded-lg border p-4 shadow-md">
|
|
Revision 1
|
|
</div>
|
|
<div className="min-h-20 rounded-lg border p-4 shadow-md">
|
|
Revision 2
|
|
</div>
|
|
<div className="min-h-20 rounded-lg border p-4 shadow-md">
|
|
Revision 3
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</main>
|
|
)
|
|
}
|