Skip to content

Declarative UI

Declarative UI in Cluaupp is split by job: reactive HUD (Gleam), formatted numbers (Mint), motion presets (Bloom), Studio topbar icons (Crest), world billboards (Pin), and ViewportFrame previews (Stage). There is no JSX — use GleamProps { .Field = }, func callbacks, and Gleam.Source(auto) for state.

Debug panels are Lens (Lens.Window(title, draw) — no End()). Line-of-sight for pins is Occlude. Springs inside Gleam use Coil.

Use this map when:

  • You need a HUD that tracks server or local state → Gleam (+ Mint for labels, Bloom for polish).
  • You need Roblox topbar buttons that respect TopbarInsetCrest (new Crest(), not a separate Icon type).
  • You need floating text over parts → Pin (+ optional Occlude).
  • You need a rotating shop preview in a frame → Stage (or Bloom.Viewport which attaches Stage).

Do not use:

  • Mint strings as economy storage or DataStore payloads — display only; reverse parsing is Mint.From for UI text, not persistence.
  • Bloom / Ember for gameplay authority — cosmetic client effects only.
  • Lens as an admin panel — server permissions stay on Helm.

Pick one stack; full HUD copy: HUD example.

#include <clpp/libs/gleam.clh>
#include <clpp/libs/mint.clh>
#include <clpp/libs/bloom.clh>
#include <clpp/libs/crest.clh>
[[client]]
void init() {
GleamSource coins = Gleam.Source(0);
TextLabel label = Gleam.TextLabel(GleamProps { .Name = "Coins", .TextScaled = true });
Gleam.Effect(func () {
label.Text = Mint.Compact(coins.Get());
});
Bloom.Play(label, Bloom.Shine);
Crest shop = new Crest();
shop.setName("Shop").setRight().bindEvent("selected", func () { /* open UI */ });
}
LibraryWhat it is for
GleamReactive instances, Effect, list helpers, Spring via Coil
Mint12.5K, %, scientific — label formatting only
BloomShine, hover, fade, one Heartbeat scheduler for presets
CrestTopbar icon buttons, notify badge, select/deselect
PinBillboardGui on an adornee with distance fade/scale
StageClone a model into a ViewportFrame, orbit with Update

See each page for the full API from #include <clpp/libs/*.clh>.