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
7
hive-fr0nt/Cargo.toml
Normal file
7
hive-fr0nt/Cargo.toml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
[package]
|
||||
name = "hive-fr0nt"
|
||||
edition.workspace = true
|
||||
version.workspace = true
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
24
hive-fr0nt/assets/base.css
Normal file
24
hive-fr0nt/assets/base.css
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
/* Base palette + typography shared by the hive-c0re dashboard and the
|
||||
hive-ag3nt web UI. Catppuccin Mocha. Per-page stylesheets append on
|
||||
top of this and must NOT redeclare the colour variables — the whole
|
||||
point of pulling them out is one source of truth. */
|
||||
:root {
|
||||
--bg: #1e1e2e; /* base */
|
||||
--bg-elev: #181825; /* mantle */
|
||||
--fg: #cdd6f4; /* text */
|
||||
--muted: #7f849c; /* overlay1 */
|
||||
--purple: #cba6f7; /* mauve */
|
||||
--purple-dim: #45475a;/* surface1 */
|
||||
--cyan: #89dceb; /* sky */
|
||||
--pink: #f5c2e7; /* pink */
|
||||
--amber: #fab387; /* peach */
|
||||
--green: #a6e3a1; /* green */
|
||||
--red: #f38ba8; /* red */
|
||||
--border: #313244; /* surface0 */
|
||||
}
|
||||
body {
|
||||
background: var(--bg);
|
||||
color: var(--fg);
|
||||
font-family: "JetBrains Mono", "Fira Code", "Cascadia Code", "Source Code Pro", monospace;
|
||||
line-height: 1.6;
|
||||
}
|
||||
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