Saltar al contenido
POLIGES POLIGES Guía de marca · v2.0
Brand style guide · v2.0

POLIGES

Guía visual de la plataforma: logotipo, color, tipografía y los componentes base del panel de administración y la web pública. Todo lo que ves aquí se genera con los mismos tokens que usará la aplicación — cambia a modo oscuro arriba a la derecha, o prueba el tema de un centro, para verlos reaccionar.

POLIGES

Logotipo

Cinco versiones. La elección depende únicamente del fondo: texto Carbón sobre claro, texto blanco sobre oscuro. Los corchetes son siempre azul POLIGES.

logo-black.pngFondo blanco
logo-white.pngFondo Carbón
POLIGES.pngAvatar · favicon · RRSS
logo-min-black.pngSidebar · correos
logo-min-white.pngSidebar oscura · modo oscuro
✕ EvitarSobre azul se pierden los corchetes

Colores

Tres colores de marca y escalas derivadas. Los componentes nunca usan un hex directamente: consumen tokens semánticos (--primary, --surface, --border…).

#00AEEF · brand-500Azul POLIGESPrimario · acciones · acentos
#242424 · ink-900CarbónTexto · fondos oscuros
#FFFFFF · ink-0BlancoSuperficies · texto sobre oscuro

Brand

Ink (neutros)

Estados

Semánticos de plataforma: mismos colores en todos los centros salvo que un centro los sobrescriba (colors.md §9.2). Escalas completas 50–950; cada estado se consume con seis tokens.

Success · success-600
Texto Carbón sobre sólido (4,71:1)
Confirmado, pagado, dentro
Warning · warning-500
Texto Carbón sobre sólido (7,23:1)
Pendiente, aforo al límite
Danger · danger-600
Texto blanco sobre sólido (4,83:1)
Error, cancelado, exceso
Info · sigue a primary
Cambia con el tema del centro
Información neutra, reembolsos

Tokens semánticos

Lo único que usan los componentes. Los valores se leen en vivo: cambian con el modo oscuro y con el tema del centro.

Contraste (WCAG 2.1)

MuestraCombinaciónRatioResultado
ReservarCarbón sobre azul (botón primario)6,14:1AA
ReservarCarbón sobre brand-400 (hover)7,78:1AAA
ReservarCarbón sobre brand-300 (pulsado)9,19:1AAA
Ver detallebrand-700 sobre blanco (enlaces)5,69:1AA
201 / 200Azul sobre Carbón6,14:1AA
Texto secundarioink-500 sobre el fondo de la app (ink-50)4,97:1AA
FocoAnillo brand-600 sobre ink-503,54:1≥ 3:1
PagadoCarbón sobre success-6004,71:1AA
Texto azulAzul sobre blanco2,53:1No apto para texto
ReservarBlanco sobre azul2,53:1No usar
PagadoBlanco sobre success-6003,30:1No usar

Tema por centro

Cada centro elige sus semillas y el sistema deriva el resto con contraste garantizado (colors.md §9). Elige un preset o un color: toda la página se re-tematiza en claro y oscuro.

Semilla primaria

El tema se inyecta como un bloque <style> con :root y .dark, igual que hará el layout de la aplicación.

Tema POLIGES (valores fijos ajustados a mano).

Par validadoClaroOscuroMínimo

Derivación simplificada para la guía (OKLCH en el navegador). La aplicación resuelve y valida el tema en el servidor al guardarlo. Esta demo solo cambia la semilla primaria; neutros y estados del centro siguen las mismas reglas.

Tipografía

Instrument Sans para toda la interfaz (ya configurada en el proyecto). Archivo expandida, opcional, para titulares de la web pública por su parecido con el logotipo. Cifras siempre tabulares.

Display · Archivo 700Reserva tu pista
text-3xl · 6001.284 reservas
text-2xl · 600Reservas
text-lg · 600Ocupación de hoy
text-base · 400Las entradas emitidas durante el día pueden superar el aforo simultáneo.
text-sm · 400/500Pista de Pádel 2 · Pádel Dobles · 18:00 – 19:30
text-xs · 500Actualizado hace 2 minutos
mono · códigoPLG-7K3Q-9XWA

Botones

Un único componente <Button> con variantes y tamaños. Una sola acción primaria por pantalla.

Variantes

primary · dark · secondary · ghost · link · destructive

Tamaños y estados

sm · md · lg · icono · cargando · deshabilitado

Foco visible: anillo --ring de 2 px separado 2 px del botón (prueba con la tecla Tab). Con un tema de centro, todos los botones y estados de esta página cambian solos.

Formularios

Todos los campos se componen con <FormField>: etiqueta, control, ayuda y error siempre en el mismo orden y con el mismo espaciado.

Visible en la web pública.
El aforo debe ser mayor que 0.
Solo SUPERADMIN puede cambiarlo.
€
Permitir cancelaciones

Badges, alertas y avisos

El color comunica estado. Siempre acompañado de texto (nunca solo color).

Confirmada Pendiente de pago Cancelada Completada No presentada Expirada Nueva SLOT TICKETED Socio
Calendario 2027 publicadoLas reservas para la nueva temporada se abrirán el 1 de diciembre.
Reserva confirmadaSe ha enviado el correo de confirmación al titular.
Aforo al 92 %Quedan 16 plazas libres en la Piscina Municipal.
No se pudo enviar el correoLa reserva sigue confirmada. Reintentar envío

Aviso persistente de incidencias

Toast, vacío y carga

Entrada validada
PLG-7K3Q-9XWA · 10:42
No hay reservas para hoy

Crea una reserva manual o cambia la fecha.

Datos: KPIs, tabs y tablas

Inspirado en la captura de referencia del dashboard: superficies blancas, bordes finos, cabeceras grises suaves, tabs con contador y paginación limpia.

Reservas hoy
128
▲ 12 % vs. semana pasada
Ingresos del mes
8.420 €
▲ 4,3 %
Ocupación pistas
76 %
Cancelaciones
6
▼ 2 más que ayer

Tabla de reservas

Todas 248
Confirmadas 201
Pendientes 31
Canceladas 16
TitularRecursoFechaHorarioEstadoImporteAcciones
LM
Lucía Martínez
lucia@correo.es
Pista de Pádel 112/11/202618:00 – 19:30Confirmada18,00 €
JR
Javier Ruiz
Invitado
Piscina Municipal12/11/2026Día completo · 4 entradasPendiente de pago14,00 €
AG
Ana García
Socia
Campo Fútbol Sala13/11/202620:00 – 21:00Cancelada40,00 €
PS
Pedro Sánchez
pedro@correo.es
Pista de Tenis10/11/202609:00 – 10:00Completada10,00 €

Componentes de dominio

Piezas propias de POLIGES construidas sobre los componentes base: ocupación, advertencia de exceso de aforo, cuadrícula de franjas y entrada con QR.

Ocupación · Piscina Municipal
120 / 200
80 plazas libres · 342 entradas emitidas hoy
Ocupación · Natación
7 / 8
1 plaza libre en la franja actual
Ocupación · Piscina Granja
201 / 200
Exceso autorizado +1
Disponibilidad · jueves 12

Libre · seleccionada · ocupada · bloqueada · pocas plazas

Pista 1Pista 2Pista 3Natación 09:0012 €OcupadaBloq.5/8 10:3012 €15 €Bloq.1/8 12:00Ocupada15 €12 €8/8 18:0012 €Ocupada12 €3/8

Entrada individual

POLIGES POLIGES
Piscina Municipal Granja
Sábado 14 de noviembre · Entrada 2 de 4
PENDINGPLG-7K3Q-9XWA
PENDINGINSIDEFINISHEDCANCELLED

Layout del panel

Shell de admin.poliges.com: sidebar con selector de centro arriba, navegación con indicador de marca, cabecera con migas, acción «+» y menú de usuario, franja de avisos y página con título + acción primaria. Sin buscador global ni campana en el MVP. Es intercambiable: las páginas no conocen esta estructura (UI/design.md §4 y UI/components.md §5).

Variante

Rol

Regiones y medidas

Sidebar256 px · colapsada 72 px · drawer 288 px (móvil)
Header64 px (56 px en móvil) · sticky
Avisos persistentesmáx. 2 visibles + «+N más»
Cuerpomáx. 1440 px (default) · wide · full · scroll del documento

Selector de centro

Dice dónde estás operando. Tarjeta en la sidebar y, al abrirla, buscador, recientes y lista agrupada por tenant. SUPERADMIN ve todos los centros en una lista única, con filtro de tenant y la entrada «Plataforma». Reglas en UI/design.md §4.8 y contrato en UI/components.md §5.7.

Perfil del usuario

Disparador

Panel abierto (interactivo)

Estado del panel

Escribe para filtrar (sin distinguir tildes: prueba «almoradi» o «piscina»), usa ↑ ↓ y Enter, o pulsa un centro. Los centros desactivados no se pueden elegir salvo SUPERADMIN.

Móvil y sidebar colapsada

Móvil · hoja inferior390 px
Colapsada · popover a la derecha72 px

Dashboards

Tres composiciones de un mismo catálogo de tarjetas: cada una exige un permiso y se muestra solo si el usuario lo tiene. Plataforma, centro · gestión y centro · operativa. Reglas en UI/design.md §5.1 y piezas en UI/components.md §13.

Variante

Periodo

Tamaño

Estado

Datos de ejemplo del Polideportivo Granja. «Hoy» es el día del centro. Sin ingresos de semana o mes ni gráficos de series: eso llega con los informes (POL-173). Las tarjetas «en vivo» se refrescan con usePoll (ocupación 15 s; próximas reservas y cobros 30 s).

Plataforma: tenants, centros y dominios

Administración estructural, exclusiva de SUPERADMIN. Es la zona de mayor impacto: las acciones de estado van siempre en un diálogo con resumen de impacto, nombre y motivo. Reglas en UI/design.md §5.2 y piezas en UI/components.md §14.

Configuración, deportes y recursos

La zona de trabajo diario de INSTITUCION: reglas del centro con herencia visible, modalidades habilitadas y pistas. Reglas en UI/design.md §5.3 y piezas en UI/components.md §15. El editor del tema está en Tema por centro.

Calendarios y tarifas

Cuándo se puede reservar y a qué precio: temporadas, perfiles de día, horas de inicio, duraciones y tarifa base con excepciones. Reglas en UI/design.md §5.4 y piezas en UI/components.md §16. Datos del ejemplo de funcional §18.3: se publica el borrador de «Pádel 2027» y, una vez publicado, cada cambio se revisa antes de aplicarse.

Reservas: listado, calendario y reserva manual

El trabajo diario de RESERVAS: buscar, ver, cobrar y cancelar, y crear reservas en taquilla. La reserva y su cobro son hechos distintos y se muestran con dos insignias. Reglas en UI/design.md §5.5 y piezas en UI/components.md §17. Ahora = martes 9/03/2027, 17:00; los precios salen del calendario de «Pádel 2027».

Control de acceso y lector QR

Validar entradas, recibir un grupo y registrar salidas definitivas. Centro activo: Polideportivo Granja. Jornada simulada: 9/03/2027. Diseño en UI/design.md §5.6; contratos en UI/components.md §18.

Controles de simulación

Datos en memoria, sin cámara ni conexión real. Reiniciar repone las reservas de esta demostración.

Ocupación y advertencias de aforo

Panel de solo lectura: cuánta gente hay, cuánto queda por vender y qué excepciones se han autorizado hoy. Comparte datos con la demo de Control de acceso: valida o registra una salida allí y vuelve aquí. Diseño en UI/design.md §5.7; contratos en UI/components.md §19.

Controles de simulación

Datos en memoria. El refresco automático de 15 s está simulado; también puedes forzarlo.

Bloqueos e incidencias

Cerrar disponibilidad sin cancelar reservas por sorpresa: el bloqueo calcula las reservas afectadas, abre una incidencia y el personal las gestiona. Usa las reservas de la demo de Reservas: cancelar aquí se refleja allí. Cambia el rol en los controles: Bloqueos exige blocks:manage (INSTITUCION). Diseño en UI/design.md §5.8; contratos en UI/components.md §20.

Controles de simulación

Datos en memoria. «Reiniciar» repone bloqueos, incidencias y las reservas de ejemplo.

Usuarios y accesos

Personal del panel (alta por invitación, alcance por centro y deporte, suspensión sin borrado), socios del centro con importación CSV y matriz de permisos. Cambia el actor en los controles: SUPERADMIN lo ve todo; INSTITUCION solo gestiona RESERVAS dentro de su ámbito. Diseño en UI/design.md §5.9; contratos en UI/components.md §21.

Controles de simulación

Datos en memoria; no se envía ningún correo. «Reiniciar» repone la demo.

Pagos y caja

Caja del día de solo lectura, cobros pendientes, devoluciones y métodos de pago del centro con su pasarela. Comparte los movimientos con las demos de Reservas y Bloqueos: cobra o devuelve allí y mira aquí. Cambia el rol en los controles: RESERVAS solo ve lo suyo; la pasarela solo la edita SUPERADMIN. Diseño en UI/design.md §5.10; contratos en UI/components.md §22.

Controles de simulación

Datos en memoria; no se cobra ni se imprime nada de verdad. «Reiniciar» repone la demo.

Web pública · Portada del centro

Primera pantalla de un centro: cabecera, hero, modalidades, servicios y normas, información práctica y pie. La reserva vive en páginas propias (POL-029 a POL-031). Prueba el tema del centro, el idioma, la sesión, los datos en vivo opcionales y los estados. Diseño en UI/design.md §6.2; contratos en UI/components.md §23.

Controles de la maqueta

Web pública · Flujo de reserva SLOT

Cuatro pasos desde la franja hasta la confirmación: franja, datos, pago y confirmación. Hasta pulsar «Confirmar» solo existe un borrador; las reservas gratuitas o en efectivo se confirman aquí y las de tarjeta o Bizum se entregan al paso de pago (POL-207). Prueba el registro del centro, los métodos, el invitado y los errores simulados. Diseño en UI/design.md §6.4; contratos en UI/components.md §25.

Controles de la maqueta

Web pública · Flujo de compra de entradas

Compra de varias entradas de la piscina (día completo) o de natación (plazas por horario): día, horario, entradas por tipo, datos, pago y confirmación. Las entradas no se emiten siempre al confirmar: gratuitas al confirmar, en efectivo al cobrar en taquilla y online al confirmarse el pago. Los tipos de entrada son una dimensión nueva de la tarifa. Diseño en UI/design.md §6.5; contratos en UI/components.md §26. Las demos del panel aún no muestran los tipos.

Controles de la maqueta

Web pública · Acceso y cuenta

Iniciar sesión, crear cuenta, recuperar la contraseña, verificar el correo, vincular reservas de invitado y aceptar la invitación del personal. Mismas pantallas en la web de un centro (con su tema) y en el panel (marca POLIGES, sin registro libre). Cuentas de prueba: lucia@correo.es / Contrasena-2027x (web) y marta@granja.es / Panel-segura-2027 (panel). Diseño en UI/design.md §6.6; contratos en UI/components.md §27.

Controles de la maqueta

Web pública · Pago online y resultados

Lo que ocurre tras «Confirmar y pagar»: página de pago con cuenta atrás (hora del servidor), cambio tarjeta ↔ Bizum sin reiniciar el plazo, redirección a la pasarela y todas las pantallas de resultado: verificando, confirmado, rechazado, caducado, pago tardío con y sin franja libre, resultado incierto y reapertura del enlace. La pasarela y la notificación firmada se simulan con los controles. Diseño en UI/design.md §6.7; contratos en UI/components.md §28.

Controles de la maqueta

Web pública · Mi cuenta: reservas, entradas y cancelaciones

Listado con pestañas y contadores, detalle con la política y su fecha límite, cancelación según el caso (pago online, efectivo pendiente, efectivo cobrado, fuera de plazo, deshabilitada, pendiente de pago y entradas sueltas), mis entradas y «Mi cuenta» (datos, correo, contraseña, socio y solicitudes de datos). Acceso con sesión, como invitado con enlace firmado o sin sesión. Diseño en UI/design.md §6.8; contratos en UI/components.md §29.

Controles de la maqueta

Web pública · Entradas y códigos QR

Vista de las entradas de una reserva: QR grande, código legible, tipo, día y estado (válida hoy, otro día, dentro, salida registrada, cancelada, caducada); carrusel y lista, pantalla completa y PDF A4 simulado. Solo ver y descargar: no hay compartir. El QR es un patrón simulado y no se puede escanear; el real es POL-132. Se dibuja siempre en negro sobre blanco, también en modo oscuro. Diseño en UI/design.md §6.9; contratos en UI/components.md §30.

Controles de la maqueta

Responsive

Un componente, un comportamiento adaptable: la estructura cambia con el ancho del contenedor, igual que lo hará la aplicación con sm: y lg:. Móvil < 640 · tablet 640–1023 · escritorio ≥ 1024. Detalle por componente en UI/components.md §11 y reglas comunes en UI/design.md §7.

Tabla → tarjetas
Móvil: una tarjeta por fila. Tablet: columnas prioritarias. Escritorio: tabla completa.
Resumen → barra inferior
Móvil y tablet: barra fija con total y «Continuar». Escritorio: columna lateral fija.
Diálogo → hoja inferior
Móvil: hoja con asa y botones apilados. Resto: diálogo centrado.

Las demos usan @container para mostrar los tres tamaños a la vez en esta página; en la aplicación los saltos son los breakpoints de Tailwind. Objetivos táctiles de 44 px en móvil y tablet, 40 px en escritorio. Los marcos de escritorio y tablet hacen scroll horizontal en pantallas estrechas.

Estados de interfaz

Toda vista define cómo se ve cargando, vacía, con error y con éxito, no solo cuando todo va bien. Reglas en UI/design.md §8; componentes en UI/components.md §12.

Carga

Carga inicial · tabla

Esqueleto con la forma real: cabeceras reales, filas ficticias.

TitularRecursoHorarioEstado

Carga inicial · KPI y tarjeta

Aparece tras ~200 ms y dura al menos ~400 ms.

Recarga · cambio de filtro

El contenido anterior se mantiene atenuado; la tabla no se vacía.

TitularRecursoHorarioEstado
Lucía MartínezPista 118:00Confirmada
Javier RuizPiscinaDíaPendiente

Acción en curso

Botón con spinner y deshabilitado, sin cambiar de ancho. El resto sigue usable.

Operación larga · progreso

Texto de lo que ocurre y valor determinado.

Importando socios… 62 de 100

Vacío

Aún no hay recursos

Crea la primera pista para empezar a recibir reservas.

Inicial

Ninguna reserva coincide con «Pista 9»

Prueba con otro criterio o quita los filtros.

Sin resultados

Este centro no tiene deportes habilitados

Solo un SUPERADMIN puede habilitarlos.

Ver quién puede hacerlo

Por permisos o configuración

Errores recuperables y parciales

Reserva confirmada · correo pendienteNo hemos podido enviar el correo de confirmación. La reserva sigue confirmada. Reintentar envío
Esta franja acaba de ocuparseHemos actualizado la disponibilidad. El resto de tu selección sigue siendo válida.

Páginas de error

403
No tienes acceso a esta página

Si crees que es un error, pide acceso a tu administrador.

404
No encontramos lo que buscas

La página no existe o ya no está disponible.

500
Algo ha ido mal por nuestra parte

Ya estamos en ello. Puedes reintentarlo.

Incidencia · 7f3a-91c2
419
La página ha caducado

Recárgala e inténtalo de nuevo. Conservamos lo que escribiste.

429
Demasiados intentos

Espera 28 s antes de volver a probar.

503
Servicio no disponible

Volvemos en unos minutos. Contacta con el centro si es urgente.

Retención de plaza

Pago · tiempo restante

13:42
Tu plaza está reservada mientras completas el pago.
Quedan 01:58Completa el pago antes de que se libere tu plaza.
Tu reserva ha expirado

Hemos liberado la plaza porque no se completó el pago a tiempo.

Formularios

Estados de un campo

El aforo debe ser mayor que 0.
Solo SUPERADMIN puede cambiarlo.
Se puede copiar.
Comprobando disponibilidad…

Resumen de errores

Aparece con más de tres errores; cada enlace lleva al campo y el foco va al primero.

Contraseña

Mostrar u ocultar y requisitos visibles antes de escribir.

  • Al menos 8 caracteres
  • Una letra y un número
  • Un carácter especial (opcional)

Flujo por pasos

Vuelta atrás sin perder datos y resumen siempre visible.

✓Fecha y hora
2Tus datos
3Pago
4Confirmación

Toasts

Reserva guardada
Pista 2 · 18:00
Columna oculta
Puedes volver a mostrarla.

Éxito e información: 4 s. Error: hasta cerrarlo. Se pausan con foco o puntero encima. Los textos de ejemplo son orientativos; en la aplicación salen de claves de traducción.

POLIGES · Brand style guide v2.0 · Noviembre 2026 · Ver también BRAND/colors.md, UI/design.md y UI/components.md