Volver a la wiki

Módulo KB (Esferic): glosario flotante accesible + tema oscuro

Resumen

Módulo public/informes/_kb/ que centraliza la identidad visual de Esferic Labs en los reportes estáticos: tema oscuro unificado y un sistema de “glosa” (glosario flotante) que marca acrónimos y términos técnicos con tooltips accesibles de bajo impacto.

El globo flotante reutilizable (kb-tip) aparece al pasar el ratón o enfocar con teclado sobre cualquier <abbr data-kb="...">, escapando contenedores recortados mediante position: fixed. Apagable por página (<html data-kb-off>) o globalmente (KB_ENABLED = false).

Componentes

kb.css (111 líneas)

Paleta oscura derivada del tema del workspace (globals.css), calibrada para lectura larga sin deslumbrar:

kb.js (100 líneas)

Comportamiento del glosario:

Integración en reportes

Ambos reportes (roast/ y storm/) ahora incluyen:

<link rel="stylesheet" href="/informes/_kb/kb.css" />
<script src="/informes/_kb/kb.js" defer></script>

Y marcan términos específicos con <abbr data-kb="...">:

Además, ambos reportes aplican tema oscuro forzado:

Decisiones de diseño

  1. Un único tooltip (DOM reuse): en lugar de crear un globo por término, reutiliza una instancia única (tip), lo que reduce overhead y evita conflictos de z-index.

  2. Position: fixed + viewport clamping: el globo puede vivir dentro de cualquier contenedor (iframe, scroll, overflow:hidden) sin ser recortado. Se recalcula posición al medir su tamaño real (no usa valores hardcodeados).

  3. Low-impact visual: el subrayado punteado + color --kb-accent-ink 60% es visible sin ser invasivo. Respeta prefers-reduced-motion.

  4. Apagado granular: KB_ENABLED permite desactivar globalmente sin editar HTML, y <html data-kb-off> permite excepción por página.

  5. Accesibilidad nativa: role="tooltip", tabindex="0" automático, focus-visible con outline, cierre con Escape, sin dependencias de ARIA adicional compleja.

Extensibilidad

El módulo es agnóstico: cualquier página del workspace puede importarlo añadiendo las dos líneas de <link> y <script>, y luego marcar sus propios términos con <abbr data-kb="...">. Caso de uso típico:

Véase también

Subir