aura-gui 0.1.0

UI nativa acelerada por GPU para escritorio, Android e iOS, en un solo crate: estilo tipo Tailwind, componentes, sombras, animaciones y agentes de IA. Reposo a cero. Licencia AGPL-3.0 o comercial.
docs.rs failed to build aura-gui-0.1.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

Aura UI

Interfaces nativas aceleradas por GPU para macOS, Windows, Linux, Android e iOS con un solo código en Rust. Estilo encadenado con los nombres de Tailwind, componentes tipo shadcn, sombras por capas y animaciones, pensado para gastar poco: poca RAM, casi nada de CPU en reposo y binarios pequeños.

cargo add aura-gui

Un solo crate con un módulo por capa: aura_ui::core (entidades, tareas, geometría, color, animación y capa de sistema), ::gpu (renderizador), ::view (elementos, estilo, layout), ::widgets (componentes), ::app (ventana y bucle) y ::ai (agentes de IA; feature ai, activa por defecto: default-features = false la quita).

use aura_ui::prelude::*;

struct Contador { clics: u32 }

impl Render for Contador {
    fn render(&mut self, cx: &mut ViewContext<Self>) -> AnyElement {
        div()
            .size_full().flex_col().items_center().justify_center().gap_4()
            .bg(Token::Canvas).text_color(Token::Text)
            .child(div().p_6().rounded_lg().bg(Token::ElevatedSurface).shadow_md().child(format!("Clics: {}", self.clics)))
            .child(Button::new("Sumar").variant(ButtonVariant::Primary).on_click(cx.listener(
                |this: &mut Contador, _: &ClickEvent, cx| { this.clics += 1; cx.notify(); },
            )))
            .into_element()
    }
}

// Genera `main` en escritorio e iOS y `android_main` en Android.
aura_ui::main!(AppOptions::new("Contador"), |window| window.set_root(Contador { clics: 0 }));

Sombras y animaciones

div().shadow_lg()                                              // presets xs, sm, md, lg, xl, 2xl
div().shadow(Shadows::one(BoxShadow::new(0., 4., 6.).spread(-1.)).with(BoxShadow::new(0., 12., 24.)))  // capas
div().glow(Token::Accent, 16.0)                                // resplandor de color

let x = cx.transition("panel", if abierto { 180.0 } else { 0.0 }, Animation::new(ms(600)).easing(Easing::SPRING));
let t = cx.animate("pulso", Animation::new(ms(900)).ping_pong());
let c = cx.animate_between("fondo", Animation::new(ms(500)).easing(Easing::STANDARD), rojo, azul);

Curvas: Linear, EaseIn, EaseOut, EaseInOut, CubicBezier(..) (como CSS) y Spring { bounce }. Con retraso, repetición y ida y vuelta. Una animación solo pide frames mientras corre.

Eficiencia

Medido en macOS arm64 con el ejemplo contador, build release:

Memoria (huella) 25 MB
CPU en reposo 0,00 s en 20 s
Binario 7,0 MB (macOS) · 6,1 MB (iOS) · 4,2 MB (iOS con opt-level = "s" y LTO completo)

Cómo lo logra: el bucle duerme hasta que hay entrada, un temporizador o una animación; no pinta si no se ve; usa la GPU de bajo consumo con un solo frame en cola; suelta cachés al pasar a segundo plano o ante un aviso de poca memoria; las sombras son una sola primitiva analítica en el shader, sin pasadas de desenfoque.

Perfil recomendado para tus apps móviles:

[profile.release]
opt-level = "s"
lto = "fat"
codegen-units = 1
panic = "abort"
strip = "symbols"

Móvil

Ver docs/movil.md del repositorio. Resumen: iOS compila para aarch64-apple-ios y el simulador; Android para aarch64-linux-android con NativeActivity. Toque, deslizar con inercia, pulsación larga, teclado del sistema y área segura están implementados. En iOS, añade el manifiesto UIScene al Info.plist (plantilla en docs/ios/Info.plist; lo exige el SDK de iOS 27). Probado en el simulador de iPhone; aún no en un iPhone ni un Android físicos.

Licencia

Aura UI tiene doble licencia, a tu elección (crates.io muestra la primera; la segunda va incluida en el paquete):

  • AGPL-3.0-only (LICENSE-AGPL, https://www.gnu.org/licenses/agpl-3.0.html): gratis. Si la usas, tu app completa debe publicarse bajo AGPL-3.0 con su código fuente.
  • Licencia comercial (LICENSE-COMMERCIAL.md): para apps de código cerrado. Regalías del 10 % de los ingresos brutos de cada producto que use Aura UI. Para obtenerla escribe a camiloghs1@gmail.com.

Si no tienes la licencia comercial, aplica la AGPL-3.0. Los iconos de src/widgets/svg son de Lucide (ISC), con su aviso en src/widgets/svg/LICENSE-lucide.

Copyright (C) 2026 Camilo Grajales Holguín.