//! # holger-ui
//!
//! An operator/admin UI for [holger](https://codeberg.org/nordisk/holger).
//!
//! The UI is built in two layers:
//!
//! * [`data`] — the transport-agnostic **view-model**. It drives the core
//! [`traits::HolgerObject`] API (satisfied by `LocalHolger` for direct,
//! in-process rust calls into holger core, or `RemoteHolger` over gRPC) and
//! turns each response into a plain view struct that exposes `state_json()`.
//! This is the "render-from-data / see-what-the-user-sees as data" law: the UI
//! can be driven and asserted headlessly with no display and no egui. It is
//! the default build and carries the unit tests.
//!
//! * [`app`] (behind the `gui` feature) — the egui presentation, built from
//! [facett](https://codeberg.org/nordisk/facett) components, mirroring the
//! nornir-viz idiom (one blocking core call per UI action on a private
//! current-thread runtime).
//!
//! Both layers are generic over `Arc<dyn HolgerObject>`, so the same UI runs
//! embedded (no network) or against a remote holger server.