Sobre el proyecto

Freya es una biblioteca GUI nativa, multiplataforma y declarativa para Rust. Está dirigida a desarrolladores que crean aplicaciones de escritorio en Rust y desean un modelo de UI basado en componentes sin depender de tecnologías web. Modelo central: los componentes son elementos de UI reutilizables que se vuelven a renderizar cuando cambia el estado del que dependen. Los componentes pueden mantener estado interno o suscribirse a estado compartido, y cualquier tipo que implemente el trait Component puede actuar como componente; el componente raíz de la aplicación puede ser una función simple. Los ejemplos integrados incluyen Button y Switch. Los componentes listos para usar abarcan desde controles simples como Button, Switch y Slider hasta otros más complejos como VirtualScrollView, Calendar y ColorPicker. Los archivos de ejemplo con el prefijo component_ en la carpeta examples los demuestran. Áreas de funcionalidad descritas en el README: - Animaciones: transiciones para colores, tamaños y posiciones, con control sobre tiempos, easing y secuencias. - Edición de texto enriquecido: gestión del cursor, selección, atajos de teclado, formato personalizado y virtualización. - Editor de código: editor agnóstico del estado que usa Rope para el texto y tree-sitter para el resaltado de sintaxis; tú proporcionas la gramática y la consulta de resaltados. Se habilita mediante la feature code-editor. - Renderizado de Markdown mediante el componente MarkdownViewer (feature markdown). - Enrutamiento y navegación con una derive Routable, layouts, enlaces y contexto de router (feature router). - Gestión de estado global mediante freya-radio, un sistema basado en canales donde los componentes se suscriben a canales y reciben actualizaciones solo cuando cambian los datos relevantes (feature radio). - Integración con bibliotecas de iconos, actualmente compatible con Lucide. - Pruebas headless con freya-testing, que puede simular interacciones y renderizar el estado de la UI a archivos; Freya mismo lo usa para probar componentes integrados. - Gráficos y trazado mediante la biblioteca Plotters (feature ploters). - Internacionalización mediante el sistema de localización Fluent, con traducciones, pluralización y cambio de idioma (feature i18n). - Modificadores de estilo inspirados en Material Design, como efectos ripple (feature material-design). - Integración de WebView para incrustar contenido web junto a la UI nativa (feature webview). - Emulación de terminal con soporte de PTY para terminales integradas o clientes SSH (feature terminal-pty). - Herramientas de desarrollo para inspeccionar el árbol de componentes en tiempo real (feature devtools). Uso: la última versión estable se especifica como freya = "0.4", con una versión preliminar 0.5.0-rc.7 y una opción de rama main. El repositorio usa submódulos de git, por lo que clonarlo requiere --recurse-submodules o ejecutar después git submodule update --init --recursive. Los ejemplos se pueden ejecutar con cargo run --example counter. Hay una guía de configuración para desarrollo enlazada desde la documentación. El README señala un posible problema de compilación en Windows con windows-gnu. El proyecto enlaza un sitio web, documentación en docs.rs, un servidor de Discord, guías de contribución y una página de patrocinio, y da crédito a Dioxus, rust-skia y otros colaboradores.