Entonces, comenzando con la accesibilidad, algo de lo que finalmente estamos hablando mucho en estos días. No sé ustedes, pero siempre he tenido esta reacción de que siempre pensamos, tendemos a pensar que estamos abordando suficientemente la accesibilidad. Pero luego, de repente, comenzamos a recibir, no sé, algunos tickets o problemas abiertos como, oh, este componente no funciona correctamente con el zoom, o esto no tiene el contraste adecuado, o no sé, el lector de pantalla tiene problemas para leer eso. Entonces, la accesibilidad es complicada de implementar para nosotros. Ese es el punto. Y un ejemplo es, pensemos un poco en las interacciones de presión. Las interacciones de presión pueden ocurrir en diferentes escenarios. Pueden ocurrir en clics de ratón, también pueden ocurrir en toques táctiles, pueden ocurrir cuando presionamos algunas teclas como enter o espacio, e incluso pueden ocurrir en clics virtuales realizados por algunos lectores de pantalla. Y si queremos abordarlos correctamente por nuestra cuenta, tenemos que hacer muchas cosas. Primero, tenemos que usar eventos de puntero cuando estén disponibles, y luego recurrir a eventos de ratón y táctiles. También tenemos que pensar en la selección de texto, por lo que tenemos que desactivarla en algunos escenarios, especialmente en dispositivos móviles cuando estamos presionando cosas. No solo eso, sino que también tenemos que manejar la cancelación de ellos a veces, por ejemplo, en eventos de desplazamiento. Y al final nos encontramos teniendo que normalizar muchas inconsistencias entre navegadores que todavía existen en la actualidad, y así sucesivamente. Sin mencionar el área.
Entonces, si has trabajado en accesibilidad, probablemente estés familiarizado con el área. Pero lo que sucede con el área es que proporciona principalmente semántica. Es como un contrato que debes seguir. Pero generalmente, las implementaciones que tenemos en los navegadores, en toda la plataforma web, carecen de alguna característica, o probablemente no se pueden personalizar lo suficiente, o a veces ni siquiera existe, por lo que depende de ti como desarrollador. Y esa es una tarea increíblemente difícil. Entonces, una de las primeras lecciones que aprendimos fue no gastar mucho tiempo, por ejemplo, discutiendo cómo implementar uno u otro enfoque de enfoque, o navegación por teclado, o investigando el área adecuada para algo. En su lugar, encontrar una biblioteca existente, y tenemos muchas de ellas, que brinde accesibilidad, principalmente, de forma predeterminada, y que se pueda personalizar lo suficiente para que coincida con nuestros tokens, nuestra marca, etc. Y esas bibliotecas generalmente vienen en tres sabores diferentes, o tres capas de abstracción diferentes.
Entonces, tienes primitivas de composición, como React Area y Downshift, y como sugiere el nombre, simplemente las construyes juntas, pero no ofrecen ningún estilo, o nada en absoluto. A veces viene, como Hooks de React que puedes conectar a tus componentes. Luego, tienes, un nivel por encima, los componentes sin estilo, que también se conocen, en la actualidad, como componentes headless, así que es realmente genial, y probablemente hayas oído hablar de ellos en todas partes. Entonces, tenemos Redix, ReachUI, HeadlessUI y Reakit. Y luego, tenemos los componentes completamente estilizados, por lo general, vienen con sistemas de estructura muy, muy poderosos, y tenemos un conjunto de componentes, son opinionados, pero los personalizamos para que coincidan con nuestros tokens de diseño, nuestras marcas, etc., a través de sus poderosos sistemas de estructura. Entonces, lo que debes preguntarte es, qué seguir, qué capa de abstracción o qué biblioteca entre todas estas. Realmente depende del contexto, por supuesto, de tu producto, tu empresa, etc., pero lo que debes tener en cuenta es elegir uno que tenga la accesibilidad como enfoque principal y que también se pueda tematizar y personalizar lo suficiente para que coincida con tus cosas. Por mi experiencia, generalmente he optado por primitivas de composición cuando, digamos, tenemos un sistema de diseño enorme en producción y estamos teniendo muchos problemas con la accesibilidad, tenemos mucho código que hace estilos y ese tipo de cosas.
Comments