feat(dashboard): add standalone C0R3 page (system tab → its own page)
Carves the dashboard's SYST3M tab content out into a standalone page at /core.html, reached from the H0M3 hub, with a createTabStrip sub-tab strip (default = Rebuild Queue): rebuild queue, meta inputs, kept state, container load. Same minimal-chrome standalone-page pattern as /logs.html (← home back-link + sub-tab nav). This is the additive first step: the new page is its own esbuild bundle that cold-loads /api/state and subscribes to /dashboard/stream for the same live rebuild_queue_changed / meta_inputs_changed / meta_update_running / tombstones_changed events the dashboard uses. The four section renderers are ported from tabs.js; the dashboard's SYST3M tab is left in place and untouched, so this PR cannot regress the existing dashboard. Removing the now-duplicate SYST3M tab + de-duplicating the renderers (into a shared module) + splitting the shared section CSS out of dashboard.css is the deliberate follow-up. core.css imports dashboard.css wholesale (transitional) so the ported sections render identically; dashboard.css does not import common.css so nothing double-loads. build.mjs gains core.js / core.css / core.html entries; no Rust change (hive-c0re serves dist/ via ServeDir, and the /dashboard/stream + /dashboard/history routes are registered ahead of the fallback). Page name "C0R3" is a placeholder pending the operator's pick — trivially renamed (the /core.html URL + the C0R3 label).
This commit is contained in:
parent
8792db9424
commit
be8d97ded7
5 changed files with 683 additions and 3 deletions
36
frontend/packages/dashboard/src/core.css
Normal file
36
frontend/packages/dashboard/src/core.css
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
/* ─── /core.html — C0R3 page ───────────────────────────────────────
|
||||
Standalone page carved out of the dashboard's old SYST3M tab. Same
|
||||
minimal-chrome pattern as /logs.html (a `← home` back-link + a
|
||||
createTabStrip sub-tab strip; base tab + page-header styling comes
|
||||
from @hive/shared via common.css, linked by core.html).
|
||||
|
||||
The four section renderers (rebuild queue, meta inputs, kept state,
|
||||
container load) are ported verbatim from the dashboard, so they emit
|
||||
the exact same class names. Those section-internal rules live in
|
||||
dashboard.css; rather than duplicate the (scattered) blocks here, we
|
||||
@import dashboard.css wholesale — transitional. dashboard.css does
|
||||
NOT @import common.css (it relies on link order), so this doesn't
|
||||
double-load anything; the dashboard-only chrome rules it carries
|
||||
(`body.dashboard-shell`, `.dashboard-chrome`, `.tabbar`) simply match
|
||||
nothing on /core.html. The follow-up that removes the SYST3M tab can
|
||||
split the shared section rules into their own stylesheet. */
|
||||
@import "./dashboard.css";
|
||||
|
||||
body.core-shell {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Fill the header row next to the ← home back-link, same as the logs
|
||||
sub-tab strip. */
|
||||
.core-tabbar {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.core-main {
|
||||
padding: 1.2em 1.5em 2em;
|
||||
}
|
||||
|
||||
/* createTabStrip toggles the native `hidden` attribute on inactive
|
||||
panes; ensure it wins over any inherited display. */
|
||||
.core-pane[hidden] { display: none; }
|
||||
Loading…
Reference in a new issue