Segunda ola de implementaciones masivas con agentes paralelos para funcionalidades avanzadas de SEO, accesibilidad y contenido especializado. **Issue #17 - Imágenes responsive con srcset/WebP/AVIF:** - inc/image-optimization.php: 8 nuevas funciones para optimización - Soporte WebP/AVIF con detección de servidor - Srcset y sizes automáticos contextuales - Lazy loading inteligente (excluye LCP) - Threshold 2560px para big images - Picture element con fallbacks - Preload de featured images - Calidad JPEG optimizada (85%) - Dimensiones explícitas (previene CLS) - 14 filtros WordPress implementados - Beneficios: 30-50% reducción con WebP, 50-70% con AVIF - Core Web Vitals: Mejora LCP y CLS **Issue #18 - Accesibilidad WCAG 2.1 AA:** - assets/css/accessibility.css: +461 líneas - Focus styles visibles (3px outline) - Screen reader utilities - Touch targets ≥44px - High contrast mode support - Reduced motion support - Color contrast AA (4.5:1, 3:1) - assets/js/accessibility.js: 19KB nuevo - Skip links con smooth scroll - Navegación por teclado en dropdowns - Arrow keys en menús WordPress - Modal keyboard support - Focus management y trap - ARIA live regions - Announcements para screen readers - header.php: ARIA labels en navbar - Actualizaciones JS: Respeto prefers-reduced-motion en main.js, toc.js, header.js - Cumplimiento completo WCAG 2.1 Level AA **Issue #30 - Tablas APU (Análisis Precios Unitarios):** - assets/css/tables-apu.css: 560 líneas - Diseño sin bordes, moderno - Zebra striping (#f8f9fa/#ffffff) - Headers sticky con degradado azul - 4 tipos de filas: normal, section-header, subtotal, total - Fuente monospace para columnas monetarias - Responsive (scroll horizontal móvil) - Print styles con color-adjust: exact - inc/apu-tables.php: 330 líneas, 6 funciones - apus_process_apu_tables() - Procesamiento automático - Shortcodes: [apu_table], [apu_row type=""] - apus_generate_apu_table($data) - Generación programática - 4 métodos de uso: data-apu, shortcode, clase manual, PHP - docs/APU-TABLES-GUIDE.md: Guía completa de usuario - docs/APU-TABLE-EXAMPLE.html: Ejemplo funcional - 6 columnas: Clave, Descripción, Unidad, Cantidad, Costo, Importe - CRÍTICO: Contenido principal del sitio de construcción **Issue #31 - Botones de compartir en redes sociales:** - inc/social-share.php: 127 líneas - apus_get_social_share_buttons() - Genera HTML - apus_display_social_share() - Template tag - 5 redes: Facebook, X/Twitter, LinkedIn, WhatsApp, Email - URLs nativas sin JavaScript de terceros - Encoding seguro, ARIA labels - assets/css/social-share.css: 137 líneas - Animaciones hover (translateY, scale) - Colores específicos por red - Responsive (576px, 360px) - Focus styles accesibles - single.php: Integración después del contenido - Bootstrap Icons CDN (v1.11.3) - Panel de opciones con configuración **Issue #33 - Schema.org completo (5 tipos):** - inc/schema-org.php: 468 líneas, 7 funciones - Organization schema con logo y redes sociales - WebSite schema con SearchAction - Article schema (posts) con autor, imagen, categorías, wordCount - WebPage schema (páginas) con featured image - BreadcrumbList schema (8 contextos diferentes) - JSON-LD format en <head> - Referencias cruzadas con @id - Google Rich Results compliant - Deshabilita schemas Rank Math/Yoast (evita duplicación) - Locale: es-MX - Hook: wp_head (prioridad 5) **Archivos Modificados:** - functions.php: Includes de nuevos módulos (schema-org, apu-tables, social-share) - inc/enqueue-scripts.php: Enqueue de nuevos CSS/JS, Bootstrap Icons CDN - inc/image-optimization.php: 8 funciones nuevas WebP/AVIF - assets/css/accessibility.css: +461 líneas - assets/js/main.js, toc.js, header.js: Reduced motion support - single.php: Social share buttons - header.php: ARIA labels - inc/admin/options-api.php: Social share settings **Archivos Creados:** - 3 archivos PHP funcionales (apu-tables, social-share, schema-org) - 1 archivo JavaScript (accessibility.js - 19KB) - 3 archivos CSS (tables-apu, social-share) - 2 archivos docs/ (APU guide y example) - 5 reportes .md de documentación **Estadísticas:** - Total funciones nuevas: 30+ - Líneas de código nuevas: 2,500+ - Archivos nuevos: 13 - Archivos modificados: 10 - Mejoras de accesibilidad: WCAG 2.1 AA compliant - Mejoras SEO: 5 schemas JSON-LD - Mejoras performance: WebP/AVIF, lazy loading, srcset 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
12 KiB
Guía de Tablas APU (Análisis de Precios Unitarios)
Descripción
Las tablas APU son el contenido principal del sitio Análisis de Precios Unitarios. Este módulo proporciona estilos profesionales específicos para la industria de la construcción, incluyendo:
- Sin bordes: Diseño limpio y moderno
- Zebra striping: Filas alternadas para mejor legibilidad
- Headers sticky: Encabezados fijos al hacer scroll
- 4 tipos de filas especiales:
thead: Encabezado con degradado azul.section-header: Secciones (Material, Mano de Obra, Herramienta, Equipo).subtotal-row: Subtotales con fondo azul claro.total-row: Costo Directo final con degradado azul
- Responsive: Scroll horizontal en móviles
- Print styles: Optimizado para impresión
Métodos de Uso
Método 1: Atributo data-apu (Automático)
La forma más simple. Solo agrega el atributo data-apu a tu tabla y el sistema la procesará automáticamente:
<table data-apu>
<thead>
<tr>
<th scope="col">Clave</th>
<th scope="col">Descripción</th>
<th scope="col">Unidad</th>
<th scope="col">Cantidad</th>
<th scope="col">Costo</th>
<th scope="col">Importe</th>
</tr>
</thead>
<tbody>
<!-- Encabezado de sección -->
<tr class="section-header">
<td></td>
<td>Material</td>
<td class="c3"></td>
<td class="c4"></td>
<td class="c5"></td>
<td class="c6"></td>
</tr>
<!-- Filas de datos -->
<tr>
<td>AGRE-016</td>
<td>Agua potable</td>
<td class="c3">m3</td>
<td class="c4">0.237500</td>
<td class="c5">$19.14</td>
<td class="c6">$4.55</td>
</tr>
<!-- Subtotal -->
<tr class="subtotal-row">
<td></td>
<td>Suma de Material</td>
<td class="c3"></td>
<td class="c4"></td>
<td class="c5"></td>
<td class="c6">$2,956.51</td>
</tr>
<!-- Total final -->
<tr class="total-row">
<td></td>
<td>Costo Directo</td>
<td class="c3"></td>
<td class="c4"></td>
<td class="c5"></td>
<td class="c6">$3,283.52</td>
</tr>
</tbody>
</table>
Método 2: Shortcode [apu_table]
Envuelve tu tabla con el shortcode:
[apu_table]
<table>
<thead>...</thead>
<tbody>...</tbody>
</table>
[/apu_table]
Método 3: Clase .analisis (Manual)
Envuelve manualmente tu tabla con un div:
<div class="analisis">
<table>
<thead>...</thead>
<tbody>...</tbody>
</table>
</div>
Método 4: Shortcode [apu_row] para filas especiales
Para facilitar la creación de filas especiales:
[apu_table]
<table>
<thead>...</thead>
<tbody>
[apu_row type="section"]
<td></td>
<td>Material</td>
<td class="c3"></td>
<td class="c4"></td>
<td class="c5"></td>
<td class="c6"></td>
[/apu_row]
<!-- Filas normales -->
<tr>...</tr>
[apu_row type="subtotal"]
<td></td>
<td>Suma de Material</td>
<td class="c3"></td>
<td class="c4"></td>
<td class="c5"></td>
<td class="c6">$2,956.51</td>
[/apu_row]
[apu_row type="total"]
<td></td>
<td>Costo Directo</td>
<td class="c3"></td>
<td class="c4"></td>
<td class="c5"></td>
<td class="c6">$3,283.52</td>
[/apu_row]
</tbody>
</table>
[/apu_table]
Clases CSS Disponibles
Para filas (<tr>):
-
section-header: Encabezado de sección- Fondo gris (#e9ecef)
- Texto en mayúsculas
- Color azul oscuro (#1e3a5f)
-
subtotal-row: Fila de subtotal- Fondo azul claro (#d1e7fd)
- Texto en negrita
- Color azul (#0d47a1)
-
total-row: Fila de total final- Degradado azul (#1e3a5f → #2c5282)
- Texto blanco en negrita
- Texto en mayúsculas
Para celdas (<td>):
c3: Columna 3 (Unidad) - centrada, grisc4: Columna 4 (Cantidad) - derecha, monospacec5: Columna 5 (Costo) - derecha, monospacec6: Columna 6 (Importe) - derecha, monospace
Estructura de Columnas
Las tablas APU siguen esta estructura estándar:
| # | Columna | Ancho | Alineación | Fuente |
|---|---|---|---|---|
| 1 | Clave | 150px | Izquierda | Normal |
| 2 | Descripción | Auto (min 300px) | Izquierda | Normal |
| 3 | Unidad | 80px | Centro | Normal |
| 4 | Cantidad | 110px | Derecha | Monospace |
| 5 | Costo | 120px | Derecha | Monospace |
| 6 | Importe | 120px | Derecha | Monospace |
Secciones Típicas
Las tablas APU generalmente incluyen estas secciones:
- Material: Insumos y materiales de construcción
- Mano de Obra: Personal y cuadrillas
- Herramienta: Herramientas pequeñas
- Equipo: Maquinaria y equipo pesado
Cada sección debe tener:
- Un encabezado de sección (
.section-header) - Filas de datos normales
- Un subtotal (
.subtotal-row)
Al final, una fila de Costo Directo (.total-row) suma todos los subtotales.
Ejemplo Completo
<table data-apu>
<thead>
<tr>
<th scope="col">Clave</th>
<th scope="col">Descripción</th>
<th scope="col">Unidad</th>
<th scope="col">Cantidad</th>
<th scope="col">Costo</th>
<th scope="col">Importe</th>
</tr>
</thead>
<tbody>
<!-- MATERIAL -->
<tr class="section-header">
<td></td>
<td>Material</td>
<td class="c3"></td>
<td class="c4"></td>
<td class="c5"></td>
<td class="c6"></td>
</tr>
<tr>
<td>AGRE-016</td>
<td>Agua potable</td>
<td class="c3">m3</td>
<td class="c4">0.237500</td>
<td class="c5">$19.14</td>
<td class="c6">$4.55</td>
</tr>
<tr>
<td>AGRE-001</td>
<td>Arena en camión de 6 m3</td>
<td class="c3">m3</td>
<td class="c4">0.541500</td>
<td class="c5">$1,750.00</td>
<td class="c6">$947.63</td>
</tr>
<tr>
<td>CEME-001</td>
<td>Cemento CPC 30R gris de 50 kg</td>
<td class="c3">ton</td>
<td class="c4">0.392000</td>
<td class="c5">$5,100.00</td>
<td class="c6">$1,999.20</td>
</tr>
<tr class="subtotal-row">
<td></td>
<td>Suma de Material</td>
<td class="c3"></td>
<td class="c4"></td>
<td class="c5"></td>
<td class="c6">$2,956.51</td>
</tr>
<!-- MANO DE OBRA -->
<tr class="section-header">
<td></td>
<td>Mano de Obra</td>
<td class="c3"></td>
<td class="c4"></td>
<td class="c5"></td>
<td class="c6"></td>
</tr>
<tr>
<td>MOCU-027</td>
<td>Cuadrilla No 27 (1 Albañil + 5 Peones)</td>
<td class="c3">jor</td>
<td class="c4">0.100000</td>
<td class="c5">$2,257.04</td>
<td class="c6">$225.70</td>
</tr>
<tr class="subtotal-row">
<td></td>
<td>Suma de Mano de Obra</td>
<td class="c3"></td>
<td class="c4"></td>
<td class="c5"></td>
<td class="c6">$225.70</td>
</tr>
<!-- HERRAMIENTA -->
<tr class="section-header">
<td></td>
<td>Herramienta</td>
<td class="c3"></td>
<td class="c4"></td>
<td class="c5"></td>
<td class="c6"></td>
</tr>
<tr>
<td>HERR-001</td>
<td>Herramienta menor (5% M.O.)</td>
<td class="c3">%</td>
<td class="c4">5.000000</td>
<td class="c5">$225.70</td>
<td class="c6">$11.29</td>
</tr>
<tr class="subtotal-row">
<td></td>
<td>Suma de Herramienta</td>
<td class="c3"></td>
<td class="c4"></td>
<td class="c5"></td>
<td class="c6">$11.29</td>
</tr>
<!-- EQUIPO -->
<tr class="section-header">
<td></td>
<td>Equipo</td>
<td class="c3"></td>
<td class="c4"></td>
<td class="c5"></td>
<td class="c6"></td>
</tr>
<tr>
<td>EQUI-015</td>
<td>Revolvedora gasolina 1 saco (9 p3)</td>
<td class="c3">hr</td>
<td class="c4">0.800000</td>
<td class="c5">$125.00</td>
<td class="c6">$100.00</td>
</tr>
<tr class="subtotal-row">
<td></td>
<td>Suma de Equipo</td>
<td class="c3"></td>
<td class="c4"></td>
<td class="c5"></td>
<td class="c6">$100.00</td>
</tr>
<!-- TOTAL FINAL -->
<tr class="total-row">
<td></td>
<td>Costo Directo</td>
<td class="c3"></td>
<td class="c4"></td>
<td class="c5"></td>
<td class="c6">$3,293.50</td>
</tr>
</tbody>
</table>
Responsive
Las tablas se adaptan automáticamente a diferentes tamaños de pantalla:
- Desktop (>992px): Vista completa con todos los anchos
- Tablet (768px-991px): Reducción de padding y tamaños de fuente
- Móvil (<768px): Scroll horizontal con ajustes de tamaño
El contenedor .analisis tiene overflow-x: auto para permitir scroll horizontal en pantallas pequeñas.
Impresión
Los estilos están optimizados para impresión:
- Colores forzados con
print-color-adjust: exact - Sin efectos hover
- Prevención de saltos de página dentro de tablas
- Borde agregado para mejor definición en papel
Función Helper PHP
Para generar tablas APU programáticamente desde templates:
<?php
$data = array(
'headers' => array('Clave', 'Descripción', 'Unidad', 'Cantidad', 'Costo', 'Importe'),
'sections' => array(
array(
'title' => 'Material',
'rows' => array(
array('AGRE-016', 'Agua potable', 'm3', '0.237500', '$19.14', '$4.55'),
array('AGRE-001', 'Arena en camión', 'm3', '0.541500', '$1,750.00', '$947.63'),
),
'subtotal' => '$2,956.51'
),
array(
'title' => 'Mano de Obra',
'rows' => array(
array('MOCU-027', 'Cuadrilla No 27', 'jor', '0.100000', '$2,257.04', '$225.70'),
),
'subtotal' => '$225.70'
),
),
'total' => '$3,293.50'
);
echo apus_generate_apu_table($data);
?>
Accesibilidad
- Headers con
scope="col"para lectores de pantalla - Buen contraste de colores (WCAG AA)
- Focus visible para navegación por teclado
- Textos legibles en todos los fondos
Compatibilidad
- ✅ Compatible con Bootstrap 5
- ✅ No requiere JavaScript
- ✅ Funciona en todos los navegadores modernos
- ✅ Optimizado para WordPress Block Editor
- ✅ Compatible con HTML clásico
Archivos del Módulo
- CSS:
wp-content/themes/apus-theme/assets/css/tables-apu.css - PHP:
wp-content/themes/apus-theme/inc/apu-tables.php - Enqueue:
wp-content/themes/apus-theme/inc/enqueue-scripts.php(líneas 297-311) - Carga:
wp-content/themes/apus-theme/functions.php(líneas 243-246)
Notas de Diseño
- Sin bordes: Diseño moderno sin bordes visibles
- Zebra striping: Solo en filas normales, no en especiales
- Fuente monospace: Courier New para columnas monetarias
- Colores profesionales: Paleta azul corporativa
- Hover interactivo: Fondo amarillo claro (#fff3cd)
Soporte
Para más información sobre el desarrollo del tema, consulta:
README.mdTEMPLATES.mddocs/THEME-DOCUMENTATION.md
Creado por Claude Code - Issue #30