Solo
One person, one grid
Freewhile the First Hundred are being seated
Everything needed to plug a thing and keep it live.
- Unlimited inspirations
- One runtime
- Picked up by anyone with the link
Socket
Every component the registry serves, rendered from the same source shadcn add delivers. There is no copy here to fall out of date.
Four steps, once per project. Any folder with a package manager and a build step (Vite, Next, Astro) qualifies, git or no git.
pnpm add @cloudgrid-io/ui
@import "tailwindcss"; @import "@cloudgrid-io/ui/fonts.css"; @import "@cloudgrid-io/ui/tokens.css"; @import "@cloudgrid-io/ui/theme.css"; @import "@cloudgrid-io/ui/shadcn.css";
// components.json
{ "registries": { "@cloudgrid": "https://ui.cloudgrid.io/r/{name}.json" } }npx shadcn add @cloudgrid/button
npm login with an account that belongs to the CloudGrid npm organisation. In CI, use a granular read-only token for @cloudgrid-io/ui, kept in the build environment rather than committed. One thing NOT to do: add an .npmrc scope line pointing @cloudgrid-io at another registry. The package lives on plain npmjs, where the public @cloudgrid-io packages already resolve.theme.css maps utilities onto the tokens, so before tokens.css has run there is nothing to map.shadcn.css must come after whatever :root your own shadcn setup wrote, or the stock palette wins. Skip that line entirely if you are not using shadcn.For a single HTML file you open in a browser: a prototype, a sketch, a CodePen. This gets you every colour, space, radius, shadow and type size as a custom property, plus the real fonts. Components cannot travel this way, because they are TSX and need compiling; the brand can, because it is only CSS.
<link rel="stylesheet" href="https://ui.cloudgrid.io/brand/fonts.css"> <link rel="stylesheet" href="https://ui.cloudgrid.io/brand/tokens.css"> <h1 style="font-family: var(--cg-font-display); color: var(--cg-primary)"> Plugged </h1>
No Tailwind utilities this way: theme.css needs a build step, so it is deliberately not served here rather than served and silently doing nothing. Use var(--cg-*) directly. Surfaces still work, so data-cg-surface="panel" on a container flips everything inside it.
The source, entirely. Edit it, delete parts of it, restyle it. Nothing here can push a change into your repo, and running shadcn add again overwrites your edits, so a component you have customised is yours to maintain from then on. That is the trade the registry makes: no version coupling across repos, at the cost of no automatic updates.
Two @cloudgrid strings that are not the same thing: @cloudgrid-io/ui is a real npm package, and @cloudgrid/button is a registry alias you map above. Renaming one does not rename the other.
npx shadcn add @cloudgrid/badgenpm: @base-ui/react, class-variance-authority
npx shadcn add @cloudgrid/cardnpx shadcn add @cloudgrid/checkboxnpm: @base-ui/react, lucide-react
npx shadcn add @cloudgrid/code-blockpulls in @cloudgrid/button. npm: lucide-react
npx shadcn add @cloudgrid/button
npx shadcn add @cloudgrid/dialognpx shadcn add @cloudgrid/comboboxpulls in @cloudgrid/button, @cloudgrid/input-group. npm: @base-ui/react, lucide-react
npx shadcn add @cloudgrid/dialogpulls in @cloudgrid/button. npm: @base-ui/react, lucide-react
npx shadcn add @cloudgrid/drop-zonenpm: lucide-react
npx shadcn add @cloudgrid/inputnpm: @base-ui/react
npx shadcn add @cloudgrid/input-grouppulls in @cloudgrid/button, @cloudgrid/input, @cloudgrid/textarea. npm: class-variance-authority
npx shadcn add @cloudgrid/number-fieldnpm: @base-ui/react, lucide-react
npx shadcn add @cloudgrid/selectnpm: @base-ui/react, lucide-react
npx shadcn add @cloudgrid/skeletonnpx shadcn add @cloudgrid/sonnernpm: lucide-react, sonner
A toaster, mounted once per app. Rendered on the registry preview rather than here, because a toast that fires on page load is noise in a catalogue.
npx shadcn add @cloudgrid/switchnpm: @base-ui/react
npx shadcn add @cloudgrid/table| Name | Kind | Picked up |
|---|---|---|
| orbit-deck | Inspiration | 12 |
| signal-room | Runtime | 3 |
npx shadcn add @cloudgrid/tabsnpm: @base-ui/react, class-variance-authority
npx shadcn add @cloudgrid/textareanpx shadcn add @cloudgrid/tooltipnpm: @base-ui/react
npx shadcn add @cloudgrid/separatornpm: @base-ui/react
Above
Below
npx shadcn add @cloudgrid/accordionnpm: @base-ui/react, lucide-react, tw-animate-css
npx shadcn add @cloudgrid/quoteThe registry ships source, not a package.
npx shadcn add @cloudgrid/step-itemnpx shadcn add @cloudgrid/page-headingThe registry
Pulled with shadcn add, owned by you after.
npx shadcn add @cloudgrid/panelThe purple panel: the system's one dramatic move.
npx shadcn add @cloudgrid/logonpx shadcn add @cloudgrid/card-gridpulls in @cloudgrid/card.
npx shadcn add @cloudgrid/option-cardnpx shadcn add @cloudgrid/stage-panelpulls in @cloudgrid/panel.
The purple stage, with its own texture.
npx shadcn add @cloudgrid/feature-cellsnpm: lucide-react
What is on the grid
Static JSON, one file per component.
How a consumer picks it up
One namespace, then shadcn add.
npx shadcn add @cloudgrid/carouselnpx shadcn add @cloudgrid/rich-textHTML the component did not write, so .prose styles the elements.
npx shadcn add @cloudgrid/pricing-tier-cardspulls in @cloudgrid/button. npm: lucide-react
Solo
One person, one grid
Freewhile the First Hundred are being seated
Everything needed to plug a thing and keep it live.
Studio
A team sharing one grid
$24per person, per month
Shared inspirations, and a grid the whole team reads from.
npx shadcn add @cloudgrid/pricing-tierspulls in @cloudgrid/pricing-tier-cards.
Solo
One person, one grid
Freewhile the First Hundred are being seated
Everything needed to plug a thing and keep it live.
Studio
A team sharing one grid
$24per person, per month
Shared inspirations, and a grid the whole team reads from.
npx shadcn add @cloudgrid/agent-promptWorking with an agent? One line:
npx shadcn add @cloudgrid/buttonnpx shadcn add @cloudgrid/compare-tablepulls in @cloudgrid/logo. npm: lucide-react
| A build pipeline you maintain | ||
|---|---|---|
| Plugs from the repo you already have | Included | Included |
| Live URL with no second step | Not included | Included |
| Makes you write a build config first | Not included | Not included |
npx shadcn add @cloudgrid/creation-tilenpx shadcn add @cloudgrid/hub-indexpulls in @cloudgrid/page-heading.
Inspirations and runtimes, grouped by what they are for.
Plugged and serving.
npx shadcn add @cloudgrid/tool-logonpx shadcn add @cloudgrid/tool-marksnpx shadcn add @cloudgrid/plug-methodpulls in @cloudgrid/tool-logo.
One command from the repo you already have.
npx @cloudgrid-io/cli plug# what happens next
npx installs nothing globally.