@open-hax/uxx
v0.2.4
Published
Open Hax UI component library with React primitives, shared design tokens, reusable themes, and color palettes.
Downloads
493
Maintainers
Readme
@open-hax/uxx
Open Hax UI kit with shared tokens plus framework bindings for React, Reagent, and Helix.
Built with GLM-5 — part of the z.ai startup ecosystem and the Ussyverse.
Packages
| Package | Audience | Status | Docs |
| --- | --- | --- | --- |
| @open-hax/uxx | React apps | Canonical implementation | react/README.md |
| @open-hax/uxx-reagent | Reagent apps | React-backed parity layer | reagent/README.md |
| @open-hax/uxx-helix | Helix apps | React-backed parity layer | helix/README.md |
| @open-hax/uxx/tokens | Design token consumers | Shared source of truth | tokens/ |
Agent/release notes live in AGENTS.md. Publishing protocol lives in
docs/publishing.md.
What changed
The Reagent and Helix packages now target the same public component surface as the React package by wrapping the canonical React build in dist/.
That gives the three bindings the same:
- public component inventory
- visual behavior
- token usage
- provider surface for theme + toast
- helper utilities for pagination
React-only hooks still exist as hooks, but they are re-exported for advanced ClojureScript consumers who know the normal React hook rules.
Component coverage
Public parity now covers these exported components:
- Foundations:
Button,Badge,Spinner,Card,CardHeader,CardBody,CardFooter,Modal,ModalHeader,ModalBody,ModalFooter,Tooltip,Input,Select,Textarea,Progress - Workspace UI:
ResizablePane,WhichKeyPopup,InspectorPane,ContextSection,PinnedTabsBar,PermissionCard,PromptCard,PermissionPrompts,ReactReagentSeam,CommandPalette,Chat,Toast,FileTree,Tabs - Data + structure:
SearchableSelect,CollapsiblePanel,KeyValueSection,SurfaceHero,PanelHeader,MetricTile,MetricTileGrid,FilterToolbar,ActionStrip,StatusChipStack,DataTableShell,Pagination - Content + editors:
Feed,Markdown,CodeBlock,DiffViewer,MarkdownEditor,RichTextEditor
React now also exports the first composition-level component:
- Compositions:
EntityCard(React public now; Reagent/Helix parity pending)
The new section primitives are now public across all three bindings:
CardHeader,CardBody,CardFooterModalHeader,ModalBody,ModalFooter
See docs/framework-parity.md for the detailed matrix and framework notes.
Quick start
Themes and palettes
import {
themePacks,
createThemePack,
getThemeCssVars,
monokai,
nightOwl,
proxyConsole,
} from '@open-hax/uxx/tokens';
const theme = createThemePack(themePacks['proxy-console'], {
colors: { accent: { cyan: '#16e0ff' } },
});
const cssVars = getThemeCssVars(theme);For Eta Mu / Pi, @open-hax/uxx publishes generated terminal theme JSON files under dist/eta-mu-themes and declares them in the package pi.themes manifest. After installing the package as a Pi package, select one of:
uxx-monokaiuxx-night-owluxx-proxy-console
Programmatic Eta Mu adapters are also available:
import { etaMuThemes, createEtaMuThemeJson } from '@open-hax/uxx/eta-mu';React
cd orgs/open-hax/uxx
pnpm install
pnpm run buildimport { ThemeProvider, Button, Card, EntityCard } from '@open-hax/uxx';
export function Example() {
return (
<ThemeProvider theme="night-owl">
<Card title="Status">
<Button variant="primary">Ship it</Button>
</Card>
<EntityCard
id="agent-1"
name="Compiler Agent"
type="worker"
status={{ value: 'ready', variant: 'success' }}
/>
</ThemeProvider>
);
}Built-in themes now include monokai, night-owl, and proxy-console. The canonical provider is ThemeProvider; UxxThemeProvider is available as a backward-compatible alias for the collaborator-proposed theme-pack surface.
Reagent
cd orgs/open-hax/uxx/reagent
pnpm install
pnpm run build(ns app.core
(:require [devel.ui.core :as ui]))
(defn screen []
[ui/theme-provider {:theme :night-owl}
[ui/card {:title "Status"}
[ui/button {:variant :primary} "Ship it"]]])Helix
cd orgs/open-hax/uxx/helix
pnpm install
pnpm run build(ns app.core
(:require [helix.core :refer [$]]
[devel.ui.helix.core :as ui]))
(defn screen []
($ ui/theme-provider {:theme :night-owl}
($ ui/card {:title "Status"}
($ ui/button {:variant :primary} "Ship it"))))Architecture
react/contains the canonical TypeScript + React implementation.dist/is the generated build artifact consumed by the ClojureScript bindings.reagent/andhelix/translate idiomatic CLJS props into the React prop surface.tokens/remains the shared design-token source.
This means parity work lands once in React and can be surfaced in Reagent and Helix without reimplementing every component three times.
Docs
Build matrix
# Canonical React + tokens build
cd orgs/open-hax/uxx && pnpm run build
# Reagent wrapper build
cd orgs/open-hax/uxx/reagent && pnpm run build
# Helix wrapper build
cd orgs/open-hax/uxx/helix && pnpm run buildPublishing
This package uses pnpm workspace dependencies. Always publish with pnpm so
workspace:* specs are rewritten in the packed npm manifest.
pnpm run release:check
pnpm publish --access publicDo not use npm pack or npm publish from this package. Those commands can
publish literal workspace:* dependency specs. See
docs/publishing.md for the verification workflow and
downstream smoke test.
Using with shadow-cljs in pnpm projects
If you consume @open-hax/uxx, @open-hax/uxx-reagent, or @open-hax/uxx-helix from a
project that builds with shadow-cljs and uses pnpm, you will likely need a
hoisted node_modules layout.
Reason: shadow-cljs resolves npm deps by searching a small set of node_modules
folders, and it can fail to see pnpm's default symlinked dependency graph for
transitive dependencies (for example react-markdown's internals).
Add this to your consumer repo (not this library):
# .npmrc
node-linker=hoistedThen reinstall:
rm -rf node_modules
pnpm installIf you use Yarn, prefer nodeLinker: node-modules (not PnP) for shadow-cljs projects.
Note on React-only compositions
react/src/compositions/EntityCard.tsx is now part of the published React API. It is still excluded from Reagent and Helix parity until explicit wrapper support is added and documented.
License
@open-hax/uxx is licensed under LGPL-3.0-or-later.
What this means for consumers
This component library may be bundled directly with proprietary, closed-source projects. Your application code does not need to be licensed under the LGPL or GPL.
The one obligation: any modifications you make to this library itself — whether to fix bugs, add features, or adapt it to your project's needs — must be published back under the LGPL-3.0-or-later.
In practical terms:
- ✅ Use
@open-hax/uxxas a dependency in proprietary software - ✅ Distribute your proprietary application alongside the unmodified library
- ✅ Build closed-source products that import and render these components
- 📢 If you modify any file within this library, publish those changes under LGPL-3.0-or-later
The boundary is the library itself. Your application code remains yours. Changes to the library remain the commons.
See the full LICENSE text for the complete terms.
