diff --git a/apps/v4/components/registry/AddRegistryModal.vue b/apps/v4/components/registry/AddRegistryModal.vue
new file mode 100644
index 000000000..5c302c0c6
--- /dev/null
+++ b/apps/v4/components/registry/AddRegistryModal.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
diff --git a/apps/v4/components/registry/RegistryList.vue b/apps/v4/components/registry/RegistryList.vue
new file mode 100644
index 000000000..79a6a2fe3
--- /dev/null
+++ b/apps/v4/components/registry/RegistryList.vue
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ directoryRegistryList.length }}
+ {{ directoryRegistryList.length === 1 ? "Registry" : "Registries" }}
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ {{ registry.name }}
+
+
+
+
+ {{ registry.description }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/v4/content/docs/directory.md b/apps/v4/content/docs/directory.md
new file mode 100644
index 000000000..68c7086aa
--- /dev/null
+++ b/apps/v4/content/docs/directory.md
@@ -0,0 +1,19 @@
+---
+title: Registry Directory
+description: Discover community registries for shadcn/ui components and blocks.
+---
+
+These registries are built into the CLI with no additional configuration required. To add a component, run:
+
+```bash
+npx shadcn-vue add @/.
+```
+
+
+Community registries are maintained by third-party developers and are not officially curated. Always review code on installation to ensure it meets your security and quality standards.
+
+
+
+Don't see a registry? [Learn how to add it here.](/docs/registry)
+
+
diff --git a/apps/v4/lib/config.ts b/apps/v4/lib/config.ts
index 85f63ba5d..e39d7f6b3 100644
--- a/apps/v4/lib/config.ts
+++ b/apps/v4/lib/config.ts
@@ -25,6 +25,14 @@ export const siteConfig = {
href: '/charts/area',
label: 'Charts',
},
+ {
+ href: '/docs/directory',
+ label: 'Directory',
+ },
+ {
+ href: '/themes',
+ label: 'Themes',
+ },
{
href: '/colors',
label: 'Colors',
diff --git a/apps/v4/lib/directory-registry.ts b/apps/v4/lib/directory-registry.ts
new file mode 100644
index 000000000..7361e850b
--- /dev/null
+++ b/apps/v4/lib/directory-registry.ts
@@ -0,0 +1,10 @@
+export interface DirectoryRegistry {
+ name: string
+ description: string
+ link: string
+ command?: string
+ logo: string
+}
+import directoryJson from '@/registry/directory.json'
+
+export const directoryRegistryList: DirectoryRegistry[] = [...directoryJson]
diff --git a/apps/v4/registry/directory.json b/apps/v4/registry/directory.json
new file mode 100644
index 000000000..7dbf08cfa
--- /dev/null
+++ b/apps/v4/registry/directory.json
@@ -0,0 +1,22 @@
+[
+ {
+ "name": "Insipira UI",
+ "description": "Inspira UI is a collection of reusable, animated components powered by TailwindCSS , motion-v , GSAP & threejs — crafted to help you ship faster and better.",
+ "link": "https://inspira-ui.com/docs/en",
+ "logo": "https://cdn.inspira-ui.com/logo-dark.svg"
+ },
+ {
+ "name": "Stunning UI",
+ "description": "Create Stunning Websites That Stand Out",
+ "link": "https://www.stunningui.com/",
+ "logo": "https://robertshaw.id/assets/stunning-ui.svg"
+ },
+
+ {
+ "name": "Mapcn",
+ "description": "Beautiful maps,made simple.",
+ "link": "https://mapcn-vue.geoql.in/",
+ "logo": "https://raw.githubusercontent.com/geoql/v-maplibre/refs/heads/main/apps/mapcn-vue/public/favicon.svg",
+ "command": "npx shadcn-vue@latest add https://mapcn-vue.geoql.in/r/map"
+ }
+]
diff --git a/apps/v4/registry/new-york-v4/ui/carousel/CarouselContent.vue b/apps/v4/registry/new-york-v4/ui/carousel/CarouselContent.vue
index bd3db7e7b..78cbb52fe 100644
--- a/apps/v4/registry/new-york-v4/ui/carousel/CarouselContent.vue
+++ b/apps/v4/registry/new-york-v4/ui/carousel/CarouselContent.vue
@@ -8,23 +8,20 @@ defineOptions({
})
const props = defineProps()
-
+// @ts-expect-error Skip this when building since its a neede var
const { carouselRef, orientation } = useCarousel()
-