Skip to main content

Overview

9AM UI is the internal component kit every 9AM script builds its interface from. It is distributed as a private shadcn registry: you install components with shadcn add, and the files are copied into your script rather than imported from a package. It was extracted from the vehicle shop, which is now its first consumer.
This kit is internal to the studio. The registry lives in a private repository and needs a GitHub token to install from — these pages are for 9AM developers, not for customers.

What is in it

That is 76 items in total.

Why copy-in and not a package

A package would give you one version and no way out of it. A registry copies source files into your script, which means:
  • A script can diverge when it genuinely needs to, without forking anything.
  • There is no runtime dependency between scripts — each ships its own built dist.
  • Escrow builds stay clean, because the kit is a build-time concern and only web/dist reaches customers.
The tradeoff is that copies can drift apart. That is what 9am-ui check is for: it fails the build when the design tokens have been edited locally, and warns when a component has.

The two pieces that matter most

Viewport

The house scroll container. Drag-able custom scrollbar, layered glass edges, and a header that blur-swaps to a sticky copy as you scroll.

CEF workarounds

FiveM runs Chromium 103. The kit carries the fixes for everything that breaks there but works in your browser.
Those two are the real value. Anyone can rebuild a button; the reason a 9AM NUI scrolls smoothly and renders correctly in-game is several days of paid-for debugging that now travels with the kit.

Where to go next

Setup

Get a token, wire up components.json, scaffold a new script.

Theme

Tokens, palettes, fonts, and the styling conventions.

Components

The full catalog with props and examples.

NUI bridge

Talking to Lua, visibility, and translations.