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.

220 lines
4.2 KiB
Vue

2 months ago
<!-- components/programas/ProgramasSection.vue (SOLO ÁREAS, estilo AntDV) -->
2 months ago
<template>
2 months ago
<section class="areas-section">
2 months ago
<div class="section-container">
<div class="section-header">
2 months ago
<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>
2 months ago
</div>
2 months ago
<div class="areas-grid">
<a-card
v-for="a in areas"
:key="a.id"
hoverable
class="area-card"
@click="selectArea(a)"
>
2 months ago
2 months ago
<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>
<div class="area-body">
<h3 class="area-title">{{ a.nombre }}</h3>
<p class="area-desc">{{ a.descripcion }}</p>
<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>
2 months ago
</div>
2 months ago
<a-button type="primary" block class="area-btn">
Ver detalle del área
</a-button>
</div>
</a-card>
2 months ago
</div>
</div>
</section>
</template>
<script setup>
2 months ago
const props = defineProps({
areas: {
2 months ago
type: Array,
2 months ago
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: "1012 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.",
},
],
},
2 months ago
})
2 months ago
const emit = defineEmits(["select-area"])
const selectArea = (area) => {
emit("select-area", area)
}
2 months ago
</script>
<style scoped>
2 months ago
2 months ago
.areas-section {
2 months ago
padding: 80px 0;
2 months ago
background: #f5f5f5;
2 months ago
font-family: "Times New Roman", Times, serif;
2 months ago
}
.section-container {
max-width: 1200px;
margin: 0 auto;
padding: 0 24px;
}
.section-header {
text-align: center;
2 months ago
margin-bottom: 40px;
2 months ago
}
.section-title {
2 months ago
margin: 0 0 10px;
font-size: 2.4rem;
2 months ago
font-weight: 700;
2 months ago
color: rgba(0, 0, 0, 0.88);
2 months ago
}
.section-subtitle {
margin: 0 auto;
2 months ago
max-width: 680px;
font-size: 1.05rem;
2 months ago
color: rgba(0, 0, 0, 0.65);
2 months ago
line-height: 1.45;
2 months ago
}
2 months ago
/* Grid */
.areas-grid {
2 months ago
display: grid;
2 months ago
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 18px;
2 months ago
}
2 months ago
2 months ago
.area-card {
2 months ago
border-radius: 12px;
2 months ago
overflow: hidden;
cursor: pointer;
2 months ago
}
2 months ago
2 months ago
.area-media {
position: relative;
height: 190px;
overflow: hidden;
2 months ago
}
2 months ago
.area-img :deep(img) {
width: 100%;
height: 190px;
object-fit: cover;
display: block;
2 months ago
}
2 months ago
2 months ago
.area-tag {
position: absolute;
top: 12px;
left: 12px;
margin: 0;
border-radius: 999px;
font-weight: 600;
2 months ago
}
2 months ago
2 months ago
.area-body {
padding: 14px 14px 16px;
2 months ago
}
2 months ago
.area-title {
margin: 0 0 8px;
font-size: 1.2rem;
font-weight: 700;
color: rgba(0, 0, 0, 0.88);
2 months ago
}
2 months ago
.area-desc {
margin: 0 0 12px;
color: rgba(0, 0, 0, 0.65);
font-size: 0.95rem;
line-height: 1.45;
2 months ago
}
2 months ago
.area-metrics {
2 months ago
display: flex;
2 months ago
flex-wrap: wrap;
gap: 8px;
margin-bottom: 12px;
2 months ago
}
2 months ago
/* Botón */
.area-btn {
font-weight: 600;
border-radius: 10px;
2 months ago
}
2 months ago
2 months ago
@media (max-width: 992px) {
2 months ago
.areas-grid {
grid-template-columns: 1fr;
}
.area-media {
height: 220px;
}
.area-img :deep(img) {
height: 220px;
}
2 months ago
.section-title {
font-size: 2rem;
}
}
2 months ago
@media (max-width: 480px) {
.areas-section {
padding: 55px 0;
}
}
2 months ago
</style>