components.json
The components.json file is required for ShadcnStore blocks to work properly. It tells the shadcn/ui CLI where to place components and how to configure them.
Why is it Required?
The components.json file provides:
- Component paths: Where to install components in your project
- Import aliases: Path aliases like
@/componentsand@/lib/utils - Styling configuration: Whether to use CSS variables or utility classes
- Tailwind setup: Base color, CSS file location, and configuration
- Registry configuration: Custom registries for ShadcnStore blocks ⭐
ShadcnStore Registry Configuration
To use ShadcnStore blocks with the modern namespace approach, add this to your components.json:
json
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york",
"rsc": true,
"tsx": true,
"tailwind": {
"config": "tailwind.config.ts",
"css": "app/globals.css",
"baseColor": "neutral",
"cssVariables": true
},
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui"
},
"registries": {
"@shadcnstore": {
"url": "https://shadcnstore.com/r/{name}.json"
},
"@shadcnstore-pro": {
"url": "https://shadcnstore.com/r/{name}.json?token=${SHADCNSTORE_TOKEN}",
"headers": {
"Authorization": "Bearer ${SHADCNSTORE_TOKEN}"
}
}
}
}Environment Variable
Make sure to set SHADCNSTORE_TOKEN=your-license-key in your .env.local file for premium blocks to work.
Registry Benefits
The namespace approach provides several advantages:
- Clean Commands: Use
npx shadcn@latest add @shadcnstore/hero-1instead of long URLs - Automatic Authentication: Environment variables handle authentication automatically
- Better Organization: Clear separation between free (@shadcnstore) and premium (@shadcnstore-pro) blocks
- Future-Proof: Compatible with the latest shadcn/ui CLI features
Basic Configuration
Here's a minimal components.json for most projects (without ShadcnStore registries):
json
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york",
"rsc": true,
"tsx": true,
"tailwind": {
"config": "tailwind.config.ts",
"css": "app/globals.css",
"baseColor": "neutral",
"cssVariables": true
},
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui"
}
}Framework-Specific Examples
Next.js
json
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york",
"rsc": true,
"tsx": true,
"tailwind": {
"config": "tailwind.config.ts",
"css": "app/globals.css",
"baseColor": "neutral",
"cssVariables": true
},
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui"
},
"registries": {
"@shadcnstore": {
"url": "https://shadcnstore.com/r/{name}.json"
},
"@shadcnstore-pro": {
"url": "https://shadcnstore.com/r/{name}.json?token=${SHADCNSTORE_TOKEN}",
"headers": {
"Authorization": "Bearer ${SHADCNSTORE_TOKEN}"
}
}
}
}Vite
json
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york",
"rsc": false,
"tsx": true,
"tailwind": {
"config": "tailwind.config.js",
"css": "src/index.css",
"baseColor": "neutral",
"cssVariables": true
},
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui"
},
"registries": {
"@shadcnstore": {
"url": "https://shadcnstore.com/r/{name}.json"
},
"@shadcnstore-pro": {
"url": "https://shadcnstore.com/r/{name}.json?token=${SHADCNSTORE_TOKEN}",
"headers": {
"Authorization": "Bearer ${SHADCNSTORE_TOKEN}"
}
}
}
}Remix
json
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york",
"rsc": false,
"tsx": true,
"tailwind": {
"config": "tailwind.config.ts",
"css": "app/tailwind.css",
"baseColor": "neutral",
"cssVariables": true
},
"aliases": {
"components": "~/components",
"utils": "~/lib/utils",
"ui": "~/components/ui"
},
"registries": {
"@shadcnstore": {
"url": "https://shadcnstore.com/r/{name}.json"
},
"@shadcnstore-pro": {
"url": "https://shadcnstore.com/r/{name}.json?token=${SHADCNSTORE_TOKEN}",
"headers": {
"Authorization": "Bearer ${SHADCNSTORE_TOKEN}"
}
}
}
}Key Configuration Options
style: Choose between "default" and "new-york" design stylescssVariables: Use CSS variables (recommended) or utility classesbaseColor: Base color for your theme (neutral, gray, slate, etc.)aliases: Import path aliases for clean importsregistries: Custom registries for third-party components like ShadcnStore
Registry Configuration Details
The registries field allows you to define custom registries:
@shadcnstore: For free blocks, no authentication required@shadcnstore-pro: For premium blocks, uses environment variable authenticationurl: Template URL where{name}is replaced with the component nameheaders: Optional authentication headers for private registries
For complete configuration details and all available options, visit the official shadcn/ui components.json documentation.