Saltar al contenido
menumenu tanreiexpand_morecontrasttranslate
tanreiexpand_more
Primeros pasosWebReactSwiftUIJetpack ComposeFlutterReact NativePreajustesTu propio sistema de diseñoUsar Tanrei con agentes de IAMarcaTokens de diseñoSistemas de diseño y personalizaciónTheme StudioColorTipografíaIconosFormaElevaciónMovimientoEstados de interacciónComportamientoDiseño de páginaAccesibilidadTextosTokens de colorTokens de la escala tipográficaTokens de formaTokens de elevaciónTokens de movimientoTokens de estadoTokens de espacio y de medidaComponentesBotónBotón de acción principalBotón segmentadoGrupo de botonesBotón con menúBarra de herramientasBotón de copiarCasilla de verificaciónBotón de opciónInterruptorChipMenúControl deslizanteCampo de control deslizanteCalendarioDateTimePickerGrupo de camposGrupo de botones de opciónGrupo de casillas de verificaciónSelectCampo de selecciónBarra de menúsSubida de archivosSelector de archivos AvanzadoZona de soltar archivosEntrada de texto AvanzadoCampo de textoCampo de chipsCampoCuadro combinado AvanzadoCampo de cuadro combinadoEntrada numérica AvanzadoCampo numéricoEntrada de color AvanzadoCampo de colorEntrada de código de un solo uso AvanzadoCampo de código de un solo usoEntrada de texto incrustada AvanzadoCuadro de redacción de chatTarjetaDivisorCapa modal AvanzadoDiálogoListaFila de listaHoja inferiorHoja lateralCarruselBloque de códigoTablaPopoverPasosAcordeónLista de descripcionesFiguraEstructura de la aplicaciónCabecera de páginaVista de árbolLínea de tiempoVista previa de imágenesTirador de tamañoMarco redimensionableÁrea de desplazamientoInsigniaIndicador de progresoMedidorContador animadoIndicador de cargaSnackbarTooltipAtajo de tecladoTagCódigo en líneaCalloutAvatarEstado vacíoGrupo de tagsEsqueletoElemento de archivoMuestraTexto en marquesinaPestañasVista de pestañasBarra de la aplicaciónBarra de navegaciónPanel de navegaciónBúsquedaEnlacePaginaciónEnlaces anterior y siguienteIndicador de pasosRuta de navegaciónTabla de contenidoTarjeta de enlaceMenú FABEstadoCómo se construye TanreiCómo contribuirLicencia y atribución
InicioFundamentosAccesibilidad

Accesibilidad

Los requisitos de accesibilidad que Tanrei incorpora en los tokens y en las especificaciones de los componentes, y las comprobaciones que los imponen.

content_copyVer en Markdown

En Tanrei, la accesibilidad es un conjunto de restricciones sobre el propio sistema. La compilación de los tokens se niega a producir un esquema que no cumpla el contraste, y la especificación de un componente no es válida sin su rol, su tabla de teclado y su garantía de objetivo.

Contraste

La compilación de los tokens mide cada esquema, claro y oscuro con contraste estándar, medio y alto, con estos umbrales, y falla cuando un par no los alcanza:

Contenido Contraste estándar y medio Contraste alto
Texto, e iconos dibujados en un color de contenido 4.5:1 7:1
La marca de un estado sobre su propio contenedor tonal 3:1 3:1
Límites y gráficos necesarios para identificar o manejar un control 3:1 3:1
El anillo de foco frente a las superficies adyacentes 3:1 3:1

El texto grande no tiene un umbral más bajo. WCAG acepta menos contraste para el texto a partir de unos 24px en peso normal, o 19px en negrita, pero la compilación exige 4.5:1 a todos los roles de texto, y 7:1 con contraste alto: un rol de color no sabe a qué tamaño se usará.

Los elementos deshabilitados y la decoración pura están exentos, y también lo está la línea fina de outline-variant con el contraste estándar. Esa exención es la razón por la que un borde que es la única señal de un control debe usar outline y no outline-variant.

Invariantes que se imponen

Se cumplen en todos los temas y en todos los niveles de contraste, seis combinaciones en total; de lo contrario, la compilación falla:

  • cada par de roles (X, on-X), y cada rol de texto (on-surface, on-surface-variant, link, el color de una intención) sobre todos los roles de superficie, es de al menos 4.5:1, y de al menos 7:1 en los dos esquemas de contraste alto;
  • el color de cada estado es de al menos 3:1 frente a su propio contenedor tonal;
  • outline es de al menos 3:1 frente a todos los roles de superficie;
  • en el sistema predeterminado, con contraste medio y alto, outline-variant es de al menos 3:1 y 4.5:1 frente a todos los roles de superficie, y outline sigue siendo más fuerte;
  • focus-ring es de al menos 3:1 frente a las superficies.

Las reglas del proyecto prohíben rebajar un umbral para que una comprobación pase.

Tamaño del objetivo

The least sizes of what a person presses. minimum is the least height (and, for an icon-only control, width) anything pressable is drawn at; touch and pointer are the least hit areas, which a control reaches past what it draws where it stands alone.

Token Valor Vista previa
--tanrei-sys-target-minimum 32px
--tanrei-sys-target-pointer 44px
--tanrei-sys-target-spacing 8px
--tanrei-sys-target-touch 48px

Generado a partir de design/tokens/tanrei.light.tokens.json, tokens/sys/measure.tokens.json

El tamaño visual no es el área de pulsación. Un botón pequeño de Tanrei mide 32 unidades de alto, lo adecuado para una barra de herramientas densa, pero sigue respondiendo en al menos 48 unidades para el toque y 44 para un puntero. Los componentes amplían su área de pulsación de forma invisible y mantienen al menos 8 unidades entre objetivos vecinos. Todas las especificaciones declaran esta garantía, y todas las plataformas la prueban.

Foco

Todo componente interactivo muestra el indicador de foco, una separación seguida de un anillo, para el foco del teclado y de la tecnología de apoyo, de inmediato y sin animación. El orden del foco sigue el orden de lectura. Los componentes deshabilitados salen del orden del foco.

Teclado

La especificación de cada componente contiene una tabla de teclas y acciones, que se muestra en su página de documentación, en Accesibilidad. Las plataformas compatibles con teclado físico implementan la tabla con exactitud.

Escalado del texto

Las interfaces deben seguir siendo utilizables con el texto al 200%. Los contenedores crecen con su texto, las etiquetas se dividen en varias líneas antes de truncarse y nada depende de una altura fija para que quepa una línea de texto. Las implementaciones nativas usan el mecanismo de texto escalable de cada plataforma.

Movimiento reducido

Cuando el sistema pide reducir el movimiento, la animación espacial se elimina o se sustituye por un fundido breve, y nada se repite en bucle. Consulta Movimiento.

Semántica

Una especificación indica el rol WAI-ARIA del componente y cómo se forma su nombre accesible. Cada plataforma hace corresponder el rol con su equivalente nativo: rasgos de accesibilidad en SwiftUI, propiedades de semántica en Compose y Flutter, accessibilityRole en React Native. En la web, Tanrei prefiere elementos nativos dentro de el shadow root, para que los navegadores y las herramientas de pruebas vean una semántica real.

Cómo se prueba

Plataforma Comprobación automática
Web axe-core en Playwright
SwiftUI auditoría de accesibilidad de XCTest
Compose comprobaciones de Accessibility Test Framework
Flutter comparadores meetsGuideline
React Native aserciones de rol y de etiqueta, además de auditorías nativas mediante la aplicación de galería

Nota

Las comprobaciones automáticas detectan una minoría de los problemas reales. Son un mínimo. Usa un lector de pantalla y un teclado con todo lo que construyas con estos componentes.