|
|
|
|
|
<!-- components/programas/ProgramasSection.vue (SOLO ÁREAS, estilo AntDV) -->
|
|
|
|
|
|
<template>
|
|
|
|
|
|
<section class="areas-section">
|
|
|
|
|
|
<div class="section-container">
|
|
|
|
|
|
<div class="section-header">
|
|
|
|
|
|
<h2 class="section-title">Áreas Académicas</h2>
|
|
|
|
|
|
<p class="section-subtitle">
|
|
|
|
|
|
Elige el área de tu interés y conoce su enfoque formativo
|
|
|
|
|
|
</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="areas-grid">
|
|
|
|
|
|
<a-card
|
|
|
|
|
|
v-for="a in areas"
|
|
|
|
|
|
:key="a.id"
|
|
|
|
|
|
hoverable
|
|
|
|
|
|
class="area-card"
|
|
|
|
|
|
@click="selectArea(a)"
|
|
|
|
|
|
>
|
|
|
|
|
|
<!-- Imagen -->
|
|
|
|
|
|
<div class="area-media">
|
|
|
|
|
|
<a-image :src="a.imagen" :preview="false" class="area-img" />
|
|
|
|
|
|
<a-tag class="area-tag" color="blue">{{ a.nombre }}</a-tag>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Contenido -->
|
|
|
|
|
|
<div class="area-body">
|
|
|
|
|
|
<h3 class="area-title">{{ a.nombre }}</h3>
|
|
|
|
|
|
<p class="area-desc">{{ a.descripcion }}</p>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Métricas: AntDV (Tag) -->
|
|
|
|
|
|
<div class="area-metrics">
|
|
|
|
|
|
<a-tag color="processing">Programas: {{ a.programas }}</a-tag>
|
|
|
|
|
|
<a-tag color="default">Enfoque: {{ a.enfoque }}</a-tag>
|
|
|
|
|
|
<a-tag color="default">Duración: {{ a.duracion }}</a-tag>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<a-button type="primary" block class="area-btn">
|
|
|
|
|
|
Ver detalle del área
|
|
|
|
|
|
</a-button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</a-card>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</section>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
|
const props = defineProps({
|
|
|
|
|
|
areas: {
|
|
|
|
|
|
type: Array,
|
|
|
|
|
|
default: () => [
|
|
|
|
|
|
{
|
|
|
|
|
|
id: "ing",
|
|
|
|
|
|
nombre: "Ingenierías",
|
|
|
|
|
|
imagen: "/images/areas/ingenierias.jpg",
|
|
|
|
|
|
descripcion:
|
|
|
|
|
|
"Formación orientada a la innovación, el diseño, la construcción y el desarrollo tecnológico.",
|
|
|
|
|
|
programas: "18",
|
|
|
|
|
|
enfoque: "Tecnológico",
|
|
|
|
|
|
duracion: "10 sem.",
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
id: "bio",
|
|
|
|
|
|
nombre: "Biomédicas",
|
|
|
|
|
|
imagen: "/images/areas/biomedicas.jpg",
|
|
|
|
|
|
descripcion:
|
|
|
|
|
|
"Ciencias de la salud y tecnología aplicada al bienestar, con formación científica y práctica.",
|
|
|
|
|
|
programas: "12",
|
|
|
|
|
|
enfoque: "Salud",
|
|
|
|
|
|
duracion: "10–12 sem.",
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
id: "soc",
|
|
|
|
|
|
nombre: "Sociales",
|
|
|
|
|
|
imagen: "/images/areas/sociales.jpg",
|
|
|
|
|
|
descripcion:
|
|
|
|
|
|
"Formación humanística y social con análisis, investigación y compromiso con la sociedad.",
|
|
|
|
|
|
programas: "14",
|
|
|
|
|
|
enfoque: "Humanístico",
|
|
|
|
|
|
duracion: "10 sem.",
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
},
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
const emit = defineEmits(["select-area"])
|
|
|
|
|
|
|
|
|
|
|
|
const selectArea = (area) => {
|
|
|
|
|
|
emit("select-area", area)
|
|
|
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
|
/* ✅ Fondo AntDV (sin cuadrados) */
|
|
|
|
|
|
.areas-section {
|
|
|
|
|
|
padding: 80px 0;
|
|
|
|
|
|
background: #f5f5f5; /* estilo Ant */
|
|
|
|
|
|
font-family: "Times New Roman", Times, serif;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.section-container {
|
|
|
|
|
|
max-width: 1200px;
|
|
|
|
|
|
margin: 0 auto;
|
|
|
|
|
|
padding: 0 24px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.section-header {
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
margin-bottom: 40px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.section-title {
|
|
|
|
|
|
margin: 0 0 10px;
|
|
|
|
|
|
font-size: 2.4rem;
|
|
|
|
|
|
font-weight: 700;
|
|
|
|
|
|
color: rgba(0, 0, 0, 0.88); /* Ant text */
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.section-subtitle {
|
|
|
|
|
|
margin: 0 auto;
|
|
|
|
|
|
max-width: 680px;
|
|
|
|
|
|
font-size: 1.05rem;
|
|
|
|
|
|
color: rgba(0, 0, 0, 0.65); /* Ant secondary text */
|
|
|
|
|
|
line-height: 1.45;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Grid */
|
|
|
|
|
|
.areas-grid {
|
|
|
|
|
|
display: grid;
|
|
|
|
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
|
|
|
|
gap: 18px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Card: AntDV, mínimo override */
|
|
|
|
|
|
.area-card {
|
|
|
|
|
|
border-radius: 12px;
|
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Imagen */
|
|
|
|
|
|
.area-media {
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
height: 190px;
|
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.area-img :deep(img) {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 190px;
|
|
|
|
|
|
object-fit: cover;
|
|
|
|
|
|
display: block;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Tag arriba */
|
|
|
|
|
|
.area-tag {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
top: 12px;
|
|
|
|
|
|
left: 12px;
|
|
|
|
|
|
margin: 0;
|
|
|
|
|
|
border-radius: 999px;
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Body */
|
|
|
|
|
|
.area-body {
|
|
|
|
|
|
padding: 14px 14px 16px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.area-title {
|
|
|
|
|
|
margin: 0 0 8px;
|
|
|
|
|
|
font-size: 1.2rem;
|
|
|
|
|
|
font-weight: 700;
|
|
|
|
|
|
color: rgba(0, 0, 0, 0.88);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.area-desc {
|
|
|
|
|
|
margin: 0 0 12px;
|
|
|
|
|
|
color: rgba(0, 0, 0, 0.65);
|
|
|
|
|
|
font-size: 0.95rem;
|
|
|
|
|
|
line-height: 1.45;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.area-metrics {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
|
gap: 8px;
|
|
|
|
|
|
margin-bottom: 12px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Botón */
|
|
|
|
|
|
.area-btn {
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
border-radius: 10px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Responsive */
|
|
|
|
|
|
@media (max-width: 992px) {
|
|
|
|
|
|
.areas-grid {
|
|
|
|
|
|
grid-template-columns: 1fr;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.area-media {
|
|
|
|
|
|
height: 220px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.area-img :deep(img) {
|
|
|
|
|
|
height: 220px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.section-title {
|
|
|
|
|
|
font-size: 2rem;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@media (max-width: 480px) {
|
|
|
|
|
|
.areas-section {
|
|
|
|
|
|
padding: 55px 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|