Skip to content
MeowLynxSea edited this page Jun 18, 2026 · 7 revisions

About

Yororen UI is a UI component library built on GPUI via the gpui-ce crate. It separates three concerns you usually get fused together:

Layer Crate Role
Headless yororen-ui-core data, state machine, a11y, i18n, RTL, animation. No visual decisions.
Renderer yororen-ui-default-renderer (modern) or yororen-ui-brutalism-renderer (sharp) turns props into a styled div. One trait impl per headless component.
Theme a JSON file palette + tokens the renderer reads by path.

The meta-crate yororen-ui re-exports core + the default renderer + 3 bundled locales, so most apps need one dependency. Add the brutalism or xml feature to opt into the alternative renderer or the XML DSL.

Goals

  • Theme-driven design system. Every visual knob (bg, fg, border, padding, radius, hover, active, motion timing) reads from JSON. Customising a brand is shipping a JSON file, not a fork.
  • Composable. Every component is a XxxProps builder. Renderers are trait impls registered against a global RendererRegistry. Replace one slot without touching the rest.
  • Pragmatic a11y. Focus handles, focus traps, click-outside guards, scroll-lock counters, keyboard navigation — opt in per element.
  • Multi-locale. en, zh-CN, ar ship in the meta-crate; ar flips layout to RTL via cx.i18n().text_direction().
  • Embedded assets. 20+ SVG icons live in yororen-ui-core/assets/icons/; pass UiAsset to Application::with_assets, or compose your own with CompositeAssetSource.

Non-goals

  • Not an application framework. Window management, command palettes, project trees, editor buffers, LSP plumbing — those are your app's problem.
  • Not a designer surface. No live "drag this control" editor. Theming is editing a JSON file and cargo run.
  • Not cross-platform. Yororen UI only runs on the platforms GPUI runs on (macOS, Linux, Windows desktop).
  • The headless layer is the contract. Which events fire, which keys are bound, which ARIA roles are exposed — non-negotiable. Renderers that skip focus wiring will look fine until the user tabs in.

Status

v0.3.0. The first build with the headless core + swappable renderer split.

License

Apache-2.0. Built on GPUI (Zed Industries), also Apache-2.0. See LICENSE and NOTICE in the repository root.

Clone this wiki locally