scrin-widgets 0.2.2

Scrin-native widgets and Aisling terminal effects for immersive TUIs.
Documentation
# scrin-widgets

`scrin-widgets` is a plug-and-play Rust widget library for building Scrin-style TUIs with Scrin. It ships animated Aisling effects, ambient glyph fields, glowing gauges, and signal panels that can be dropped into a normal Scrin app.

## Install

From this repo:

```toml
[dependencies]
scrin-widgets = { path = "." }
```

Once published to crates.io:

```toml
[dependencies]
scrin-widgets = "0.1"
```

## Quick Use

```rust
use scrin::{Frame, Rect, widgets::{block::{Block, BorderStyle}, Paragraph, Widget}};
use scrin_widgets::{AislingExt, AislingPalette};

fn draw(frame: &mut Frame<'_>, tick: u64) {
    let area = frame.area();
    let palette = AislingPalette::dream();
    let block = Block::new("Aisling")
        .with_borders(BorderStyle::Plain)
        .with_border_color(palette.pulse)
        .with_inner_margin(Rect::ZERO);
    let inner = block.inner(area);
    let buffer = frame.buffer();

    block.render(buffer, area);
    Paragraph::new("any Scrin widget can shimmer")
        .aisling()
        .tick(tick)
        .render(buffer, inner);
}
```

## Included Widgets

`Aisling<W>` wraps any Scrin `Widget` and applies animated shimmer, scanline, and edge-glow effects after the widget renders.

`GlyphRain` renders a deterministic matrix-like field for backgrounds and data streams.

`NebulaGauge` renders a glowing progress meter with a flowing fill.

`SignalPanel` renders a compact status panel with animated signal bars.

`FlickerPanel` renders text with per-character glitch and flicker effects.

`Waveform` renders an animated oscilloscope display (sine, square, sawtooth, triangle waves).

`PulseRing` renders expanding concentric rings from the center of an area.

## Examples

Run a static preview:

```sh
cargo run --example basic
```

Run the animated showcase:

```sh
cargo run --example showcase
```

Run the animated void orchard:

```sh
cargo run --example void_orchard
```

Run the animated starforge panel:

```sh
cargo run --example starforge
```

Press `q` or `Esc` to exit animated examples.