UI Components
Grit UI is a registry of 100 ready-made React components. Install one with a command and it lands in your repo as an ordinary .tsx file you own.
Browse and preview every component at ui.gritframework.dev.
Installing a component
Inside a Grit project, the CLI writes the component into the right app for your architecture:
grit ui list # everything in the registrygrit ui list --category saas # narrow it downgrit ui add billing-card-01 # install onegrit ui add login-card-01 otp-input-01 # or several
Files land in components/grit-ui/ inside apps/web, falling back to apps/admin or a flat frontend/ depending on how the project was scaffolded. An existing file is never overwritten without --force — once you have edited a component, it is your code.
Outside a Grit project
Every component is a shadcn registry item, so the registry works with any React project that has Tailwind — no Grit required:
npx shadcn@latest add https://ui.gritframework.dev/r/hero-split-01.json
That single command writes the component, merges Grit's design tokens into your globals.css, and adds the colour scale to your tailwind.config.ts. Both are needed: the tokens supply the palette, and the scale is what makes classes like text-text-muted resolve.
What is in the registry
| Category | Count | Examples |
|---|---|---|
| marketing | 20 | heroes, pricing, testimonials, FAQ, CTA banners |
| saas | 30 | billing, usage meters, API keys, audit logs, team rows |
| ecommerce | 20 | product cards, cart, checkout steps, variants |
| layout | 20 | navbars, modals, tabs, empty states, toasts |
| auth | 10 | login, signup, OTP, 2FA setup, OAuth buttons |
The registry endpoints
The registry is plain JSON over HTTP, so anything that speaks the shadcn format can consume it — your own tooling included.
https://ui.gritframework.dev/r/registry.json # index of all 100https://ui.gritframework.dev/r/<name>.json # one item, source inlined
Each item carries its source in files[0].content rather than a path to fetch separately, which is what lets a single request produce a working component.
Components are yours
Nothing here is a dependency. There is no grit-ui package in your package.json, no version to keep up with, and no upgrade that can change a component out from under you. The trade is the usual one for generated code: improvements to a component do not reach copies you already installed. Re-run grit ui add --force if you want the newer version and have not edited yours.
They use Grit's design tokens, so in a scaffolded project they match the admin panel and auth pages out of the box.
Build alongside other Grit developers
Join the WhatsApp community for questions, tutorials, and guidance from people shipping Grit apps, and from the person who builds it. No question is too small.
