Context menu
Header, close button, menu buttons, icons, descriptions, metadata rows, progress bars inside items and the arrow/submenu indicators.
ox_lib is the shared library almost every modern FiveM script depends on. It draws the context menus, list menus, radial menu, input dialogs, notifications, progress bars and skill checks that your players see dozens of times per session.
Because ox_lib is a library rather than a single feature, its interface shows up everywhere: when a player opens a garage, talks to an NPC, picks a job, fills in a form, locks a door or waits out a timed action. That makes it the single highest-impact UI in a FiveM server — and the one most servers never touch, which is why so many cities look identical.
A theme from this studio restyles every ox_lib surface at once, without forking the resource. The Lua side, the exports and the NUI focus handling stay byte-for-byte identical, so every script that calls ox_lib keeps working exactly as before. Only the look changes: colours, typography, corner radius, spacing, borders, shadows, icon set and the motion of the animated components.
The package is built on the official ox_lib 3.41.0 release. You get the complete source, the upstream LICENSE and NOTICE, a MODIFICATIONS file listing every change, and an install guide for both a fresh install and an upgrade from an existing ox_lib.
A theme is not a recolour of one screen. These are the parts of ox_lib that change when you export a package.
Header, close button, menu buttons, icons, descriptions, metadata rows, progress bars inside items and the arrow/submenu indicators.
The scrolling menu with its header band, selected row, side-scroll values, per-item progress and the scroll arrows.
Sectors, dividers, icons, labels, the background disc and the centre button — including a custom animated SVG close mark drawn exactly on the centre.
Success, error, warning and info toasts, with solid, accent-bar or outline framing, custom icons and description-only variants.
Both timed indicators: a panel-based bar with a tinted fill and accent head, and a ring with a visible track, percentage readout and a labelled chip. Each template animates them differently.
Track, skill area, indicator and the key prompt, with adjustable stroke thickness.
Input dialog with every row type (text, number, slider, select, multi-select, checkbox, date, time, colour, textarea) and the alert dialog, plus the underlying Mantine inputs, dropdowns, sliders and tooltips.
The on-screen prompt in panel, pill or key style, in every supported screen position.
Real builds, not screenshots. Open any theme to see all of its components.
Nothing here is a fixed design with three colour options. Every value below is yours, live in the browser, on any of the twenty templates — including your own logo, your own banner and your own font.
Background, panel, secondary panel, elevated surface, border, strong border, text, muted text, accent, text on accent, success, warning and danger are separate values - and each one carries its own opacity slider, so a panel can sit at 60% over the game instead of blocking it out.
Separate families for headings, body text and figures, with size and weight. Pick from the built-in library or upload your own .woff2, .woff, .ttf or .otf and use it for one role or for everything. The file is packaged into the resource and served locally, so it renders in game with no internet.
Radius from fully square to fully rounded, border weight and style, shadow depth and the panel treatment - solid, outlined, bordered or flat. Squareness is a value, not a theme choice: any template can be made sharp or soft.
Padding, gaps and font scale move together through a density setting, or individually if you want a tighter interface on a 1080p screen and a roomier one on a 1440p one.
A PNG, JPG, WebP, SVG or animated GIF, placed centred above the action buttons, in the corner as a watermark, or hidden. Size and opacity are yours. It is packaged into the resource, so it loads offline inside FiveM.
A second image slot for a wide banner - a logo lockup, an event graphic or an animated GIF - above or below the interface, with its own height. It is drawn without a frame, so a transparent PNG stays transparent.
Add buttons above Close - a Community button with a Discord icon by default - with your own label, icon and URL. They open in the player’s own browser through openUrl, so no Lua and no extra resource is needed.
Keep FontAwesome, switch the whole interface to Google Material symbols, or turn icons off entirely. Icon size and colour are separate values from the text.
Calm, standard or lively - and the animated pieces (progress bar, progress ring, radial menu, skill check) carry a treatment designed for that template rather than one shared animation.
The built-in useful-controls dialog is restyled with the template and carries a single discreet line crediting the studio.
You load a theme layer next to the official build instead of editing it. The package you download is ox_lib 3.41.0 with one extra folder — a stylesheet, a small runtime and a theme.json holding your colours — loaded after the upstream bundle. Nothing in the React source, the Lua or the exports is rewritten, which is what makes the next ox_lib release a re-export rather than a merge conflict.
No. Because the theme is a layer rather than a fork, an update means taking the new official ox_lib release and dropping the same theme folder back in. We rebuild the packages against each upstream release and your design re-exports onto the new version from the studio, with the colours, fonts and layout you already chose.
It does not. The Lua side, every export, the keybinds and the NUI focus handling stay byte-for-byte as Overextended shipped them. A theme can only change presentation: colour, typography, radius, density, borders, shadows, icons and the motion of the animated components.
Yes. Pick from the built-in library of web fonts or upload your own .woff2, .ttf or .otf in the studio and assign it to headings, body text or figures. The font is packaged into the resource and served locally, so it renders inside FiveM without an internet connection.
Yes. ox_lib is framework-agnostic and so is the theme. Any script that calls lib.showContext, lib.registerMenu, lib.progressBar, lib.notify, lib.inputDialog, lib.alertDialog, lib.skillCheck or the radial menu picks up the new look automatically, whichever framework it was written for.
All of them: the context menu, list menu, radial menu, input and alert dialogs, notifications, progress bar, circular progress, skill check, TextUI and the menu scroll indicators. Each one is checked component by component in twenty themes rather than left to a global colour swap.
Back up your current ox_lib folder, unzip the package over it keeping the folder name, restart the server and have players clear the FiveM cache once. There is no new ensure line, no database change and no dependency — it is the same resource with a different face.
Every theme runs live on this site: the frames on each theme page are the real themed build, not screenshots. You can open the studio, change every value and watch the interface react before any payment, and only exporting the finished resource needs an account and a purchase.
If you do not run ox_lib yet, drop the exported folder into your resources directory and ensure it — the package is the official 3.41.0 release with the theme layer added. If you already run it, copy the web/build/oxs folder and the patched index.html across, add the theme files to your fxmanifest.lua files block, and restart the resource. Both routes are written out in the README inside every package.