Components
components.json

components.json

Configuration for your project.

The components.json file holds configuration for your project.

We use it to understand how your project is set up and how to generate components customized for your project.

You can create a components.json file in your project by running the following command:

npx shadcx@latest init

For Plate UI components, you have two options:

  1. Initialize both shadcn/ui and Plate UI:

    npx shadcx@latest init
    npx shadcx@latest init -u https://platejs.org/r -n plate-ui
  2. Initialize only Plate UI:

    npx shadcx@latest init -u https://platejs.org/r -n plate-ui

See the CLI section for more information.

$schema

You can see the JSON Schema for components.json here.

components.json
{
  "$schema": "https://ui.shadcn.com/schema.json"
}

tailwind

Configuration to help the CLI understand how Tailwind CSS is set up in your project.

See the installation section for how to set up Tailwind CSS.

tailwind.config

Path to where your tailwind.config.js file is located.

components.json
{
  "tailwind": {
    "config": "tailwind.config.js" | "tailwind.config.ts"
  }
}

tailwind.css

Path to the CSS file that imports Tailwind CSS into your project.

components.json
{
  "tailwind": {
    "css": "styles/global.css"
  }
}

tailwind.baseColor

This is used to generate the default color palette for your components. This cannot be changed after initialization.

components.json
{
  "tailwind": {
    "baseColor": "slate" |"gray" | "neutral" | "stone" | "zinc"
  }
}

tailwind.cssVariables

You can choose between using CSS variables or Tailwind CSS utility classes for theming.

To use utility classes for theming set tailwind.cssVariables to false. For CSS variables, set tailwind.cssVariables to true.

components.json
{
  "tailwind": {
    "cssVariables": `true` | `false`
  }
}

For more information, see the theming docs.

This cannot be changed after initialization. To switch between CSS variables and utility classes, you'll have to delete and re-install your components.

tailwind.prefix

The prefix to use for your Tailwind CSS utility classes. Components will be added with this prefix.

components.json
{
  "tailwind": {
    "prefix": "plate-"
  }
}

aliases

The CLI uses these values and the paths config from your tsconfig.json or jsconfig.json file to place generated components in the correct location.

Path aliases have to be set up in your tsconfig.json or jsconfig.json file.

aliases.utils

Import alias for your utility functions.

components.json
{
  "aliases": {
    "utils": "@/lib/utils"
  }
}

aliases.components

Import alias for your components.

components.json
{
  "aliases": {
    "components": "@/components"
  }
}

aliases.ui

Import alias for ui components.

The CLI will use the aliases.ui value to determine where to place your ui components. Use this config if you want to customize the installation directory for your ui components.

components.json
{
  "aliases": {
    "ui": "@/components/plate-ui"
  }
}

aliases.lib

Import alias for lib functions such as format-date or generate-id.

components.json
{
  "aliases": {
    "lib": "@/lib"
  }
}

aliases.hooks

Import alias for hooks such as use-media-query or use-toast.

components.json
{
  "aliases": {
    "hooks": "@/hooks"
  }
}

registries

The registries section allows you to configure multiple component registries for your project. This is particularly useful when working with Plate UI components alongside the shadcn/ui components.

components.json
{
  "registries": {
    "plate-ui": {
      "url": "https://platejs.org/r",
      "style": "default",
      "aliases": {
        "ui": "@/components/plate-ui"
      }
    }
  }
}

registries.[name].url

The URL of the registry. For Plate UI, this is https://platejs.org/r.

registries.[name].style

The style to use for components from this registry. Plate UI has only one style: default.

registries.[name].aliases

Custom aliases for this registry. This allows you to specify a different location for UI components from this registry.