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.
# 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.

```bash
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).

```rust
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

```rust
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:

```toml
[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.