atlasBridge has a single accent color that every bridge UI follows automatically — notifications, progress bars, menus, confirm dialogs, the radial wheel, skill-check zones, markers, and the world-anchored interaction prompts. You never pass a color to a component. They read the accent and tint themselves.
There are two layers:
- A server default — the
atlas:theme:colorconvar, applied to everyone. - An optional per-player override — a player can pick their own accent at runtime; the bridge persists it on their client and recolors all of their UIs instantly.
The server default
Set the global accent with one convar. The default is#F487F4.
--atlas-theme-color CSS variable, and the lib’s drawing helpers (Bridge.Draw.Marker, Bridge.Draw.Outline) default to it. Changing the convar and restarting the bridge recolors every UI — no per-component wiring.
This server color is what
Bridge.Theme.Get() and Bridge.Theme.Rgba(alpha) return on the server, where there is no per-player HUD. Per-player theming is a client concern (below).Per-player theming
Each player can have their own accent. The picker UI is yours to build — the bridge gives you the storage, validation, persistence, and live push. You call one export; the bridge handles the rest.The flow
1
Your script calls the export
A color-changer (a settings menu, an F-key picker, whatever you build) calls
exports.atlasBridge:SetTheme(hex) — or, with the Bridge global loaded, Bridge.Theme.Set(hex).2
The bridge validates the hex
Invalid hex is rejected and the call returns
false. A valid hex is accepted.3
The bridge persists it to that client's KVP
The color is written to the player’s local resource KVP, so it survives a reconnect on that machine. (This is on-client persistence, not a database — a different PC starts from the server default.)
4
The bridge fires atlasBridge:themeChanged
Every consumer that subscribed via
Bridge.Theme.OnChange is notified with the new hex.5
Every NUI recolors instantly
The new accent is pushed to all of the player’s open UIs through the
--atlas-theme-color variable, so they re-tint without a reload.Client API
- Exports
- Bridge facade
string → boolean
Validate, persist to KVP, and live-push a new accent. Returns
false if hex is not a valid color.→ string
The player’s current accent hex. Cached, so it is safe to call every frame (e.g. inside a
Bridge.Draw loop).→ boolean
Clear the player’s override and fall back to the server default (
atlas:theme:color).fun(hex: string)
Register a callback fired whenever the accent changes.
Worked example — a minimal picker
A picker only has to collect a hex and hand it to the bridge. Here it uses the bridge’s own input dialog, but any UI works — the only line that matters is theBridge.Theme.Set call.
Server-side reads
The server has no per-player HUD, so the server facade always returns the configured default — useful for any server-side color need (a Discord embed color, a blip tint computed server-side):Related
UI Library
Every UI component follows the accent automatically.
Configuration
The
atlas:theme:color convar and the rest of the bridge config.