//! Shared frontend assets for the hive-c0re dashboard and the hive-ag3nt //! per-container web UI. Both surfaces live in different binaries (and //! different containers at runtime) but should feel like one product — //! same colour tokens, same terminal-style live stream, same compose-box //! ergonomics. Keeping the CSS + JS in one crate is the dumbest way to //! make that true: both binaries `include_str!` from //! `hive_fr0nt::assets::*` instead of growing their own copy. //! //! There is no Rust code beyond these `const` re-exports. The crate is a //! container for text files and a place to write down the contract //! between the two surfaces. //! //! Conventions for sharing: //! - **CSS variables** live in [`BASE_CSS`] (colour palette, typography). //! Page-specific stylesheets append to it; nothing else should declare //! `--bg` / `--purple` / etc. //! - **Terminal pane** (sticky-bottom log + `↓ N new` pill + fade-in //! rows) lives in [`TERMINAL_CSS`] and [`TERMINAL_JS`]. Pages provide //! a kind→renderer map; the JS owns the scroll + backfill + SSE plumbing. //! - **Compose box** (textarea + slash-command palette + sticky //! recipient + `@`-mention autocomplete) lives in [`COMPOSER_JS`]. //! Pages pass a config flagging which features they want; the dashboard //! ships `@`-mentions without slash commands, the agent page ships //! slash commands without `@`-mentions. Both render through the same //! component so the keystrokes, error flashes, and async-form //! behaviour stay identical. //! //! Loading new shared assets: add the file under `assets/`, expose it as //! a `pub const`, and `include_str!` it from whichever //! `dashboard.rs` / `web_ui.rs` route needs it. pub const BASE_CSS: &str = include_str!("../assets/base.css"); pub const TERMINAL_CSS: &str = include_str!("../assets/terminal.css"); pub const TERMINAL_JS: &str = include_str!("../assets/terminal.js"); /// Vendored [marked](https://github.com/markedjs/marked) v4.0.2 UMD bundle. /// Exposes a global `marked` with `.parse(src, opts)` returning HTML. Used /// by the per-agent terminal to render message bodies (`send` / `recv` / /// `ask` / `answer` / assistant text) with basic markdown — paragraphs, /// lists, fenced + inline code, bold/italic, links. Vendored rather than /// CDN-loaded so the per-agent page works on operator machines without /// internet egress (the container itself never fetches it). pub const MARKED_JS: &str = include_str!("../assets/marked.min.js");