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).
36 lines
1.5 KiB
CSS
36 lines
1.5 KiB
CSS
/* ─── /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; }
|