From 9643db42cfb804783a5d2f9f88a380d5220af3a1 Mon Sep 17 00:00:00 2001 From: shadcn Date: Tue, 28 Jan 2025 15:06:22 +0400 Subject: [PATCH] feat: add docs for registry (#6380) * chore: 2.2.0-canary.2 * feat: add docs for registry * docs(www): update registry docs * fix: update dep * docs(www): update docs * docs(www): update registry docs * feat: add new label * fix: lint --- apps/www/components/docs-nav.tsx | 7 +- apps/www/config/docs.ts | 36 +++ apps/www/content/docs/cli.mdx | 27 +- apps/www/content/docs/registry/faq.mdx | 125 ++++++++ .../content/docs/registry/getting-started.mdx | 186 ++++++++++++ apps/www/content/docs/registry/index.mdx | 40 +++ apps/www/content/docs/registry/open-in-v0.mdx | 59 ++++ .../docs/registry/registry-item-json.mdx | 272 ++++++++++++++++++ .../content/docs/registry/registry-json.mdx | 87 ++++++ apps/www/lib/rehype-npm-command.ts | 15 + apps/www/package.json | 2 +- apps/www/public/images/registry-dark.png | Bin 0 -> 21981 bytes apps/www/public/images/registry-light.png | Bin 0 -> 22408 bytes packages/shadcn/package.json | 2 +- pnpm-lock.yaml | 2 +- 15 files changed, 851 insertions(+), 9 deletions(-) create mode 100644 apps/www/content/docs/registry/faq.mdx create mode 100644 apps/www/content/docs/registry/getting-started.mdx create mode 100644 apps/www/content/docs/registry/index.mdx create mode 100644 apps/www/content/docs/registry/open-in-v0.mdx create mode 100644 apps/www/content/docs/registry/registry-item-json.mdx create mode 100644 apps/www/content/docs/registry/registry-json.mdx create mode 100644 apps/www/public/images/registry-dark.png create mode 100644 apps/www/public/images/registry-light.png diff --git a/apps/www/components/docs-nav.tsx b/apps/www/components/docs-nav.tsx index 753ba897587..b98eb32f9ee 100644 --- a/apps/www/components/docs-nav.tsx +++ b/apps/www/components/docs-nav.tsx @@ -17,7 +17,12 @@ export function DocsNav({ config }: { config: DocsConfig }) { {items.map((item, index) => (

- {item.title} + {item.title}{" "} + {item.label && ( + + {item.label} + + )}

{item?.items?.length && ( diff --git a/apps/www/config/docs.ts b/apps/www/config/docs.ts index 907bedcc38d..ba6854f578a 100644 --- a/apps/www/config/docs.ts +++ b/apps/www/config/docs.ts @@ -405,6 +405,42 @@ export const docsConfig: DocsConfig = { }, ], }, + { + title: "Registry", + label: "New", + items: [ + { + title: "Introduction", + href: "/docs/registry", + items: [], + }, + { + title: "Getting Started", + href: "/docs/registry/getting-started", + items: [], + }, + { + title: "Open in v0", + href: "/docs/registry/open-in-v0", + items: [], + }, + { + title: "FAQ", + href: "/docs/registry/faq", + items: [], + }, + { + title: "registry.json", + href: "/docs/registry/registry-json", + items: [], + }, + { + title: "registry-item.json", + href: "/docs/registry/registry-item-json", + items: [], + }, + ], + }, ], chartsNav: [ { diff --git a/apps/www/content/docs/cli.mdx b/apps/www/content/docs/cli.mdx index 0de7dbcdb5a..04ae6a9687b 100644 --- a/apps/www/content/docs/cli.mdx +++ b/apps/www/content/docs/cli.mdx @@ -90,16 +90,33 @@ Options: -h, --help display help for command ``` -## Monorepo +## build -In a monorepo, you can specify the path to your workspace with the `-c` or `--cwd` option. +Use the `build` command to generate the registry JSON files. ```bash -npx shadcn@latest init -c ./apps/www +npx shadcn@latest build ``` -or +This command reads the `registry.json` file and generates the registry JSON files in the `public/r` directory. + +```txt +Usage: shadcn build [options] [registry] + +build components for a shadcn registry + +Arguments: + registry path to registry.json file (default: "./registry.json") + +Options: + -o, --output destination directory for json files (default: "./public/r") + -c, --cwd the working directory. defaults to the current directory. (default: + "/Users/shadcn/Code/shadcn/ui/packages/shadcn") + -h, --help display help for command +``` + +To customize the output directory, use the `--output` option. ```bash -npx shadcn@latest add alert-dialog -c ./apps/www +npx shadcn@latest build --output ./public/registry ``` diff --git a/apps/www/content/docs/registry/faq.mdx b/apps/www/content/docs/registry/faq.mdx new file mode 100644 index 00000000000..d1359ec09ce --- /dev/null +++ b/apps/www/content/docs/registry/faq.mdx @@ -0,0 +1,125 @@ +--- +title: FAQ +description: Frequently asked questions about running a registry. +--- + +## Frequently asked questions + +### What does a complex component look like? + +Here's an example of a complex component that installs a page, two components, a hook, a format-date utils and a config file. + +```json showLineNumbers +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "hello-world", + "title": "Hello World", + "type": "registry:block", + "description": "A complex hello world component", + "files": [ + { + "path": "registry/hello-world/page.tsx", + "type": "registry:page", + "target": "app/hello/page.tsx" + }, + { + "path": "registry/hello-world/components/hello-world.tsx", + "type": "registry:component" + }, + { + "path": "registry/hello-world/components/formatted-message.tsx", + "type": "registry:component" + }, + { + "path": "registry/hello-world/hooks/use-hello.ts", + "type": "registry:hook" + }, + { + "path": "registry/hello-world/lib/format-date.ts", + "type": "registry:utils" + }, + { + "path": "registry/hello-world/hello.config.ts", + "type": "registry:file", + "target": "~/hello.config.ts" + } + ] +} +``` + +### How do I add a new Tailwind color? + +To add a new color you need to add it to `cssVars` and `tailwind.config.theme.extend.colors`. + +```json showLineNumbers {10-19} {24-29} +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "hello-world", + "title": "Hello World", + "type": "registry:block", + "description": "A complex hello world component", + "files": [ + // ... + ], + "cssVars": { + "light": { + "brand-background": "20 14.3% 4.1%", + "brand-accent": "20 14.3% 4.1%" + }, + "dark": { + "brand-background": "20 14.3% 4.1%", + "brand-accent": "20 14.3% 4.1%" + } + }, + "tailwind": { + "config": { + "theme": { + "extend": { + "colors": { + "brand": { + "DEFAULT": "hsl(var(--brand-background))", + "accent": "hsl(var(--brand-accent))" + } + } + } + } + } + } +} +``` + +The CLI will update the project CSS file and tailwind.config.js file. Once updated, the new colors will be available to be used as utility classes: `bg-brand` and `text-brand-accent`. + +### How do I add a Tailwind animation? + +To add a new animation you add it to `tailwind.config.theme.extend.animation` and `tailwind.config.theme.extend.keyframes`. + +```json showLineNumbers {14-22} +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "hello-world", + "title": "Hello World", + "type": "registry:block", + "description": "A complex hello world component", + "files": [ + // ... + ], + "tailwind": { + "config": { + "theme": { + "extend": { + "keyframes": { + "wiggle": { + "0%, 100%": { "transform": "rotate(-3deg)" }, + "50%": { "transform": "rotate(3deg)" } + } + }, + "animation": { + "wiggle": "wiggle 1s ease-in-out infinite" + } + } + } + } + } +} +``` diff --git a/apps/www/content/docs/registry/getting-started.mdx b/apps/www/content/docs/registry/getting-started.mdx new file mode 100644 index 00000000000..87ca7458d99 --- /dev/null +++ b/apps/www/content/docs/registry/getting-started.mdx @@ -0,0 +1,186 @@ +--- +title: Getting Started +description: Learn how to get setup and run your own component registry. +--- + +This guide will walk you through the process of setting up your own component registry. + +It assumes you already have a project with components and would like to turn it into a registry. + +If you're starting a new registry project, you can use the [registry template](https://github.com/shadcn-ui/registry-template) as a starting point. We have already configured it for you. + +## registry.json + +The `registry.json` file is only required if you're using the `shadcn` CLI to build your registry. + +If you're using a different build system, you can skip this step as long as your build system produces valid JSON files that conform to the [registry-item schema specification](/docs/registry/registry-item-json). + + + +### Add a registry.json file + +Create a `registry.json` file in the root of your project. Your project can be a Next.js, Remix, Vite, or any other project that supports React. + +```json title="registry.json" showLineNumbers +{ + "$schema": "https://ui.shadcn.com/schema/registry.json", + "name": "acme", + "homepage": "https://acme.com", + "items": [ + // ... + ] +} +``` + +This `registry.json` file must conform to the [registry schema specification](/docs/registry/registry-json). + + + +## Add a registry item + + + +### Create your component + +Add your first component. Here's an example of a simple `` component: + +```tsx title="registry/hello-world/hello-world.tsx" showLineNumbers +import { Button } from "@/components/ui/button" + +export function HelloWorld() { + return +} +``` + + + **Note:** This example places the component in the `registry` directory. You + can place it anywhere in your project as long as you set the correct path in + the `registry.json` file. + + +```txt +registry +└── hello-world + └── hello-world.tsx +``` + + + **Important:** If you're placing your component in a custom directory, make + sure it is configured in your `tailwind.config.ts` file. + +```ts showLineNumbers +// tailwind.config.ts +export default { + content: ["./registry/**/*.{js,ts,jsx,tsx}"], +} +``` + + + +### Add your component to the registry + +To add your component to the registry, you need to add your component definition to `registry.json`. + +```json title="registry.json" showLineNumbers {6-17} +{ + "$schema": "https://ui.shadcn.com/schema/registry.json", + "name": "acme", + "homepage": "https://acme.com", + "items": [ + { + "name": "hello-world", + "type": "registry:block", + "title": "Hello World", + "description": "A simple hello world component.", + "files": [ + { + "path": "registry/hello-world/hello-world.tsx", + "type": "registry:component" + } + ] + } + ] +} +``` + +You define your registry item by adding a `name`, `type`, `title`, `description` and `files`. + +For every file you add, you must specify the `path` and `type` of the file. The `path` is the relative path to the file from the root of your project. The `type` is the type of the file. + +You can read more about the registry item schema and file types in the [registry item schema docs](/docs/registry/registry-item-json). + + + +## Build your registry + + + +### Install the shadcn CLI + +Note: the `build` command is currently only available in the `shadcn@canary` version of the CLI. + +```bash +npm install shadcn@canary +``` + +### Add a build script + +Add a `registry:build` script to your `package.json` file. + +```json title="package.json" showLineNumbers +{ + "scripts": { + "registry:build": "shadcn build" + } +} +``` + +### Run the build script + +Run the build script to generate the registry JSON files. + +```bash +npm run registry:build +``` + + + **Note:** By default, the build script will generate the registry JSON files + in `public/r` e.g `public/r/hello-world.json`. + +You can change the output directory by passing the `--output` option. See the [shadcn build command](/docs/cli#build) for more information. + + + + + +## Serve your registry + +If you're running your registry on Next.js, you can now serve your registry by running the `next` server. The command might differ for other frameworks. + +```bash +npm run dev +``` + +Your files will now be served at `http://localhost:3000/r/[NAME].json` eg. `http://localhost:3000/r/hello-world.json`. + +## Publish your registry + +To make your registry available to other developers, you can publish it by deploying your project to a public URL. + +## Guidelines + +Here are some guidelines to follow when building components for a registry. + +- The following properties are required for the block definition: `name`, `description`, `type` and `files`. +- Make sure to list all registry dependencies in `registryDependencies`. A registry dependency is the name of the component in the registry eg. `input`, `button`, `card`, etc or a URL to a registry item eg. `http://localhost:3000/r/editor.json`. +- Make sure to list all dependencies in `dependencies`. A dependency is the name of the package in the registry eg. `zod`, `sonner`, etc. To set a version, you can use the `name@version` format eg. `zod@^3.20.0`. +- **Imports should always use the `@/registry` path.** eg. `import { HelloWorld } from "@/registry/hello-world/hello-world"` +- Ideally, place your files within a registry item in `components`, `hooks`, `lib` directories. + +## Install using the CLI + +To install a registry item using the `shadcn` CLI, use the `add` command followed by the URL of the registry item. + +```bash +npx shadcn@latest add http://localhost:3000/r/hello-world.json +``` diff --git a/apps/www/content/docs/registry/index.mdx b/apps/www/content/docs/registry/index.mdx new file mode 100644 index 00000000000..7a681499c8b --- /dev/null +++ b/apps/www/content/docs/registry/index.mdx @@ -0,0 +1,40 @@ +--- +title: Registry +description: Run your own component registry. +--- + + + **Note:** This feature is currently experimental. Help us improve it by + testing it out and sending feedback. If you have any questions, please [reach + out to us](https://github.com/shadcn-ui/ui/discussions). + + +You can use the `shadcn` CLI to run your own component registry. Running your own registry allows you to distribute your custom components, hooks, pages, and other files to any React project. + +
+ Registry + Registry +
+ Distribute code to any React project. +
+
+ +Registry items are automatically compatible with the `shadcn` CLI and `Open in v0`. + +## Requirements + +You are free to design and host your custom registry as you see fit. The only requirement is that your registry items must be valid JSON files that conform to the [registry-item schema specification](/docs/registry/registry-item-json). + +If you'd like to see an example of a registry, we have a [template project](https://github.com/shadcn-ui/registry-template) for you to use as a starting point. diff --git a/apps/www/content/docs/registry/open-in-v0.mdx b/apps/www/content/docs/registry/open-in-v0.mdx new file mode 100644 index 00000000000..4b4fab78626 --- /dev/null +++ b/apps/www/content/docs/registry/open-in-v0.mdx @@ -0,0 +1,59 @@ +--- +title: Open in v0 +description: Integrate your registry with Open in v0. +--- + +If your registry is hosted and publicly accessible via a URL, you can open a registry item in v0 by using the `https://v0.dev/chat/api/open?url=[URL]` endpoint. + +eg. [https://v0.dev/chat/api/open?url=https://example.com/r/hello-world.json](https://v0.dev/chat/api/open?url=https://example.com/r/hello-world.json) + +## Button + +You can copy and paste the following code to add a `Open in v0` button to your site. + +```jsx +import { Button } from "@/components/ui/button" + +export function OpenInV0Button({ url }: { url: string }) { + return ( + + ) +} +``` + +## Usage + +```jsx + +``` + +## Known issues + +- The `Open in v0` button does not support `cssVars` and `tailwind` properties. diff --git a/apps/www/content/docs/registry/registry-item-json.mdx b/apps/www/content/docs/registry/registry-item-json.mdx new file mode 100644 index 00000000000..4dd3e9d4ccf --- /dev/null +++ b/apps/www/content/docs/registry/registry-item-json.mdx @@ -0,0 +1,272 @@ +--- +title: registry-item.json +description: Specification for registry items. +--- + +The `registry-item.json` schema is used to define your custom registry items. + +```json title="registry-item.json" showLineNumbers +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "hello-world", + "type": "registry:block", + "title": "Hello World", + "description": "A simple hello world component.", + "files": [ + { + "path": "registry/hello-world/hello-world.tsx", + "type": "registry:component" + }, + { + "path": "registry/hello-world/use-hello-world.ts", + "type": "registry:hook" + } + ] +} +``` + +## Definitions + +You can see the JSON Schema for `registry-item.json` [here](https://ui.shadcn.com/schema/registry-item.json). + +### $schema + +The `$schema` property is used to specify the schema for the `registry-item.json` file. + +```json title="registry-item.json" showLineNumbers +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json" +} +``` + +### name + +The `name` property is used to specify the name of your registry item. + +```json title="registry-item.json" showLineNumbers +{ + "name": "hello-world" +} +``` + +### title + +A human-readable title for your registry item. Keep it short and descriptive. + +```json title="registry-item.json" showLineNumbers +{ + "title": "Hello World" +} +``` + +### description + +A description of your registry item. This can be longer and more detailed than the `title`. + +```json title="registry-item.json" showLineNumbers +{ + "description": "A simple hello world component." +} +``` + +### type + +The `type` property is used to specify the type of your registry item. + +```json title="registry-item.json" showLineNumbers +{ + "type": "registry:block" +} +``` + +The following types are supported: + +| Type | Description | +| -------------------- | ------------------------------------------------ | +| `registry:block` | Use for complex components with multiple files. | +| `registry:component` | Use for simple components. | +| `registry:lib` | Use for lib and utils. | +| `registry:hook` | Use for hooks. | +| `registry:ui` | Use for UI components and single-file primitives | +| `registry:page` | Use for page or file-based routes. | +| `registry:file` | Use for miscellaneous files. | + +### author + +The `author` property is used to specify the author of the registry item. + +It can be unique to the registry item or the same as the author of the registry. + +```json title="registry-item.json" showLineNumbers +{ + "author": "John Doe " +} +``` + +### dependencies + +The `dependencies` property is used to specify the dependencies of your registry item. This is for `npm` packages. + +Use `@version` to specify the version of your registry item. + +```json title="registry-item.json" showLineNumbers +{ + "dependencies": [ + "@radix-ui/react-accordion", + "zod", + "lucide-react", + "name@1.0.2" + ] +} +``` + +### registryDependencies + +Used for registry dependencies. Can be names or URLs. + +- For `shadcn/ui` registry items such as `button`, `input`, `select`, etc use the name eg. `['button', 'input', 'select']`. +- For custom registry items use the URL of the registry item eg. `['https://example.com/r/hello-world.json']`. + +```json title="registry-item.json" showLineNumbers +{ + "registryDependencies": [ + "button", + "input", + "select", + "https://example.com/r/editor.json" + ] +} +``` + +Note: The CLI will automatically resolve remote registry dependencies. + +### files + +The `files` property is used to specify the files of your registry item. Each file has a `path`, `type` and `target` (optional) property. + +**The `target` property is required for `registry:page` and `registry:file` types.** + +```json title="registry-item.json" showLineNumbers +{ + "files": [ + { + "path": "registry/hello-world/page.tsx", + "type": "registry:page", + "target": "app/hello/page.tsx" + }, + { + "path": "registry/hello-world/hello-world.tsx", + "type": "registry:component" + }, + { + "path": "registry/hello-world/use-hello-world.ts", + "type": "registry:hook" + }, + { + "path": "registry/hello-world/.env", + "type": "registry:file", + "target": "~/.env" + } + ] +} +``` + +#### path + +The `path` property is used to specify the path to the file in your registry. This path is used by the build script to parse, transform and build the registry JSON payload. + +#### type + +The `type` property is used to specify the type of the file. See the [type](#type) section for more information. + +#### target + +The `target` property is used to indicate where the file should be placed in a project. This is optional and only required for `registry:page` and `registry:file` types. + +By default, the `shadcn` cli will read a project's `components.json` file to determine the target path. For some files, such as routes or config you can specify the target path manually. + +Use `~` to refer to the root of the project e.g `~/foo.config.js`. + +### tailwind + +The `tailwind` property is used for tailwind configuration such as `theme`, `plugins` and `content`. + +You can use the `tailwind.config` property to add colors, animations and plugins to your registry item. + +```json title="registry-item.json" showLineNumbers +{ + "tailwind": { + "config": { + "theme": { + "extend": { + "colors": { + "brand": "hsl(var(--brand))" + }, + "keyframes": { + "wiggle": { + "0%, 100%": { "transform": "rotate(-3deg)" }, + "50%": { "transform": "rotate(3deg)" } + } + }, + "animation": { + "wiggle": "wiggle 1s ease-in-out infinite" + } + } + } + } + } +} +``` + +### cssVars + +Use to define CSS variables for your registry item. + +```json title="registry-item.json" showLineNumbers +{ + "cssVars": { + "light": { + "brand": "20 14.3% 4.1%", + "radius": "0.5rem" + }, + "dark": { + "brand": "20 14.3% 4.1%" + } + } +} +``` + + + **Note:** When adding colors, make sure to also add them to the + `tailwind.config.theme.extend.colors` property. + + +### docs + +Use `docs` to show custom documentation or message when installing your registry item via the CLI. + +```json title="registry-item.json" showLineNumbers +{ + "docs": "Remember to add the FOO_BAR environment variable to your .env file." +} +``` + +### categories + +Use `categories` to organize your registry item. + +```json title="registry-item.json" showLineNumbers +{ + "categories": ["sidebar", "dashboard"] +} +``` + +### meta + +Use `meta` to add additional metadata to your registry item. You can add any key/value pair that you want to be available to the registry item. + +```json title="registry-item.json" showLineNumbers +{ + "meta": { "foo": "bar" } +} +``` diff --git a/apps/www/content/docs/registry/registry-json.mdx b/apps/www/content/docs/registry/registry-json.mdx new file mode 100644 index 00000000000..57ccb943fea --- /dev/null +++ b/apps/www/content/docs/registry/registry-json.mdx @@ -0,0 +1,87 @@ +--- +title: registry.json +description: Schema for running your own component registry. +--- + +The `registry.json` schema is used to define your custom component registry. + +```json title="registry.json" showLineNumbers +{ + "$schema": "https://ui.shadcn.com/schema/registry.json", + "name": "shadcn", + "homepage": "https://ui.shadcn.com", + "items": [ + { + "name": "hello-world", + "type": "registry:block", + "title": "Hello World", + "description": "A simple hello world component.", + "files": [ + { + "path": "registry/hello-world/hello-world.tsx", + "type": "registry:component" + } + ] + } + ] +} +``` + +## Definitions + +You can see the JSON Schema for `registry.json` [here](https://ui.shadcn.com/schema/registry.json). + +### $schema + +The `$schema` property is used to specify the schema for the `registry.json` file. + +```json title="registry.json" showLineNumbers +{ + "$schema": "https://ui.shadcn.com/schema/registry.json" +} +``` + +### name + +The `name` property is used to specify the name of your registry. This is used for data attributes and other metadata. + +```json title="registry.json" showLineNumbers +{ + "name": "acme" +} +``` + +### homepage + +The homepage of your registry. This is used for data attributes and other metadata. + +```json title="registry.json" showLineNumbers +{ + "homepage": "https://acme.com" +} +``` + +### items + +The `items` in your registry. Each item must implement the [registry-item schema specification](https://ui.shadcn.com/schema/registry-item.json). + +```json title="registry.json" showLineNumbers +{ + "items": [ + { + "name": "hello-world", + "type": "registry:block", + "title": "Hello World", + "description": "A simple hello world component.", + "files": [ + { + "path": "registry/hello-world/hello-world.tsx", + "type": "registry:component" + } + ] + } + ] +} +``` + +See the [registry-item schema documentation](/docs/registry/registry-item) for more information. diff --git a/apps/www/lib/rehype-npm-command.ts b/apps/www/lib/rehype-npm-command.ts index e0dd764da00..ee163bc5669 100644 --- a/apps/www/lib/rehype-npm-command.ts +++ b/apps/www/lib/rehype-npm-command.ts @@ -79,6 +79,21 @@ export function rehypeNpmCommand() { "bunx --bun" ) } + + // npm run. + if (node.properties?.["__rawString__"]?.startsWith("npm run")) { + const npmCommand = node.properties?.["__rawString__"] + node.properties["__npmCommand__"] = npmCommand + node.properties["__yarnCommand__"] = npmCommand.replace( + "npm run", + "yarn" + ) + node.properties["__pnpmCommand__"] = npmCommand.replace( + "npm run", + "pnpm" + ) + node.properties["__bunCommand__"] = npmCommand.replace("npm run", "bun") + } }) } } diff --git a/apps/www/package.json b/apps/www/package.json index e05530eef8f..aadd0c393b0 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -80,7 +80,7 @@ "react-resizable-panels": "^2.0.22", "react-wrap-balancer": "^0.4.1", "recharts": "2.12.7", - "shadcn": "2.1.8", + "shadcn": "2.2.0-canary.2", "sharp": "^0.31.3", "sonner": "^1.2.3", "swr": "2.2.6-beta.3", diff --git a/apps/www/public/images/registry-dark.png b/apps/www/public/images/registry-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..6028eaee1404d21bab02aae799e706a367c28821 GIT binary patch literal 21981 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

^Z43&)vdKCF&6ah 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�BGY9c>MFKneq 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 P*T6~rQ+mZZj<@~+#Sz4g literal 0 HcmV?d00001 diff --git a/apps/www/public/images/registry-light.png b/apps/www/public/images/registry-light.png new file mode 100644 index 0000000000000000000000000000000000000000..6d41e915017c12c83e151bf59f4546870222f35d GIT binary patch literal 22408 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 literal 0 HcmV?d00001 diff --git a/packages/shadcn/package.json b/packages/shadcn/package.json index ed4c4fb2ded..b05acbffc69 100644 --- a/packages/shadcn/package.json +++ b/packages/shadcn/package.json @@ -1,6 +1,6 @@ { "name": "shadcn", - "version": "2.1.8", + "version": "2.2.0-canary.2", "description": "Add components to your apps.", "publishConfig": { "access": "public" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 402b98dd022..5a6e654edc6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -292,7 +292,7 @@ importers: specifier: 2.12.7 version: 2.12.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) shadcn: - specifier: 2.1.8 + specifier: 2.2.0-canary.2 version: link:../../packages/shadcn sharp: specifier: ^0.31.3