lotusui the ikaito design language for Gio — desktop, mobile, web
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.

Go
lotusui.SVGIcon(lotusui.IconAdd, 32, color.NRGBA{})              // full-color
lotusui.SVGIcon(lotusui.IconEdit, 24, th.Palette.FgSubtle)       // mono, tinted
lotusui.SVGIconButton(th, &btn, lotusui.IconSettings, 24, active) // clickable

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)

Every demo on this site is the real Go component compiled to WebAssembly — one gallery app, one bundle, addressed by URL hash.