GH GambleHub

Biblioteca de componentes de Gamble Hub UI

1) Objetivos y principios

Por qué: acelerar la entrega de fich, proporcionar un UX consistente y simplificar el soporte.

Principios:
  • Semántica y neutralidad. El componente resuelve un problema de IU sin fusionar la lógica empresarial.
  • A11y-by-default. Roles, anillos de enfoque, atributos aria y contraste - cosidos en componentes.
  • i18n-first. Longitudes de fila, formatos numéricos, RTL - tomar en cuenta fuera de la caja.
  • Temización. Temas claros/oscuros y acentos de marca a través de tokens.
  • Escalabilidad. APIs unificadas, estabilidad de versiones menores, migración a mayor.

2) Bases: tokens de diseño (fundación)

Ejemplo de estructura (fuente JSON/YAML → build en CSS variables/Android/iOS):
json
{
"color": {
"text": { "default": "{palette. neutral. 900}", "muted": "{palette. neutral. 600}", "inverse": "{palette. neutral. 0}" },
"surface": { "default": "{palette. neutral. 0}", "elevated": "{palette. neutral. 50}", "brand": "{palette. brand. 50}" },
"accent": { "primary": "{palette. brand. 600}", "success": "{palette. green. 600}", "warning": "{palette. amber. 600}", "error": "{palette. red. 600}" }
},
"space": { "xs": 4, "sm": 8, "md": 12, "lg": 16, "xl": 24 },
"radius": { "sm": 8, "md": 12, "lg": 16, "full": 999 },
"elevation": { "0": "none", "1": "0 1px 2px rgba(0,0,0,.08)", "2": "0 4px 12px rgba(0,0,0,.12)" },
"motion": { "fast": "120ms", "base": "200ms" },
"opacity": { "disabled": 0. 45, "muted": 0. 7 }
}

Reglas: tokens semánticos (por ejemplo, 'color. accent. success ') son utilizados por los componentes; paleta - interior.

3) Categorías de componentes

1. Базовые (Primitives): Button, Icon, Typography, Link, Badge, Divider, Avatar.
2. Формы: Input, PasswordInput, NumberInput, Select, Combobox, DatePicker, Checkbox, Radio, Switch, Slider, Textarea, FileUpload.
3. Navegación: AppBar, Tabs, Breadcrumbs, Pagination, Drawer/Sidebar, Stepper.
4. Фидбек: Alert, InlineError, Tooltip, Toast, Snackbar, Modal, Popover, Skeleton, Progress, StatusDot.
5. Datos y tablas: Table, DataList, Card, Accordion, Tag, EmptyState.

6. iGaming-especificidad:
  • GameTile (tarjeta del juego)
  • ProviderBadge
  • JackpotTicker
  • LiveBadge (live-table/show)
  • LobbyFilters (proveedor/género/límite)
  • BonusBanner / BonusCard
  • MissionProgress / AchievementBadge
  • TournamentLeaderboard
  • WalletCard / BalanceWidget
  • PaymentMethodCard
  • DepositForm / WithdrawalForm
  • KYCStatusBadge / KYCChecklist
  • ResponsibleGamingBanner / LimitsControl
  • AgeGate / SessionTimer / RiskAlert
  • SystemStatus / MaintenanceBanner

4) Página del componente: contenido obligatorio

Asignación y cuándo usar/no utilizar.
Composición y opciones. Dimensiones, estados, modificadores.
API. Props, eventos, ranuras, modos controlados/no controlados.
A11y. Roles, enfoque, conexiones aria, regiones en vivo.
i18n. Longitudes, formatos, firmas localizables.
Microcopy. Textos recomendados (CTA, pistas, errores).
Ejemplos de código. Casos típicos, casos edge (errores, descarga, en blanco).
Pruebas. Matriz visual/unit/interaction/A11y.
Ejemplos anti. Frecuentes errores de uso.

5) Componentes clave: especificaciones rápidas

5. 1 Button

Opciones: 'primary | secondary | ghost | destructive' Dimensiones: 'sm | md | lg'

Estados: normal, hover, focus-visible, active, loading, disabled

A11y: focus-ring visible, 'aria-busy' en 'loading', 'aria-pressed' para toggle

Microcopy: acción + objeto (Guardar cambios, Pasar verificación)

Anti-ejemplo: «OK»

5. 2 Input / Field

Composición: label, campo, helper, error, prefix/suffix

A11y: `aria-invalid`, `aria-describedby`, связка `for/id`

Patrón de errores: qué no es así + cómo corregir («Escriba el número en formato + 380»...)

Ranuras: 'prefix' (icono), 'suffix' (botón 'mostrar contraseña')

5. 3 Select / Combobox

Características: búsqueda por lista, teclado, virtualización de listas largas

A11y: `role="combobox"`, `aria-expanded`, `aria-activedescendant`

Resultados vacíos: "No se ha encontrado nada. Cambie la consulta"

5. 4 Modal / Drawer

Reglas: trap focus, cierre por ESP/overlay, devuelve el enfoque al iniciador

Uso: confirmaciones de pago, reglas de bonificación, pasos KYC

5. 5 Toast / Snackbar

Tiempo: 2-4 s, sin bloqueo de flujo

Regiones en vivo: 'aria-live =' polite 'para el éxito,' assertive 'para los errores

Ejemplos: "Pago aceptado. Balance actualizado"

5. 6 EmptyState

Plantilla: contexto + valor + CTA + CTA secundario

Ejemplo: "Los juegos favoritos aparecerán aquí cuando agregues el primero. [Añadir a Favoritos"

6) Componentes iGaming: específico y API

6. 1 GameTile

Asignación: tarjeta de juego en el lobby/directorio.
Composición: portada, proveedor, etiquetas (New/Hot/Jackpot/Live), RTP (opt.) , acción rápida.

API (ejemplo):
ts
<GameTile title="Lightning Roulette"
provider="Evolution"
tags={["Live","Popular"]}
isJackpot={true}
onPlay={...}
onFavToggle={...}
/>

Estados: hover (inicio rápido), skeleton, no disponible (región/hora).
A11y: texto alt, inicio de teclado, 'aria-label =' Juega a la ruleta de luz '.

6. 2 LobbyFilters

Propósito: filtros de lobby (género, proveedor, límites, volatilidad).
Fichas: preajustes guardados, restablecimiento de filtros, contador de resultados.
Microcopy: «Filtros», «Restablecer filtros», «Encontrado: 128».

6. 3 BonusBanner / BonusCard

Opciones: bienvenida, reload, cashback, freespins, torneo.
Campos: título, condiciones, fecha de caducidad, CTA («Activar bonificación»).
A11y: las referencias a las condiciones son legibles, 'aria-describedby' → los detalles de las condiciones.
Anti-patrón: ocultar las restricciones clave.

6. 4 JackpotTicker

Asignación: la suma de ejecución del jackpot con AutoUpdate.
API: origen de datos, período de actualización, formato de moneda.
A11y: 'role = «status»', no alterar la legibilidad por parte del screenrider.

6. 5 TournamentLeaderboard

Composición: tabla de posiciones, puntos, premios, temporizador, posición propia.
Fichi: paginación/virtualización, anclando su línea.
A11y: 'th '/' scope', columnas legibles, navegación con flechas.

6. 6 WalletCard / BalanceWidget

Campos: saldo, fondos bloqueados, saldo de bonificación, moneda.
Acciones: «Reponer», «Sacar», «Historia».
Seguridad: ocultar/mostrar la cantidad, enmascarar en zonas comunes.

6. 7 PaymentMethodCard

Campos: logo del proveedor, límites, comisiones, ETA, accesibilidad regional.
Estados: no disponible (región/estado), en procesamiento, advertencia de límites.
Microcopy: «La comisión del 1,5% la tiene el proveedor», «El pago es de hasta 15 minutos».

6. 8 DepositForm / WithdrawalForm

Patrones: validación en línea, límites de suma, regla de same-method con sugerencias.
A11y: declarar errores ('assertive'), traducir el foco al primer error.
Campos de servicio: «Fuente de fondos», «Asignación» si se requiere AML.

6. 9 KYCStatusBadge / KYCChecklist

Estados: 'none | basic | extended | rejected | pending'.
Textos: «Tardará ~ 2 minutos», «Foto sin resplandor, ángulos y texto visibles».
CTA: "Pasar la verificación", secundaria: "¿Por qué es importante? ».

6. 10 LimitsControl / ResponsibleGamingBanner

Propósito: límites de depósitos/apuestas/tiempo, interrupciones, auto-exclusión.
A11u/Tono: neutral, sin presión, con referencia a la referencia.

7) Patrones de diseño (Recipes)

Registro/CUS: Stepper + Form + InlineError + PageAlert + SuccessToast.
Депозит: PaymentMethodCard + AmountInput + LimitsHint + ConfirmModal + StatusToast.
Лобби: SearchBar + LobbyFilters + GameGrid (из GameTile) + Pagination + EmptyState.
Турнир: TournamentLeaderboard + MissionProgress + BonusBanner.
Juego responsable: ResponsibleGamingBanner + LimitsControl + FAQ-link.

8) Accessibility (A11y)

Foco visible siempre (incluyendo en el tema oscuro).
Navega por el teclado a través de todos los elementos interactivos.
'aria-live =' polite/assertive '' para tostadas/estados.
Los contrastes no son inferiores a WCAG 2. 1 AA.
El texto en los iconos no es el único medio de significado.
Modos RTL, comprobación de 320 px y legibilidad en voz alta.

9) Localización y formatos

Todas las cadenas personalizadas - a través de i18n-keys.

Ejemplo de claves:

ui. button. save = Save wallet. deposit. success = Payment accepted. Balance updated.
kyc. photo. hint = Photo without glare, corners and text are visible.
filters. reset = Reset filters

Formato de fecha/moneda - utilidades, no cadenas.
El tono en los idiomas es a través de tone-map (neutro/compatible/oficial).

10) Performance y calidad

Virtualización de listas (juegos, tablas).
Carga perezosa de ilustraciones, spliting de código por páginas.
Dimensiones de la banda: presupuesto para el paquete de IU, sin dependencias pesadas.
Skeleton para la percepción de la velocidad, spinners - mínimo.
Pruebas: yunite, snapshots visuales, interaction, A11y, E2E para flow crítico.

11) Versificación y lanzamientos

SemVer: patch - bugs; minor - no destructivo; major - con migraciones.
Notas de lanzamiento: tokens/API/comportamiento, capturas de pantalla antes/después.
Depresiones: marcas en el muelle, códigos de moda y reglas linter.
Storybook/Playground: ejemplos en vivo, panel de accesibilidad, toggle RTL.

12) Contributing (contribución)

RFC a un nuevo componente: el problema → las variantes → la decisión escogida → A11y → i18n → API → los riesgos.
Lista de cheques PR: dock, stories, pruebas, snapshots visuales, contrastes, i18n, dark/RTL.
Definición de Don: componente + documentación + pruebas + ejemplos de patrones.

13) Conjunto de MVP y hoja de ruta

MVP (primera entrega):
  • Button, Input, Select, Checkbox, Radio, Switch, Modal, Toast, Tooltip, Progress, Skeleton, Card, EmptyState, Tabs, Pagination, Breadcrumbs, Table, GameTile, LobbyFilters, BonusBanner, WalletCard, PaymentMethodCard, DepositForm, KYCStatusBadge.

Далее: TournamentLeaderboard, JackpotTicker, MissionProgress, LimitsControl, SystemStatus, Drawer/Sidebar, DatePicker, Combobox, FileUpload.

14) Ejemplos de microcopia (insertos terminados)

CTA: «Guardar cambios», «Pasar la verificación», «Añadir método de pago».

Errores: "Formato de fecha incorrecto. Use DD. MM. GGG. ", "El archivo es demasiado grande (máx. 10 MB)"

Éxito: "Se acepta el pago. Balance actualizado. «, «¡Listo! Los documentos han sido verificados"

Estados vacíos: "Por "{query}" no se encontró nada. Restablezca los filtros o refine la solicitud"

15) Anti-patrones

Lógica de negocio dentro de los componentes de IU (rompe la sobreusabilidad).
Enfoque invisible o dependencia del significado sólo del color.
Líneas cosidas en el código de componentes (sin i18n).
Infracción de la semántica (botón en 'amb', listas sin 'ul/ol/li').
Variantes sin reglas claras (reproducción de 'ButtonPrimaryBlueBig2').

16) Hojas de cheques

Componente anterior a la versión:
  • Se describe la asignación, opciones, API.
  • A11y: rol, enfoque, atributos aria, contraste.
  • i18n: todas las líneas han sido emitidas, idiomas largos y RTL probados.
  • Stories/demo: normal, descarga, errores, vacío.
  • Pruebas: unit + visual + interaction + A11y.
  • No hay lógica de negocio, sólo IU/comportamiento.
Patrón (composición):
  • Hay un esquema de componentes y un orden de enfoque.
  • Microcopy y textos de error/éxito definidos.
  • Métricas clave medidas (conversión de paso, error rate, time-to-complete).

17) Esqueleto de documento para el componente (plantilla)

Título y destino

Cuándo utilizar/no utilizar

Opciones y estados

API (props, eventos, ranuras)

Accesibilidad (rol, teclado, aria, contraste)

i18n (claves, formatos, longitudes, RTL)

Microcopy (ejemplos)

Ejemplos de código (tipo y edge)

Matriz de prueba

Anti-ejemplos

Gamble Hub UI no es solo un conjunto de bloques, sino una disciplina: tokens → componentes → patrones → documentación → métricas. Siguiendo este gaida, los equipos entregan fiches más rápidamente, los usuarios obtienen una interfaz predecible y accesible, y el producto se escala sin deuda visual. Si es necesario, recopilaré las primeras páginas del muelle mediante un conjunto MVP con ejemplos y claves i18n.

Contact

Póngase en contacto

Escríbanos ante cualquier duda o necesidad de soporte.¡Siempre estamos listos para ayudarle!

Iniciar integración

El Email es obligatorio. Telegram o WhatsApp — opcionales.

Su nombre opcional
Email opcional
Asunto opcional
Mensaje opcional
Telegram opcional
@
Si indica Telegram, también le responderemos allí además del Email.
WhatsApp opcional
Formato: +código de país y número (por ejemplo, +34XXXXXXXXX).

Al hacer clic en el botón, usted acepta el tratamiento de sus datos.