hive-fr0nt: scaffold shared frontend-assets crate
This commit is contained in:
parent
1770b51845
commit
7fc3e81062
4 changed files with 65 additions and 1 deletions
32
hive-fr0nt/src/lib.rs
Normal file
32
hive-fr0nt/src/lib.rs
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
//! 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");
|
||||
Loading…
Add table
Add a link
Reference in a new issue