Bus UI Library
Supported components for Go product frontends.
Bus UI gives Bus products shared shells, forms, data display, evidence, assistant,
terminal, and portal surfaces. Components build gx.Node trees through
public packages such as ui, assistantui,
terminalui, and uiportal, then render at the boundary
with gx.RenderHTML. The practical payoff is that product teams can reuse
accessible, tested UI contracts without creating a separate React component library
and maintenance process.
Component areas
Components
Use shells, navigation, panels, controls, status, and action rows.
Forms
Render validated fields, inputs, file controls, drop zones, filters, and submit states.
Data Display
Show tables, records, summaries, projections, errors, timelines, and galleries.
Evidence And Files
Link and preview evidence while keeping URL and authorization policy in the host.
Assistant
Compose model selection, approvals, review state, thread isolation, and AI panel layouts.
Terminal
Render terminal sessions, streamed output, command input, and approval prompts.
Portal Integration
Mount module pages with public host context, assets, runtime config, and API bases.
What belongs to Bus UI
Bus UI owns reusable presentation contracts: prop validation, accessible defaults, stable data attributes, generated GX roots, Go adapters, and tests for shared component behavior. Node-first composition is the normal shape.
Product modules still own data loading, provider calls, credentials, uploads, redaction, billing rules, and business state.
This boundary keeps common presentation work in one supported Go library while business-specific behavior remains local to the product module that owns it.
Bus UI includes Bus GX and is the complete supported component package; use GX alone only when you want to build your own components. The pricing page shows the current purchase options. See GX/UI pricing.
import (
gx "github.com/busdk/bus-gx/pkg/gx"
ui "github.com/busdk/bus-ui/pkg/ui"
)
node := ui.ResultPanel(ui.ResultPanelProps{
Title: "Evidence pack ready",
Status: ui.StatusSuccess,
Summary: "3 files prepared for review.",
})
html, err := gx.RenderHTML(node)