zgui-core is the shared GUI toolkit behind the MenkeTechnologies desktop apps — one canonical implementation of the shell, settings, dialog, table, command-palette and notification chrome so the apps (Audio-Haxor, traderview, ztranslator, zpdf, zemail, zoffice, zreq, ztunnel, zgo, …) stop drifting their own divergent copies. Every component is the generic kernel of something one or more apps had already built; each was extracted from the app that first wrote it. The whole library exposes one namespace, window.ZGui. Private internal component.
One Namespace
Every widget — modal, toast, table, palette, drawer, header — lives under window.ZGui. Atomic control factories (ZGui.button/textfield/toggle/range/select) give the suite a uniform API.
Host-Agnostic webui
Consume it like zpwr-i18n / zpwr-file-browser: add it as a submodule at frontend/lib/zgui-core and load the modules directly from the submodule path — never copy webui/* (copies drift and partial-sync). No build step of its own.
Extracted, Not Invented
Each component is lifted from a real app — the fzf matcher and palette from Audio-Haxor, the design tokens from zpwr-patch-core, the breadcrumb / split-pane from zpwr-file-browser, the segmented switcher from zcontainer / zreq.
Cyberpunk by Default
The base.css + cyberpunk.css + widgets.css kit carries the neon HUD look — the .btn system, stats bar, neon scrollbars, focus glow, and the form-widget classes — so every app renders identically.
What's in webui/
The library is a set of dependency-free webui modules plus their CSS. Structural chrome: modal (the keystone dialog, with confirm()/prompt()), toast (neon notifications + history + global progress bar), table (resizable/sortable/batch-select/multi-filter data grid), tabs, drawer, header, splash, status-bar, split-pane, breadcrumb, segmented. Interaction: command-palette (⌘/Ctrl+K), context-menu, keyboard-nav (vim-style j/k), shortcuts (click-to-rebind registry), help-overlay (?-key reference), drag (Trello-style reorder), file-drag (native OS file drop / drag-out), dock (corner docking). Plus a pure-helper util grab-bag (escapeHtml · debounce · formatBytes · copyToClipboard · …) with a DOM-free ES-module build at esm/util.mjs.
How apps consume it
An app adds zgui-core as a submodule at frontend/lib/zgui-core and loads the modules it needs directly from the submodule path (never a copy — copies go stale and partial-sync; updates are a pointer bump). Shared state — color schemes, persisted column widths, shortcut bindings, drag order — is keyed per scope so multiple consumers coexist. See the engineering report for the module map and the extraction provenance, and the MenkeTechnologiesMeta umbrella for the wider stack.