Skip to content

Bloom

Bloom is UI motion: gradient presets (shine, rainbow), size motion (grow, bounce), tweens (fade, hover, press), and helpers that delegate to Stage for viewports. One shared Heartbeat steps active preset jobs.

Header: #include <clpp/libs/bloom.clh>. Runtime: CluauppLibs.Bloom. Optional .bloom schemas bake named presets.

Use when:

  • Polish on Gleam-built buttons and labels without hand-written Tween loops.
  • Many simultaneous effects — scheduler skips hidden/unparented targets.

Do not use when:

  • Gameplay timing or hitboxes — cosmetic only.
  • You need full reactive UI — pair with Gleam.
#include <clpp/libs/bloom.clh>
#include <clpp/libs/gleam.clh>
[[client]]
void init() {
TextButton button = Gleam.TextButton();
BloomHandle shine = Bloom.Play(button, Bloom.Shine);
Bloom.Hover(button);
Bloom.Press(button);
}

Returns: string preset names for Play.

When: Pass to Bloom.PlayBloom.Shine, Bloom.Rainbow, Bloom.ChromeStroke, Bloom.Grow, Bloom.Lift, Bloom.Bounce, Bloom.Shrink, Bloom.Punch.

Returns: ColorSequenceKeypoint at time t with color.

When: Build custom gradients for BloomOptions.Gradient.

ColorSequenceKeypoint k = Bloom.Stop(0, Color3.fromRGB(255, 200, 0));

Returns: ColorSequence from keypoints.

When: Pass via BloomOptions { .Gradient = Bloom.Gradient(...) }.

Returns: BloomHandle — shared Heartbeat job; Pause / Resume / Destroy.

When: Continuous shine/rainbow/chroma stroke or motion presets on a GuiObject.

BloomHandle h = Bloom.Play(label, Bloom.Shine);

Formula (motion presets): wave = sin(2π · offset) or |sin| for bounce; size scales by 1 + (peak−1)·wave; optional vertical lift from origin position.

Returns: BloomHandle.

When: Override BloomOptionsSpeed, Size, Gradient, Transparency.

Returns: void.

When: Freeze animation while keeping instances.

Returns: void.

When: Continue after pause.

Returns: void — removes gradients/strokes, restores size/position for motion presets.

When: Target removed from UI or effect no longer needed.

Returns: GuiObject field — animated target.

When: Inspect which gui is bound.

Returns: void — tweens BackgroundTransparency; hides when fading out.

When: Simple show/hide panels.

Bloom.Fade(frame, true); // show

Returns: void.

When: Custom tween duration (default ~0.25s).

Returns: void — runtime delegates to Fade.

When: Named “slide” in UI code; same fade behavior.

Returns: void.

Returns: void — scale size in/out with tween.

When: Pop-in menus.

Returns: void.

Returns: void — brief overscale Back easing on size.

When: Attention on a button.

Returns: void.

Returns: void — MouseEnter/Leave size tweens (default scale up).

When: Desktop hover affordance on buttons.

Returns: voidBloom.Lift uses smaller scale than default.

When: Subtle vs strong hover.

Returns: void — shrink on MouseButton1Down (GuiButton only).

When: Tactile button feedback.

Returns: voidBloom.Punch deeper shrink.

When: Heavy click feel.

Returns: void — click ripple frame on GuiButton.

When: Material-like feedback.

Returns: void — RenderStepped rotation from mouse position.

When: Playful card tilt; optional degrees cap.

Returns: void.

When: Limit max rotation.

Returns: void — lift hover + subtle stroke.

When: Card “depth” without full preset.

Returns: void — horizontal squash flip tween.

When: Transition flair.

Returns: void.

When: Faster flip cycle.

Returns: StageStage.Attach(frame, model).

When: 3D preview inside a gui frame (see Stage).

Returns: void — typewriter via MaxVisibleGraphemes.

When: Dialog text reveal in a Frame + TextLabel.

Returns: void.

When: Header-declared sequencer entry (runtime runs queued steps when provided).

Returns: void — alias of Slide.

When: Legacy name.

Returns: void — alias of Zoom.

Returns: void — alias of Bounce.

Returns: void — alias of Hover.

Returns: void — alias of Type.