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
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).The bridge validates the hex
Invalid hex is rejected and the call returns
false. A valid hex is accepted.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.)
The bridge fires atlasBridge:themeChanged
Every consumer that subscribed via
Bridge.Theme.OnChange is notified with the new hex.Client API
- Exports
- Bridge facade
Validate, persist to KVP, and live-push a new accent. Returns
false if hex is not a valid color.The player’s current accent hex. Cached, so it is safe to call every frame (e.g. inside a
Bridge.Draw loop).Clear the player’s override and fall back to the server default (
atlas:theme:color).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.