<?php
declare(strict_types=1);
$teamData = require __DIR__ . '/data/equipo_biblioteca.php';
$branches = $teamData['branches'] ?? [];
$coreRoles = $teamData['core_roles'] ?? [];
function teamInitials(string $value): string
{
$parts = preg_split('/\s+/', trim($value)) ?: [];
$initials = '';
foreach ($parts as $part) {
if ($part === '') {
continue;
}
$initials .= strtoupper(substr($part, 0, 1));
if (strlen($initials) >= 2) {
break;
}
}
return $initials !== '' ? $initials : 'SB';
}
function renderTeamMedia(array $item, string $variant = 'person'): void
{
$image = (string) ($item['image'] ?? '');
$label = (string) ($item['name'] ?? $item['role'] ?? 'Equipo Biblioteca');
$initials = teamInitials($label);
if ($image !== '') {
echo '<div class="team-media team-media-' . $variant . '">';
echo '<img src="' . htmlspecialchars($image, ENT_QUOTES, 'UTF-8') . '" alt="' . htmlspecialchars($label, ENT_QUOTES, 'UTF-8') . '">';
echo '</div>';
return;
}
echo '<div class="team-media team-media-' . $variant . ' is-placeholder" aria-hidden="true">';
echo '<span>' . htmlspecialchars($initials, ENT_QUOTES, 'UTF-8') . '</span>';
echo '</div>';
}
?>
<!doctype html>
<html lang="es">
<head>
<?php
$titulo = 'Equipo Biblioteca - Biblioteca Unillanos';
include __DIR__ . '/includes/head.php';
?>
<link rel="stylesheet" href="css/quienes-somos.css" />
</head>
<body class="team-page">
<?php include __DIR__ . '/includes/encabezado.php'; ?>
<main class="container page-wrap team-main">
<section class="team-hierarchy" aria-labelledby="teamStructureTitle" data-reveal>
<div class="team-section-head">
<h2 id="teamStructureTitle">Quiénes somos</h2>
<p>Somos el Sistema de Bibliotecas de la Universidad de los Llanos, un espacio académico dedicado a apoyar la formación integral, la investigación y la generación de conocimiento. Ofrecemos recursos de información actualizados, servicios innovadores y ambientes de aprendizaje que promueven el acceso equitativo al saber.</p>
</div>
<div class="team-flow">
<div class="team-flow-layer team-flow-layer-chief">
<article class="team-card team-card-chief" data-reveal>
<div class="team-card-mark"></div>
<?php renderTeamMedia((array) $teamData['leadership'], 'chief'); ?>
<div class="team-card-body">
<p class="team-card-role"><?= htmlspecialchars((string) $teamData['leadership']['role'], ENT_QUOTES, 'UTF-8') ?></p>
<h3 class="team-card-name"><?= htmlspecialchars((string) $teamData['leadership']['name'], ENT_QUOTES, 'UTF-8') ?></h3>
<p class="team-card-summary"><?= htmlspecialchars((string) $teamData['leadership']['summary'], ENT_QUOTES, 'UTF-8') ?></p>
<ul class="team-list">
<?php foreach (($teamData['leadership']['activities'] ?? []) as $activity): ?>
<li><?= htmlspecialchars((string) $activity, ENT_QUOTES, 'UTF-8') ?></li>
<?php endforeach; ?>
</ul>
</div>
</article>
</div>
<div class="team-flow-connector" aria-hidden="true">
<span></span>
</div>
<div class="team-flow-layer team-flow-layer-support">
<?php foreach ($coreRoles as $role): ?>
<article class="team-card team-card-support" data-reveal>
<div class="team-card-mark"></div>
<?php renderTeamMedia((array) $role, 'person'); ?>
<div class="team-card-body">
<p class="team-card-role"><?= htmlspecialchars((string) $role['role'], ENT_QUOTES, 'UTF-8') ?></p>
<h3 class="team-card-name"><?= htmlspecialchars((string) $role['name'], ENT_QUOTES, 'UTF-8') ?></h3>
<p class="team-card-summary"><?= htmlspecialchars((string) $role['summary'], ENT_QUOTES, 'UTF-8') ?></p>
<ul class="team-list">
<?php foreach (($role['activities'] ?? []) as $activity): ?>
<li><?= htmlspecialchars((string) $activity, ENT_QUOTES, 'UTF-8') ?></li>
<?php endforeach; ?>
</ul>
</div>
</article>
<?php endforeach; ?>
</div>
</div>
</section>
<section class="team-branches" aria-labelledby="branchesTitle">
<div class="team-section-head" data-reveal>
<h2 id="branchesTitle">Sistema de Bibliotecas</h2>
</div>
<div class="branch-layout">
<?php foreach ($branches as $branch): ?>
<?php $isBarcelona = (string) $branch['id'] === 'barcelona'; ?>
<?php $auxiliaryTeam = (array) ($branch['auxiliary_team'] ?? []); ?>
<article id="branch-<?= htmlspecialchars((string) $branch['id'], ENT_QUOTES, 'UTF-8') ?>" class="branch-card<?= $isBarcelona ? ' branch-card-featured' : '' ?>" data-reveal>
<div class="branch-shell">
<header class="branch-header">
<?php renderTeamMedia([
'image' => $branch['image'] ?? '',
'name' => $branch['name'] ?? '',
], 'branch'); ?>
<div class="branch-header-copy">
<p class="branch-kicker"><?= $isBarcelona ? 'Sede destacada' : 'Sede' ?></p>
<h3 class="branch-title"><?= htmlspecialchars((string) $branch['name'], ENT_QUOTES, 'UTF-8') ?></h3>
<p class="branch-description"><?= htmlspecialchars((string) $branch['description'], ENT_QUOTES, 'UTF-8') ?></p>
</div>
</header>
<div class="branch-meta-grid">
<article class="branch-meta-card">
<span class="branch-meta-label">Dirección</span>
<strong><?= htmlspecialchars((string) $branch['address'], ENT_QUOTES, 'UTF-8') ?></strong>
</article>
<article class="branch-meta-card">
<span class="branch-meta-label">Teléfono</span>
<strong><?= htmlspecialchars((string) $branch['phone'], ENT_QUOTES, 'UTF-8') ?></strong>
</article>
<article class="branch-meta-card">
<span class="branch-meta-label">Extensión</span>
<strong><?= htmlspecialchars((string) $branch['extension'], ENT_QUOTES, 'UTF-8') ?></strong>
</article>
</div>
<div class="branch-content">
<section class="branch-block">
<h4>Lo que realiza la sede</h4>
<ul class="team-list">
<?php foreach (($branch['services'] ?? []) as $service): ?>
<li><?= htmlspecialchars((string) $service, ENT_QUOTES, 'UTF-8') ?></li>
<?php endforeach; ?>
</ul>
</section>
<section class="aux-team-card">
<div class="aux-team-head">
<?php renderTeamMedia([
'image' => $auxiliaryTeam['image'] ?? '',
'name' => $auxiliaryTeam['name'] ?? 'Equipo auxiliar',
], 'group'); ?>
<div>
<h4><?= htmlspecialchars((string) ($auxiliaryTeam['name'] ?? 'Equipo auxiliar'), ENT_QUOTES, 'UTF-8') ?></h4>
</div>
</div>
<p class="team-card-summary"><?= htmlspecialchars((string) ($auxiliaryTeam['summary'] ?? ''), ENT_QUOTES, 'UTF-8') ?></p>
<ul class="team-list">
<?php foreach (($auxiliaryTeam['activities'] ?? []) as $activity): ?>
<li><?= htmlspecialchars((string) $activity, ENT_QUOTES, 'UTF-8') ?></li>
<?php endforeach; ?>
</ul>
</section>
</div>
<?php if (($branch['featured_staff'] ?? []) !== []): ?>
<section class="featured-team">
<div class="featured-heading">
<p class="branch-kicker branch-kicker-highlight">Reconocimiento</p>
<h4>Funcionarias de planta con trayectoria destacada</h4>
</div>
<div class="featured-grid">
<?php foreach (($branch['featured_staff'] ?? []) as $person): ?>
<article class="featured-card" data-reveal>
<?php renderTeamMedia((array) $person, 'person'); ?>
<div class="team-card-body">
<p class="team-card-role"><?= htmlspecialchars((string) $person['role'], ENT_QUOTES, 'UTF-8') ?></p>
<h5 class="team-card-name"><?= htmlspecialchars((string) $person['name'], ENT_QUOTES, 'UTF-8') ?></h5>
<p class="team-card-summary"><?= htmlspecialchars((string) $person['summary'], ENT_QUOTES, 'UTF-8') ?></p>
<ul class="team-list">
<?php foreach (($person['activities'] ?? []) as $activity): ?>
<li><?= htmlspecialchars((string) $activity, ENT_QUOTES, 'UTF-8') ?></li>
<?php endforeach; ?>
</ul>
</div>
</article>
<?php endforeach; ?>
</div>
</section>
<?php endif; ?>
</div>
</article>
<?php endforeach; ?>
</div>
</section>
</main>
<?php include __DIR__ . '/includes/piepagina.php'; ?>
<script src="js/main.js" defer></script>
<script src="js/quienes-somos.js" defer></script>
</body>
</html>