Capítulo 100 de 108
Reference catalog of registry item shapes by type — style, theme, block, ui, lib, hook, font, base — plus cross-cutting features (target placeholders, universal items) with copy-pasteable JSON.
extends: "none": Makes a registry:style or registry:base item independent of shadcn/ui defaults — build a design system entirely from scratch instead of extending it.registry:font: Installs a Google Font; requires the font object (family, provider, import, variable, optional weight, subsets, selector, dependency). selector applies the font via @apply on specific CSS selectors instead of globally on <html>.registry:base: A complete design system base; unique config field carries style, iconLibrary, rsc, tsx, rtl, menuColor, menuAccent, tailwind.*, aliases.*, registries.@components/, @ui/, @lib/, @hooks/): In files[].target, resolve to the consumer's configured components.json aliases regardless of their import style (@/, #, package imports, workspace exports). target can install a file under a different shadcn directory than its type would default to.registry:item, since 2.9.0): Installable without framework detection or components.json, as long as every file has an explicit target (e.g. ~/.cursor/rules/x.mdc, ~/.eslintrc.json).css field directives: @layer base/components, @utility (simple/complex/functional with -*), @import (plain, url(), with media queries), @plugin (requires matching npm package in dependencies). Order when combined: imports → plugins → other CSS.cssVars.theme (e.g. --animate-wiggle) and a matching @keyframes block in css.envVars: Adds vars to .env.local/.env without overwriting existing ones; for dev/example values only, never production secrets.{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "example-style",
"type": "registry:style",
"dependencies": ["@tabler/icons-react"],
"registryDependencies": ["login-01", "calendar", "https://example.com/r/editor.json"],
"cssVars": {
"theme": { "font-sans": "Inter, sans-serif" },
"light": { "brand": "20 14.3% 4.1%" },
"dark": { "brand": "20 14.3% 4.1%" }
}
}
registry:style que estende o shadcn/ui default, misturando dependencies, registryDependencies (local + remoto) e cssVars.{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alias-child",
"type": "registry:item",
"files": [
{ "path": "registry/new-york/alias/target-alias-button.tsx", "type": "registry:ui", "target": "@ui/target-alias-button.tsx" },
{ "path": "registry/new-york/alias/prompt-input.tsx", "type": "registry:ui", "target": "@ui/ai/prompt-input.tsx" }
]
}
@ui/) resolvidos a partir do components.json do consumidor, preservando o caminho após o placeholder.registry:base config field | Type | Notes |
|---|---|---|
style | string | style name |
iconLibrary | string | e.g. lucide |
rsc | boolean | default false |
tsx | boolean | default true |
rtl | boolean | default false |
menuColor | "default"|"inverted"|"default-translucent"|"inverted-translucent" | default "default" |
menuAccent | "subtle"|"bold" | default "subtle" |
tailwind.baseColor | string | e.g. neutral, slate, zinc |
tailwind.css | string | path to CSS file |
tailwind.prefix | string | class prefix |
aliases.components/utils/ui/lib/hooks | string | import aliases |
registries | Record<string, string|object> | keys must start with @ |
| Target placeholder | Resolves to |
|---|---|
@components/ | aliases.components |
@ui/ | aliases.ui |
@lib/ | aliases.lib |
@hooks/ | aliases.hooks |
css without listing it in dependencies: e.g. @plugin "@tailwindcss/typography" requires "dependencies": ["@tailwindcss/typography"], or the install is incomplete.--animate-* without a matching @keyframes (or vice versa): the animation utility silently does nothing.envVars for production secrets: it's meant for dev/example values written to .env.local; never ship real credentials this way.type deliberately: registry:style/registry:base for whole systems, registry:block for multi-file composed features, registry:ui for single primitives, registry:lib/registry:hook for non-component code, registry:font for typography, registry:item for universal/non-framework files.extends: "none" is the escape hatch for building a design system that doesn't inherit shadcn/ui defaults at all.@/, #, workspace packages) — critical for a registry meant to be shared broadly.registry:item + explicit target on every file) can install config files (ESLint, Cursor rules) with zero framework assumptions.