hyperhive/frontend/packages/shared/src
Repository files (latest commit first)
Filename Latest commit message Latest commit date
iris 841c697301 frontend: convert themed dialogs to light-DOM custom elements
Pilot for the components-split proposal (mara wants a look at using
custom elements now that we're recent-Firefox-only). Picked the
themed dialog system as the first candidate: most self-contained of
our existing de-facto reusable components (transient, imperative call
sites, no external render-tree coupling), and shared between the
dashboard and per-agent UI already.

<hive-dialog> replaces the manually-built tc-backdrop/tc-box tree in
openDialog — connectedCallback renders, the keydown listener and
click-outside-to-dismiss are owned by the element instead of a
closure, and the outcome is reported via a hive-dialog-close
CustomEvent rather than a hand-rolled resolve callback threaded
through the DOM tree.

<hive-toast> replaces the toast div themedToast built inline —
connectedCallback starts the auto-dismiss timer,
disconnectedCallback clears it (previously a closure-captured
setTimeout handle with no explicit cleanup on early removal).

Both are light DOM (no shadow root) — styling stays exactly where it
already lived, in modal.css's .tc-* classes, imported globally by
both packages' base stylesheets. This was the deliberate call for a
first pilot: shadow DOM would need every shared stylesheet
re-imported per instance (CSS custom properties pierce shadow
boundaries for theming, but plain class rules like .btn don't), which
is real migration cost. Light DOM validates the pattern (lifecycle
encapsulation, less manual event bookkeeping) without paying that
cost; shadow DOM is a drop-in upgrade to these same two classes if a
later pilot wants real style encapsulation.

Public API unchanged (openDialog/themedConfirm/themedPrompt/
themedToast) — every existing call site across dashboard + agent
keeps working with no changes. Verified with a full frontend build.
2026-07-27 20:17:26 +02:00
..
base.css frontend: move shared spinner CSS out of dashboard.css into shared/base.css 2026-07-27 18:32:54 +02:00
chrome.css fix(dashboard): keep the logs ← home link + sub-tabs on one row 2026-06-10 19:51:34 +02:00
colors.css refactor(frontend): base16 theme contract in a swappable colors.css 2026-06-08 21:24:07 +02:00
dom.js frontend: extract themed dialogs + async-form handler to shared, wire agent UI 2026-07-27 18:55:17 +02:00
forms.js frontend: extract themed dialogs + async-form handler to shared, wire agent UI 2026-07-27 18:55:17 +02:00
index.js frontend: add npm workspace scaffold under frontend/ 2026-05-23 14:51:01 +02:00
modal.css frontend: convert themed dialogs to light-DOM custom elements 2026-07-27 20:17:26 +02:00
modal.js frontend: convert themed dialogs to light-DOM custom elements 2026-07-27 20:17:26 +02:00
tabs.css refactor(frontend): add createTabStrip + migrate logs sub-tabs (#1464 step 1) 2026-06-08 22:13:41 +02:00
tabs.js refactor(frontend): add createTabStrip + migrate logs sub-tabs (#1464 step 1) 2026-06-08 22:13:41 +02:00
terminal.css fix(term): flex layout for details summary, fix thinking brain icon column 2026-07-05 12:10:24 +02:00
terminal.js refactor(term): add mutableRow to terminal api, use it for thinking_tokens 2026-07-05 12:39:26 +02:00
theme.css ci: tighten tracker-tag lint to exclude digit-runs glued to a letter (#1555) 2026-06-09 13:42:20 +02:00