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

Icons

Fluent SVGs, embedded in the binary — builds never need the network.

Icons are SVGs fetched once by the CLI (normalized at fetch time) and committed. A build-failing test asserts every icon rasterizes. There is exactly one icon path — never add a second.

SVGIcon and SVGIconButton

Full-color icons ignore the tint; mono icons take it via currentColor. Icon names are generated constants (lotusui.IconSettings, and your own via the CLI's -gen), so a typo'd or removed icon is a compile error — at runtime a missing icon renders nothing beyond its reserved square, so screens degrade to their text.

open demo ↗

Your own icons — the whole Iconify universe

Any icon on icon-sets.iconify.design (200,000+ across every major set) is one command away: paste its ref and the CLI appends it to your manifest and fetches the SVG. You embed the result and register it — after that it renders through the same cached pipeline as the built-ins, and your app carries exactly the icons it uses. The network runs at development time only; builds and runtime never touch it.

sh
# 1. Browse icon-sets.iconify.design, copy a ref, fetch it —
#    SVGs are normalized and typed constants generated in one step:
go run github.com/ikaito-com/lotusui/cmd/lotusui icons \
    -manifest icons/manifest.txt -out icons \
    -gen icons_gen.go -genpkg main tabler:rocket

# 2. Embed and register (once), and wire go:generate so the
#    workflow is one standard command from then on:
#    //go:embed icons/*.svg
#    var appIcons embed.FS
#    func init() { lotusui.RegisterIconFS(appIcons, "icons") }

# 3. Use them, compile-checked:
#    lotusui.SVGIcon(IconRocket, 24, th.Palette.FgSubtle)

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.