Installation
Set up your project once, then install any component with one command.
Quick startStart here
β
You need: a React 19 project with TypeScript and Tailwind CSS v4. Pick your framework below and follow only its steps. Already have an app with a components.json? Jump straight to the install step.
Create a project
$pnpm create next-app@latest my-appAccept the defaults: TypeScript, Tailwind and the
@/*alias are all switched on.Initialize shadcn
$pnpm dlx shadcn@latest initThis creates
components.json, which tells the CLI where files go, and adds the theme colors the components use.Install a component
Copy the command from any component page, or point the CLI at its address:
$pnpm dlx shadcn@latest add https://tinistudio.vercel.app/r/button-01.jsonThe file lands in
components/nextui/, and everything it needs comes along automatically: npm packages (likemotionandlucide-react) and shadcn base components (likebuttonorcard).Use it
It is now your own file, so import it like any local component and edit it freely:
1import Button01 from "@/components/nextui/button-01";23export default function Page() {4return <Button01 />;5}
Create a project
$pnpm create vite my-app --template react-tsAdd Tailwind
$pnpm add tailwindcss @tailwindcss/viteReplace everything in your main CSS file with one line:
1@import "tailwindcss";Add the @/* path alias
Components import each other through
@/, so point it atsrcin both files:1{2"compilerOptions": {3"baseUrl": ".",4"paths": { "@/*": ["./src/*"] }5}6}1import path from "node:path";2import tailwindcss from "@tailwindcss/vite";3import react from "@vitejs/plugin-react";4import { defineConfig } from "vite";56export default defineConfig({7plugins: [react(), tailwindcss()],8resolve: { alias: { "@": path.resolve(__dirname, "./src") } },9});Initialize shadcn
$pnpm dlx shadcn@latest initThis creates
components.json, which tells the CLI where files go, and adds the theme colors the components use.Install a component
Copy the command from any component page, or point the CLI at its address:
$pnpm dlx shadcn@latest add https://tinistudio.vercel.app/r/button-01.jsonThe file lands in
components/nextui/, and everything it needs comes along automatically: npm packages (likemotionandlucide-react) and shadcn base components (likebuttonorcard).Use it
It is now your own file, so import it like any local component and edit it freely:
1import Button01 from "@/components/nextui/button-01";23export default function Page() {4return <Button01 />;5}
Pro componentsPro
Pro items install the same way. The registry only hands them out with your personal access key.
Add your access key
Create your key under Account and put it in
.env.local. Never commit it.1NEXTUI_TOKEN=tini_β¦Register the namespace
Add this to
components.json. It tells the CLI to send your key with every request:1{2"registries": {3"@nextui": {4"url": "https://tinistudio.vercel.app/r/{name}.json",5"headers": { "Authorization": "Bearer ${NEXTUI_TOKEN}" }6}7}8}Install by name
Free and Pro items now both install by name:
$pnpm dlx shadcn@latest add @nextui/<name>
π‘ No CLI? While signed in, Pro members see the code and a copy button on every Pro page.
Short namesOptional
A shorter way to type the same command. Register the @nextui namespace once in components.json:
1{2"registries": {3"@nextui": "https://tinistudio.vercel.app/r/{name}.json"4}5}
Then install by name, one or several at once. You get exactly the same files as with the full address.
$pnpm dlx shadcn@latest add @nextui/button-01 @nextui/badge-01
Install with an AI agent (MCP)Optional
Let Claude Code, Cursor, VS Code or Codex browse and install @nextui items for you through the shadcn MCP server. Register the @nextui namespace as in Short names, then set up the server for your client:
$pnpm dlx shadcn@latest mcp init --client claude
Swap claude for cursor, vscode or codex. Then ask your agent, for example: "Add the pricing card from @nextui".
Copy the code by handOptional
1. Install the packages the component lists on its page. Most use these:
$pnpm add motion lucide-react
2. Open a component or block page, switch to the Code tab and copy the file into components/nextui/. If it imports a shadcn base component such as @/components/ui/button, add that too with shadcn add button.