GH GambleHub

Selección de controles: checkbox, switch, radiocopiadora

1) Diferencias clave (significado, no «dibujo»)

kontrolLo que significaCuándo aplicarAplicación del efecto
CHekboksHabilitar/excluir configuración o opción. Puede ser una elección independiente o múltiple. Admite tri-state. Listas de opciones, filtros, concordancias. Puede seleccionar varios. Normalmente diferido (por «Guardar»), pero válido al instante si el efecto es local y reversible.
Sweet (interruptor)Cambio del estado actual del sistema/función que debe cambiar inmediatamente y ser visualmente visible. Encendido/desactivado funcionalidad, estados, notificaciones, modo en vivo. Instantánea y aparentemente; sin «Guardar» adicional.
Ventanas de radioOpciones mutuamente excluyentes de un solo conjunto. Exactamente uno está seleccionado siempre (o después de la selección). Modos, formatos, unidades, ordenaciones. Normalmente se aplica inmediatamente; para cambios complejos - por «Aplicar».
Regla:
  • Necesito uno de N - tomar la radio.
  • Necesitas cualquier conjunto de banderas - casillas de verificación.
  • Se necesita un tumbler binario que cambie el comportamiento inmediatamente - un switch.

2) Árbol de decisiones (corto)

1. ¿Unas elecciones independientes? → Checkboxes.
2. ¿Exactamente una variante del conjunto? → Radiocomunicaciones (o segmento-control/tegles).
3. Una bandera binaria, el efecto es instantáneo y notable? → Switch.
4. ¿Necesita una marca «parcial» (subconjunto)? → Checkbox con tri-state.
5. El riesgo/costo es alto (pago, moderación)? → Radio/cheques + confirmación (no switch).

3) Comportamiento y expectativas del usuario

Sweet = resultado instantáneo. Después de cambiar, el usuario espera un efecto inmediato y reversibilidad sin «Guardar» individual.
Checkbox = selección de opciones. Puede aplicarse inmediatamente o con un botón: es importante mostrar explícitamente el modelo («Ajustes guardados »/« Haga clic en Guardar»).
Radio = selección de modo. La transición puede reconstruir la interfaz. Señalice los cambios (micro animación/texto).

4) Estados y semántica visual

Normal / Hover / Focus / Active / Disabled / Error. Contraste de texto e indicadores ≥ AA.
Tri-state (checkbox): vacío/parcial/seleccionado. El estado parcial no es licuado en sí mismo - el clic cambia a «seleccionado» en lugar de «vacío».
Sweet: tiene una clara distinción de «encendido/apagado» por el color y la posición del «runner». El color no es el único portador de significado (icono/etiqueta cercana).

5) Copyright y firmas

Verbo + objeto o afirmación que se convierte en verdad cuando se selecciona.

Checkbox: «Recibir notificaciones por correo electrónico».
Sweet: «Notificaciones: Encendido/Apagado» (etiqueta a la izquierda, estado a la derecha o en el propio switch).
Radio: «Formato de coeficientes: Decimal/Fraccionario/Americano».
Evitar las dobles negaciones: «No desconectar...» - confuso.

Para actividades de riesgo, agregue una descripción secundaria: "On. apuestas rápidas (sin confirmación): se puede cancelar dentro de 5 segundos"

6) Disponibilidad (A11y) y teclado

Checkbox: 'role = «checkbox»', 'aria-checked =' true 'false' mixed '', Space - switch.
Sweet: nativo '<input type = «checkbox»>' con visual sweet o 'role = «switch»' con 'aria-checked'. Comportamiento como el de la caja de verificación (Space).
Radio: 'role =' radiogroup '' en el contenedor, 'role =' radio 'en los elementos, flechas ↑/↓ o ←/→ - mover la selección, Space/Enter - confirman.
Grupos: utilice 'fieldset '/' legend' para el contexto general.
Los anillos de enfoque se dejan visibles; las dimensiones de las zonas de clic ≥ 44 × 44 px por tach.

Snippets:
html
<! -- Radio Group -->
<fieldset role="radiogroup" aria-labelledby="odds-format">
<legend id = "odds-format "> Odds format </legend>
<label><input type="radio" name="odds" value="decimal" checked> Десятичный</label>
<label><input type="radio" name="odds" value="fractional"> Дробный</label>
<label> <input type = "radio" name = "odds" value = "american"> American </label>
</fieldset>

<! -- Checkbox (tri-state via aria) -->
<div role = "checkbox" aria-checked =" mixed" tabindex =" 0" id = "cb "> Notify about tournaments </div>

<! -- Switch (role = "switch") -->
<button role="switch" aria-checked="false" aria-labelledby="live-title" class="switch" id="live">
<span class="switch__knob"></span>
</button>
<span id = "live-title "> Live updates </span>

7) Cambios y errores asíncronos

Sweet + Network: conmutar → una IU optimista a la vez → confirmar el servidor → al fallar, retroceder suavemente y mostrar la razón.
Checkbox/radio en «Guardar»: hasta que no haya confirmación - no cambie el comportamiento global.
Acciones arriesgadas: confirmación (modalka) o panel undo durante 5-10 segundos (si el reglamento lo permite).

js
//Optimistic for switch const sw = document. getElementById('live');
sw. addEventListener('click', async ()=>{
const prev = sw. getAttribute('aria-checked') === 'true';
sw. setAttribute ('aria-checked', String (! prev)) ;//instantly try {
const r = await fetch('/api/live', { method:'POST', body: JSON. stringify({ enabled:!prev })});
if(!r.ok) throw new Error();
} catch {
sw. setAttribute('aria-checked', String(prev));     // откат
//show the toast "Failed to enable live"
}
});

8) Patrones móviles

El switch es el control binario principal en la configuración en los móviles.
La radio puede ser reemplazada por el control segmented para 2-4 opciones (mejor golpear con el dedo).
Checkbooks en las listas - con un área de clic grande y soporte de multi-juego rápido.

9) Patrones de agrupación y diseño

Radio: lista vertical (mejor escaneado), para 2-3 variantes - segmentos en una línea.
Casillas de verificación: alineación de una columna; para listas largas - «Seleccionar todas» + tri-estado en el grupo.
Sweet: etiqueta a la izquierda, control a la derecha en una línea; muestre el estado actual con texto si es necesario (Activado/Desactivado).

10) Antipattern

Sweet que no aplica cambios de inmediato (requiere «Guardar»).
Ventanas de radio donde las opciones múltiples son posibles.
Checkbox para las opciones mutuamente excluyentes («Hombre/Mujer» como dos checkbox).
Sweet binario para una acción irreversible peligrosa (eliminar datos).
Dos negaciones en el texto.
Cambiar el diseño en caso de error para que se pierda el enfoque.

11) Especificidad de iGaming (ejemplos)

Formato de coeficiente: grupo de radio «Decimal/Fraccionario/Americano» - aplicado inmediatamente y almacenado en el perfil.
Apuesta rápida: Sweet «Apuestas rápidas (sin confirmación)» con una descripción explícita y undo durante 5-10 segundos después de cada operación.
Suscripciones/notificaciones: cheques por tipo de evento (ganancias, torneos, depósitos). La casilla de verificación de grupo «Seleccionar todo» es tri-state.
Actualizaciones de coeficientes en vivo: Sweet «Live-mode» con optimismo y retroceso en caso de error de red.
Límites del juego responsable: números de radio para períodos (día/semana/mes) + margen de suma; confirmación del límite modificado con la entrada «a partir de mañana».

12) Tokens del sistema de diseño (ejemplo)

json
{
"checkbox": { "size": 20, "radius": 4, "gap": 8 },
"radio": { "size": 20, "dot": 10, "gap": 8 },
"switch": { "width": 44, "height": 24, "knob": 20, "padding": 2 },
"focusRing": { "width": 2, "offset": 2 },
"motion": { "toggleMs": 140, "ease": "cubic-bezier(0. 2,0,0. 2,1)" },
"a11y": { "contrastAA": true }
}
Presets CSS (concepto):
css
.control { display:flex; align-items:center; gap:8px; min-height:36px; }
.switch { width:44px; height:24px; padding:2px; border-radius:999px; background:var(--bg-muted); position:relative; }
.switch[aria-checked="true"]{ background:var(--accent); }
.switch__knob{ position:absolute; width:20px; height:20px; border-radius:50%; left:2px; top:2px; transition: transform. 14s cubic-bezier(.2,0,.2,1); background:#fff; }
.switch[aria-checked="true"].switch__knob{ transform: translateX(20px); }
.control:focus-visible{ outline:2px solid var(--focus); outline-offset:2px; }

13) Snippets de lógica UX

Tri-state «Seleccionar todo»:
js function updateMaster(master, items){
const total = items. length, checked = items. filter(i=>i. checked). length;
master. indeterminate = checked>0 && checked<total;
master. checked = checked===total;
}
Grupo de radio con teclado (flechas):
js const radios = [...document. querySelectorAll('[role="radio"]')];
let i = radios. findIndex(r => r. getAttribute('aria-checked')==='true');
document. addEventListener('keydown', e => {
if(!['ArrowRight','ArrowDown','ArrowLeft','ArrowUp'].includes(e. key)) return;
e. preventDefault();
const dir = (e. key==='ArrowRight'          e. key==='ArrowDown')? 1: -1;
i = (i + dir + radios. length) % radios. length;
radios. forEach(r => r. setAttribute('aria-checked','false'));
radios[i].setAttribute('aria-checked','true');
radios[i].focus();
});

14) Métricas y experimentos

Misclick rate y undo-frecuencia a través de los suéteres.
Tiempo hasta la selección y error de validación por grupos de radio.
Compartir «Seleccionar todo» y comparar con la selección manual (velocidad, precisión).
A/B: redacción de etiquetas, orden de opciones, segmented vs radio, «aplicar inmediatamente» vs «en el botón».

15) QA-check-list

Significado y elección

  • El control se ajusta a la tarea (caja de cheques múltiple →; una de radio N →; binario instantáneo → switch).
  • Hay confirmación/undo para acciones de riesgo.

Disponibilidad

  • Roles correctos ('checkbox '/' switch '/' radiogroup '/' radio'), 'aria-checked '/' indeterminate'.
  • Los anillos de enfoque son visibles, las flechas funcionan en el grupo de radio, Space cambia la caja de verificación/switch.

Comport

  • Switch aplica los cambios inmediatamente; en caso de error - retroceso y mensaje.
  • Tri-state en «Seleccionar todo» es correcto; los clics de la etiqueta funcionan.

Visual

  • Contraste ≥ AA; el estado no se transmite sólo por el color.
  • Zonas de clic ≥ 44 × 44 px; el orden y la alineación son estables.

Móviles

  • Control segmented para 2-4 opciones de radio probado para el tach.
  • Golpear con el dedo y desplazarse no entran en conflicto.

16) Documentación en el sistema de diseño

Componentes: 'Checkbox', 'Switch', 'RadioGroup '/' SegmentedControl'.
Tokens de tamaño/animación/enfoque, ejemplos de redacción.
Patrones: «Seleccionar todo» (tri-estado), «Aplicación instantánea», «Undo después del riesgo».
Do/Don 't-gallery: sweet de retención diferida (don' t), radio en lugar de checkbox (don 't), segmentos para conjuntos cortos (do).

Resumen breve

La elección del control es acerca del significado y las expectativas: la caja de verificación es banderas y grupos independientes, el switch es la función de encendido/apagado instantáneo, la radio es exactamente una opción del conjunto. Mantenga la disponibilidad, piense en los estados asíncronos y el copyright, y los usuarios cambiarán con confianza la configuración sin errores ni sorpresas.

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.