Sobre o projeto

Freya é uma biblioteca GUI nativa, multiplataforma e declarativa para Rust. Ela é voltada para desenvolvedores que criam aplicações desktop em Rust e desejam um modelo de UI baseado em componentes sem depender de tecnologias web. Modelo central: componentes são elementos de UI reutilizáveis que são renderizados novamente quando o estado do qual dependem muda. Componentes podem manter estado interno ou assinar estado compartilhado, e qualquer tipo que implemente a trait Component pode atuar como um componente; o componente raiz do app pode ser uma função simples. Exemplos integrados incluem Button e Switch. Os componentes prontos para uso vão de controles simples como Button, Switch e Slider até outros mais complexos como VirtualScrollView, Calendar e ColorPicker. Arquivos de exemplo com o prefixo component_ na pasta examples os demonstram. Áreas de recursos descritas no README: - Animações: transições para cores, tamanhos e posições, com controle sobre timing, easing e sequências. - Edição de texto rico: gerenciamento de cursor, seleção, atalhos de teclado, formatação personalizada e virtualização. - Editor de código: editor agnóstico de estado usando Rope para texto e tree-sitter para realce de sintaxe; você fornece a gramática e a consulta de realces. Habilitado via o recurso code-editor. - Renderização de Markdown via o componente MarkdownViewer (recurso markdown). - Roteamento e navegação com uma derive Routable, layouts, links e contexto de roteador (recurso router). - Gerenciamento de estado global por meio do freya-radio, um sistema baseado em canais no qual componentes assinam canais e recebem atualizações apenas quando dados relevantes mudam (recurso radio). - Integração com biblioteca de ícones, atualmente com suporte a Lucide. - Testes headless com freya-testing, que pode simular interações e renderizar o estado da UI em arquivos; usado pelo próprio Freya para testar componentes integrados. - Gráficos e plotagem via a biblioteca Plotters (recurso ploters). - Internacionalização usando o sistema de localização Fluent, com traduções, pluralização e troca de locale (recurso i18n). - Modificadores de estilo inspirados no Material Design, como efeitos ripple (recurso material-design). - Integração com WebView para incorporar conteúdo web ao lado da UI nativa (recurso webview). - Emulação de terminal com suporte a PTY para terminais integrados ou clientes SSH (recurso terminal-pty). - Ferramentas de desenvolvedor para inspecionar a árvore de componentes em tempo real (recurso devtools). Uso: a versão estável mais recente é especificada como freya = "0.4", com uma pré-versão 0.5.0-rc.7 e uma opção de branch main. O repositório usa submódulos git, então o clone exige --recurse-submodules ou um git submodule update --init --recursive posterior. Exemplos podem ser executados com cargo run --example counter. Um guia de configuração de desenvolvimento é vinculado na documentação. O README observa um possível problema de compilação no Windows com windows-gnu. O projeto vincula um site, documentação em docs.rs, um servidor no Discord, diretrizes de contribuição e uma página de patrocínio, e dá créditos a Dioxus, rust-skia e outros contribuidores.