You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
161 lines
3.4 KiB
Vue
161 lines
3.4 KiB
Vue
|
2 months ago
|
<!-- components/programas/ProgramasSection.vue -->
|
||
|
|
<template>
|
||
|
|
<section class="programas-section">
|
||
|
|
<div class="section-container">
|
||
|
|
<div class="section-header">
|
||
|
|
<h2 class="section-title">Programas Académicos</h2>
|
||
|
|
<p class="section-subtitle">Explora nuestra oferta académica de pregrado y posgrado</p>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="facultades-tabs">
|
||
|
|
<a-tabs v-model:activeKey="facultadActiva">
|
||
|
|
<a-tab-pane v-for="facultad in facultades" :key="facultad.id" :tab="facultad.nombre">
|
||
|
|
<div class="carreras-grid">
|
||
|
|
<a-card v-for="carrera in facultad.carreras" :key="carrera.id" class="carrera-card">
|
||
|
|
<div class="carrera-header">
|
||
|
|
<div class="carrera-icon">
|
||
|
|
<component :is="carrera.icono" />
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<h4>{{ carrera.nombre }}</h4>
|
||
|
|
<p class="carrera-grado">{{ carrera.grado }}</p>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<p class="carrera-desc">{{ carrera.descripcion }}</p>
|
||
|
|
<div class="carrera-stats">
|
||
|
|
<span><UserOutlined /> Vacantes: {{ carrera.vacantes }}</span>
|
||
|
|
<span><TrophyOutlined /> Puntaje: {{ carrera.puntaje }}</span>
|
||
|
|
</div>
|
||
|
|
<a-button type="link" size="small" class="carrera-link">Ver plan de estudios</a-button>
|
||
|
|
</a-card>
|
||
|
|
</div>
|
||
|
|
</a-tab-pane>
|
||
|
|
</a-tabs>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</section>
|
||
|
|
</template>
|
||
|
|
|
||
|
|
<script setup>
|
||
|
|
import { ref } from 'vue'
|
||
|
|
import { UserOutlined, TrophyOutlined } from '@ant-design/icons-vue'
|
||
|
|
|
||
|
|
defineProps({
|
||
|
|
facultades: {
|
||
|
|
type: Array,
|
||
|
|
required: true
|
||
|
|
}
|
||
|
|
})
|
||
|
|
|
||
|
|
const facultadActiva = ref('1')
|
||
|
|
</script>
|
||
|
|
|
||
|
|
<style scoped>
|
||
|
|
.programas-section {
|
||
|
|
padding: 80px 0;
|
||
|
|
background: #f8f9fa;
|
||
|
|
}
|
||
|
|
|
||
|
|
.section-container {
|
||
|
|
max-width: 1200px;
|
||
|
|
margin: 0 auto;
|
||
|
|
padding: 0 24px;
|
||
|
|
}
|
||
|
|
|
||
|
|
.section-header {
|
||
|
|
text-align: center;
|
||
|
|
margin-bottom: 60px;
|
||
|
|
}
|
||
|
|
|
||
|
|
.section-title {
|
||
|
|
font-size: 2.5rem;
|
||
|
|
font-weight: 700;
|
||
|
|
color: #1a237e;
|
||
|
|
margin-bottom: 16px;
|
||
|
|
}
|
||
|
|
|
||
|
|
.section-subtitle {
|
||
|
|
font-size: 1.125rem;
|
||
|
|
color: #666;
|
||
|
|
max-width: 600px;
|
||
|
|
margin: 0 auto;
|
||
|
|
}
|
||
|
|
|
||
|
|
.facultades-tabs :deep(.ant-tabs-nav) {
|
||
|
|
margin-bottom: 40px;
|
||
|
|
}
|
||
|
|
|
||
|
|
.carreras-grid {
|
||
|
|
display: grid;
|
||
|
|
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||
|
|
gap: 24px;
|
||
|
|
}
|
||
|
|
|
||
|
|
.carrera-card {
|
||
|
|
border: none;
|
||
|
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
|
||
|
|
border-radius: 12px;
|
||
|
|
transition: transform 0.3s ease;
|
||
|
|
}
|
||
|
|
|
||
|
|
.carrera-card:hover {
|
||
|
|
transform: translateY(-4px);
|
||
|
|
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
|
||
|
|
}
|
||
|
|
|
||
|
|
.carrera-header {
|
||
|
|
display: flex;
|
||
|
|
gap: 16px;
|
||
|
|
align-items: center;
|
||
|
|
margin-bottom: 16px;
|
||
|
|
}
|
||
|
|
|
||
|
|
.carrera-icon {
|
||
|
|
background: linear-gradient(135deg, #1a237e 0%, #283593 100%);
|
||
|
|
color: white;
|
||
|
|
width: 48px;
|
||
|
|
height: 48px;
|
||
|
|
border-radius: 8px;
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
justify-content: center;
|
||
|
|
font-size: 24px;
|
||
|
|
}
|
||
|
|
|
||
|
|
.carrera-header h4 {
|
||
|
|
margin: 0;
|
||
|
|
color: #1a237e;
|
||
|
|
}
|
||
|
|
|
||
|
|
.carrera-grado {
|
||
|
|
color: #666;
|
||
|
|
font-size: 0.875rem;
|
||
|
|
margin: 4px 0 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
.carrera-desc {
|
||
|
|
color: #666;
|
||
|
|
font-size: 0.875rem;
|
||
|
|
line-height: 1.5;
|
||
|
|
margin-bottom: 16px;
|
||
|
|
}
|
||
|
|
|
||
|
|
.carrera-stats {
|
||
|
|
display: flex;
|
||
|
|
justify-content: space-between;
|
||
|
|
color: #666;
|
||
|
|
font-size: 0.875rem;
|
||
|
|
margin-bottom: 16px;
|
||
|
|
}
|
||
|
|
|
||
|
|
.carrera-link {
|
||
|
|
color: #1890ff;
|
||
|
|
font-weight: 500;
|
||
|
|
}
|
||
|
|
|
||
|
|
@media (max-width: 992px) {
|
||
|
|
.section-title {
|
||
|
|
font-size: 2rem;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</style>
|