The catalog page draws its content entirely from aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/val20-11/Pagina-de-Seminarios-y-Eventos-UIM/llms.txt
Use this file to discover all available pages before exploring further.
seminarios array defined in js/seminarios.js. On page load, renderCards() iterates over that array and injects one .seminario-card element per seminar into #cardsContainer. There is no server or database involved — the full dataset lives in the JavaScript file.
Data structure
Each entry in theseminarios array is a plain object with eight fields:
js/seminarios.js
Field reference
Field reference
| Field | Type | Required | Notes |
|---|---|---|---|
tipo | string | Yes | 'anual', 'permanente', or 'especial' |
titulo | string | Yes | Displayed as the card heading |
objetivo | string | Yes | Truncated by default; expandable |
responsable | string | Yes | Faculty member or coordinator name |
correo | string | No | Left empty ('') when unavailable |
telefono | string | No | Left empty ('') when unavailable |
areas | string[] | Yes | Knowledge areas shown as pill tags |
imagen | string | No | URL; falls back to a placeholder when absent |
Seminar types
Threetipo values are recognised. Each maps to a distinct badge style on the card.
Anual
Badge background:
#003B6F (dark blue). Label text: Anual. CSS class: .card-tag (no modifier).Permanente
Badge background:
#1f4b7a (darker blue). Label text: Permanente. CSS class: .card-tag.permanente.Especial / Otros
Badge background:
#B38633 (gold), text #003B6F. Label text: Seminario. CSS class: .card-tag.especial.css/components.css
Card anatomy
TherenderCards() function builds each card’s inner HTML in this order:
Header image
<img class="card-img"> loaded from s.imagen. If the field is absent the placeholders map supplies a coloured placeholder URL. If the URL fails to load, an onerror handler hides the image and shows .card-img-fallback — a solid #003B6F panel with a gold chalkboard icon — instead.Type badge
A
<span class="card-tag [modifier]"> injected at the top of .card-body identifies the seminar category at a glance.Objective section
A
.objetivo block with a gold left border (3px solid #B38633) contains the OBJETIVO: label and the .card-objetivo paragraph. By default the paragraph is clamped to three lines via -webkit-line-clamp: 3.Expand/collapse toggle
A
.btn-toggle-texto button labelled Ver más / Ver menos toggles the .expandido class on .card-objetivo, removing the line clamp when expanded.Areas tags
.card-areas wraps each entry in s.areas as a <span> pill with background #e8f0f8. Rendered only when s.areas is non-empty.Contact details
.correo and .telefono pill-shaped rows are rendered only when those fields are non-empty strings.Placeholder image system
When a seminar object has noimagen field, renderCards() looks up a URL from the placeholders map keyed by tipo:
js/seminarios.js
The renderCards function
The function is intentionally stateless: it clears the container, rebuilds every card from the supplied array, and re-attaches click listeners.
js/seminarios.js
renderCards is called both on initial page load and every time the user changes a filter or types in the search box. Event delegation on #cardsContainer handles the Ver más / Ver menos toggle so it keeps working after each re-render.Expandable objective text
The toggle is handled via event delegation on#cardsContainer, not on individual buttons, so it survives every call to renderCards:
js/seminarios.js
css/typography.css