Sobre el proyecto

rui es una biblioteca de interfaz declarativa para Rust diseñada para consolidar los tres pilares del desarrollo web -estructura, estilo y comportamiento- en una sola expresión de Rust. A diferencia de los marcos que dependen de motores de renderizado externos o árboles de dependencias pesados, rui es completamente autocontenido. Incluye su propio parser TrueType, rasterizador de glifos, antialiasing, diseño de texto y escritor PNG, lo que garantiza que una interfaz se renderice de manera idéntica en macOS, Windows, Linux (X11/Wayland) y WebAssembly porque el mismo código dibuja cada píxel. La biblioteca adopta un enfoque funcional donde la vista es una función pura del estado, y los manejadores de eventos son funciones que mutan el estado directamente, eliminando la necesidad de patrones de mutabilidad interna como `Rc` o `RefCell`. La estilo se integra directamente en la cadena de componentes a través de llamadas a métodos (por ejemplo, `.pad()`, `.center()`, `.hover_fill()`), y los colores se definen por roles semánticos (por ejemplo, `Tone::Surface`) que se resuelven contra el tema activo. Esto garantiza una apariencia consistente en modos claros y oscuros sin hojas de estilo separadas. rui sigue una filosofía de "fundamentos, no un catálogo". No incluye widgets complejos preconstruidos como casillas de verificación o deslizadores. En su lugar, proporciona siete primitivas potentes (como `draw`, `on_drag` y `ease`) que permiten a los desarrolladores componer estos controles ellos mismos. Este enfoque garantiza que los componentes de la interfaz de usuario sean personalizables y estén libres de las limitaciones de una biblioteca de widgets rígida. Los elementos integrados como `button`, `text` y `row` son en sí mismos recetas construidas sobre estas primitivas, que sirven como implementaciones de referencia. La accesibilidad es un pilar arquitectónico fundamental. El árbol de elementos se duplica como el árbol de accesibilidad, derivando automáticamente roles, nombres y estados de la estructura de la interfaz de usuario. Esto garantiza que los lectores de pantalla y las tecnologías de asistencia reciban información precisa sin requerir anotaciones manuales. La biblioteca hace cumplir las convenciones de accesibilidad a través de pruebas rigurosas, lo que garantiza que los elementos interactivos tengan identidades adecuadas y que la gestión del enfoque sea coherente. Las pruebas son compatibles con un `Harness` determinista que impulsa la canalización de renderizado real en un entorno sin cabeza. Permite afirmaciones precisas sobre el diseño, la salida de píxeles y los estados de interacción. Se utiliza una fuente de prueba sintética para garantizar que las mediciones de texto sean coherentes en diferentes máquinas, lo que permite pruebas de integración y paridad confiables.