Platforms
Desktop, mobile and web are compile targets, not ports.
Gio renders every pixel itself, and lotusui embeds its font — so the same code produces the same interface on every target, down to the typography. There is one codebase and one design language; 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
The first-class home. 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 Gio's 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
WebAssembly is a first-class Gio target — every live demo on this site is
lotusui compiled with GOOS=js GOARCH=wasm, one bundle for the whole gallery. The
binary embeds its fonts (roughly 13 MB raw, a fraction over the wire compressed), so ship
ONE app bundle, lazy-load it below the fold, and address states by URL hash the way this site's
iframes do.
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 Gio to attach to
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, like Gio's own
AppKitViewEvent) — 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.