lotusui
A Go design system for desktop and mobile — one codebase, native apps. Web when you want it.
GitHub

Platforms

Desktop and mobile first — same Go module; the web is a compile target too.

DesktopMobileWeb

One Go codebase, one design language: lotusui embeds its font and paints a consistent interface on every target, down to the typography. Desktop and mobile are the product focus; the web is the same module compiled to WebAssembly when you want a browser build. The platform decides input (pointer or touch) and packaging, nothing else. The few places where a platform genuinely differs are called out across this site with badges like the ones above.

Desktop macOS Windows Linux

A first-class home for lotusui apps. Hover affordances (row pills, button shades, pointer cursors) do their best work here, and on macOS the seamless window gives native edge-to-edge chrome — no title bar, traffic lights kept. Windows and Linux run with standard decorations.

Mobile Android iOS

Touch-ready by construction: the theme's tap targets default to a 44dp finger size, scrolling (Scrollable, ListView) is native touch scrolling, and text input goes through the platform IME. Hover states simply never fire — and that's safe by design, because in lotusui hover is always an affordance, never the only signal: selection and active states are explicit props (active, Value, Sel), so nothing becomes unreachable without a pointer.

Web WASM

The same Go module reaches the browser via WebAssembly — a real shipping target, not a separate port, and how this documentation site shows live demos. Build with GOOS=js GOARCH=wasm, one gallery bundle for every Preview. The binary embeds its fonts (roughly 13 MB raw, a fraction over the wire compressed); each docs Preview is a gallery iframe addressed by URL hash (loading="lazy" so off-screen examples boot on demand).

sh
GOOS=js GOARCH=wasm go build -ldflags="-s -w" -o app.wasm .
# serve with wasm_exec.js from $(go env GOROOT)/lib/wasm/
# and a <div id="giowindow"> for the canvas host

What's platform-specific in the API

Almost nothing. The one platform-gated symbol is MakeSeamlessWindow, which exists only on macOS (behind a build tag) — call it from a small main_darwin.go and every other target compiles cleanly without it. Everything else in the library builds on every target.

lotusui is a Go design system for native desktop and mobile — and the web when you want it. Docs demos are the real components (WebAssembly) — one gallery app, each Preview an iframe addressed by URL hash.