# aura-demo

A standalone, interactive gallery of the AURA framework. It requires no separate application, Internet server or connected devices.

```sh
cmake --preset dev
cmake --build build/dev --target aura-demo
build/dev/examples/demo/aura-demo
```


```sh
aura-demo --page media
aura-demo --language en                   # the entire gallery in English
aura-demo --dynamic                       # same pages from .aura instead of generated C++
aura-demo --render-all /tmp/aura-demo      # eight PNGs, without a window or GPU
aura-demo --page motion --animate --wait 500 --render /tmp/motion.png
aura-demo --remote 8808                   # 127.0.0.1 only, /remote/screenshot.png etc.
```

`--list` displays page names. With `AURA_EXAMPLES=OFF`, the example is not built. `aura-net`, `aura-script`, and WebView are included according to the existing build options. Missing modules are indicated on the network page; the corresponding buttons are disabled. WebView requires `AURA_WITH_WEBVIEW=ON` and CEF. No remote-control server starts by default. The network page's HTTP test uses its own local server on an available port.

| Page | Examples |
|---|---|
| Widgets | Button, disabled state, CheckBox, Switch, RadioButton, ComboBox, Slider, ProgressBar, direct element bindings |
| Text input | TextField, UTF-8, focus, masked input, character filter, maximum length, Enter, three real Keyboard layouts |
| Graphics & text | Rect, Gradient, border, individual corners, scaling/rotation/opacity, text wrapping, fit, font weight, underline, character spacing, RichText, Html, four Image fill modes, Svg, QrCode, Context translation |
| Layouts & data | Item, Column, Row, Grid, grow/stretch, anchors, RTL, wrapping, horizontal/vertical scrolling, records, repeat, if, LazyRepeat with 2,000 entries |
| Animations | state/when, bindings, animate, enter/exit, loop, spin, pressSink, glow, Ripple, Popover |
| Media | VP9/WebM through VideoPlayer/VideoNode, real Rive animation, raster image/SVG, EAN-13, and QR |
| Runtime & devices | TaskRunner/latest/cancellation, timer/pause, Property/Subscription, JSON/YAML/XML, TAR round trip, child process with timeout, date/time, system data, UeventMonitor, SCSI MediumWatcher, and usbmuxd monitoring |
| Network & scripts | HttpClient, Server/WebApp, HTTPS with a temporary local CA (with/without trust), session access, SHA-256, AES-GCM and tamper detection, JS/Lua sharing a native function and time limit, optional WebView/WebChannel; remote controller through `--remote` |

Components, signals, state properties, and Theme/Context language features are used throughout. The scene tree and input are inspectable through remote control (`nodes.json`, `actions.json`, `keypress.json`, `click.json`, `screen.mjpg`). Headless tests operate real widgets and check asynchronous responses in compiled and dynamic modes. Hardware monitoring only starts when its button is pressed; no media are mounted, ejected, or written. The other examples remain usable without devices. The example showcases the module groups, rather than every overload of every C++ helper.

## Sources

- Presentation: `ui/*.aura`, with reusable components in `common.aura`.
- Application and navigation: `demo.cpp`, `demo_context.h`, `main.cpp`.
- Responses/API examples: `controls.cpp`, `showcase.cpp`, `runtime.cpp`, `network.cpp`.
- Local assets: `assets/`; provenance and licenses in `assets/NOTICE`. The DejaVu test font comes from `../../tests/fonts`, with its license there.
- Tests: `smoke.cpp`, CTest `aura_demo_compiled` and `aura_demo_dynamic`.

Language switching translates navigation, pages, and status messages through `assets/en.json`. It rebuilds the current example page and resets its demonstration state. Workers receive an immutable translation snapshot.
