diff --git a/apps/v4/app/(create)/components/customizer.tsx b/apps/v4/app/(create)/components/customizer.tsx index 352cf94632..f1e57620b6 100644 --- a/apps/v4/app/(create)/components/customizer.tsx +++ b/apps/v4/app/(create)/components/customizer.tsx @@ -8,8 +8,6 @@ import { CardHeader, } from "@/examples/base/ui/card" import { FieldGroup } from "@/examples/base/ui/field" -import { Separator } from "@/examples/base/ui/separator" -import { CardTitle } from "@/examples/radix/ui/card" import { type RegistryItem } from "shadcn/schema" import { useIsMobile } from "@/hooks/use-mobile" @@ -23,7 +21,6 @@ import { FontPicker } from "@/app/(create)/components/font-picker" import { IconLibraryPicker } from "@/app/(create)/components/icon-library-picker" import { MainMenu } from "@/app/(create)/components/main-menu" import { MenuColorPicker } from "@/app/(create)/components/menu-picker" -import { ProjectForm } from "@/app/(create)/components/project-form" import { RadiusPicker } from "@/app/(create)/components/radius-picker" import { RandomButton } from "@/app/(create)/components/random-button" import { ResetDialog } from "@/app/(create)/components/reset-button" @@ -58,7 +55,7 @@ export function Customizer({ - + {isMobile && }
Menu
-
+
{currentMenu?.label}
diff --git a/apps/v4/app/(create)/components/project-form.tsx b/apps/v4/app/(create)/components/project-form.tsx index d64a7b7039..7cb6a6a30a 100644 --- a/apps/v4/app/(create)/components/project-form.tsx +++ b/apps/v4/app/(create)/components/project-form.tsx @@ -35,6 +35,7 @@ import { HugeiconsIcon } from "@hugeicons/react" import { cn } from "@/lib/utils" import { useConfig } from "@/hooks/use-config" import { copyToClipboardWithMeta } from "@/components/copy-button" +import { BASES, type BaseName } from "@/registry/config" import { usePresetCode } from "@/app/(create)/hooks/use-design-system" import { useDesignSystemSearchParams, @@ -129,68 +130,74 @@ export function ProjectForm({ }> Create Project - + Create Project - Pick a template and configure your project. Available for all major - React frameworks. + Pick a template and configure your project. - - - Template - - - -
- - Options - - - - - Create a monorepo - - { - const framework = getFramework(params.template ?? "next") - setParams({ - template: getTemplateValue( - framework, - checked === true - ) as typeof params.template, - }) - }} - /> +
+ + + Template + - - - - Enable RTL support - - - setParams({ rtl: checked === true }) - } - /> + + Base + -
-
+ +
+ + Options + + + + + Create a monorepo + + { + const framework = getFramework(params.template ?? "next") + setParams({ + template: getTemplateValue( + framework, + checked === true + ) as typeof params.template, + }) + }} + /> + + + + + + Enable RTL support + + + setParams({ rtl: checked === true }) + } + /> + +
+ +
) }) + +const BaseGrid = React.memo(function BaseGrid({ + base, + setParams, +}: { + base: DesignSystemSearchParams["base"] + setParams: ReturnType[1] +}) { + const handleBaseChange = React.useCallback( + (value: string) => { + setParams({ base: value as BaseName }) + }, + [setParams] + ) + + return ( + + {BASES.map((item) => ( + + + +
+ {item.title} + + + + + ))} + + ) +}) diff --git a/apps/v4/public/r/registries.json b/apps/v4/public/r/registries.json index 652e11a585..2a81c4c2aa 100644 --- a/apps/v4/public/r/registries.json +++ b/apps/v4/public/r/registries.json @@ -916,5 +916,17 @@ "homepage": "https://ui.flexnative.com", "url": "https://ui.flexnative.com/r/{name}.json", "description": "A collection of customizable UI blocks with interactive live previews" + }, + { + "name": "@nexus-ui", + "homepage": "https://nexus-ui.dev", + "url": "https://nexus-ui.dev/r/{name}.json", + "description": "Open-source component library of composable, copy-paste primitives for building AI interfaces (chat, streaming, multimodal)" + }, + { + "name": "@sabraman", + "homepage": "https://sabraman.ru/components", + "url": "https://sabraman.ru/r/{name}.json", + "description": "Legacy skeuomorphic UI components and blocks for shadcn." } ] diff --git a/apps/v4/registry/directory.json b/apps/v4/registry/directory.json index 891ab13ab3..e672f836a2 100644 --- a/apps/v4/registry/directory.json +++ b/apps/v4/registry/directory.json @@ -1070,5 +1070,19 @@ "url": "https://ui.flexnative.com/r/{name}.json", "description": "A collection of customizable UI blocks with interactive live previews", "logo": "" - } + }, + { + "name": "@nexus-ui", + "homepage": "https://nexus-ui.dev", + "url": "https://nexus-ui.dev/r/{name}.json", + "description": "Open-source component library of composable, copy-paste primitives for building AI interfaces (chat, streaming, multimodal)", + "logo": "" + }, + { + "name": "@sabraman", + "homepage": "https://sabraman.ru/components", + "url": "https://sabraman.ru/r/{name}.json", + "description": "Legacy skeuomorphic UI components and blocks for shadcn.", + "logo": " " + } ] diff --git a/skills/shadcn/SKILL.md b/skills/shadcn/SKILL.md index 8a76cc0dc2..39d1e48176 100644 --- a/skills/shadcn/SKILL.md +++ b/skills/shadcn/SKILL.md @@ -2,6 +2,7 @@ name: shadcn description: Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI. Provides project context, component docs, and usage examples. Applies when working with shadcn/ui, component registries, presets, --preset codes, or any project with a components.json file. Also triggers for "shadcn init", "create an app with --preset", or "switch to --preset". user-invocable: false +allowed-tools: Bash(npx shadcn@latest *), Bash(pnpm dlx shadcn@latest *), Bash(bunx --bun shadcn@latest *) --- # shadcn/ui @@ -13,7 +14,7 @@ A framework for building ui, components and design systems. Components are added ## Current Project Context ```json -!`npx shadcn@latest info --json 2>/dev/null || echo '{"error": "No shadcn project found. Run shadcn init first."}'` +!`npx shadcn@latest info --json` ``` The JSON above contains the project config and installed components. Use `npx shadcn@latest docs ` to get documentation and example URLs for any component. diff --git a/templates/astro-app/package.json b/templates/astro-app/package.json index 7bce68808a..2696bda9bf 100644 --- a/templates/astro-app/package.json +++ b/templates/astro-app/package.json @@ -14,24 +14,24 @@ }, "dependencies": { "@astrojs/react": "^4.4.2", - "@tailwindcss/vite": "^4.1.18", + "@tailwindcss/vite": "^4.2.1", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "astro": "^5.17.1", + "astro": "^5.18.1", "react": "^19.2.4", "react-dom": "^19.2.4", - "tailwindcss": "^4.1.18" + "tailwindcss": "^4.2.1" }, "devDependencies": { - "@eslint/js": "^9.39.1", - "eslint": "^9.39.1", + "@eslint/js": "^9.39.4", + "eslint": "^9.39.4", "eslint-plugin-react-hooks": "^7.0.1", - "eslint-plugin-react-refresh": "^0.4.24", + "eslint-plugin-react-refresh": "^0.5.2", "globals": "^16.5.0", "prettier": "^3.8.1", "prettier-plugin-astro": "^0.14.1", "prettier-plugin-tailwindcss": "^0.7.2", "typescript": "~5.9.3", - "typescript-eslint": "^8.46.4" + "typescript-eslint": "^8.57.1" } } diff --git a/templates/astro-monorepo/package.json b/templates/astro-monorepo/package.json index 4772b9b07f..a55c5bb1cd 100644 --- a/templates/astro-monorepo/package.json +++ b/templates/astro-monorepo/package.json @@ -13,10 +13,10 @@ "prettier": "^3.8.1", "prettier-plugin-astro": "^0.14.1", "prettier-plugin-tailwindcss": "^0.7.2", - "turbo": "^2.8.8", + "turbo": "^2.8.17", "typescript": "5.9.3" }, - "packageManager": "pnpm@9.0.6", + "packageManager": "pnpm@9.15.9", "engines": { "node": ">=20" } diff --git a/templates/next-app/package.json b/templates/next-app/package.json index 0f9127bfc0..513d6666ff 100644 --- a/templates/next-app/package.json +++ b/templates/next-app/package.json @@ -12,23 +12,23 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "next": "16.1.6", + "next": "16.1.7", "next-themes": "^0.4.6", "react": "^19.2.4", "react-dom": "^19.2.4" }, "devDependencies": { "@eslint/eslintrc": "^3", - "@tailwindcss/postcss": "^4.1.18", - "@types/node": "^25.1.0", - "@types/react": "^19.2.10", + "@tailwindcss/postcss": "^4.2.1", + "@types/node": "^25.5.0", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "eslint": "^9.39.2", - "eslint-config-next": "16.1.6", + "eslint": "^9.39.4", + "eslint-config-next": "16.1.7", "prettier": "^3.8.1", "prettier-plugin-tailwindcss": "^0.7.2", "postcss": "^8", - "tailwindcss": "^4.1.18", + "tailwindcss": "^4.2.1", "typescript": "^5.9.3" } } diff --git a/templates/next-monorepo/package.json b/templates/next-monorepo/package.json index 03929240da..3e042e9216 100644 --- a/templates/next-monorepo/package.json +++ b/templates/next-monorepo/package.json @@ -14,10 +14,10 @@ "@workspace/typescript-config": "workspace:*", "prettier": "^3.8.1", "prettier-plugin-tailwindcss": "^0.7.2", - "turbo": "^2.8.8", + "turbo": "^2.8.17", "typescript": "5.9.3" }, - "packageManager": "pnpm@9.0.6", + "packageManager": "pnpm@9.15.9", "engines": { "node": ">=20" } diff --git a/templates/react-router-app/package.json b/templates/react-router-app/package.json index a5ec9c779c..52e2f79e42 100644 --- a/templates/react-router-app/package.json +++ b/templates/react-router-app/package.json @@ -10,24 +10,24 @@ "format": "prettier --write \"**/*.{ts,tsx}\"" }, "dependencies": { - "@react-router/node": "7.12.0", - "@react-router/serve": "7.12.0", - "isbot": "^5.1.31", + "@react-router/node": "7.13.1", + "@react-router/serve": "7.13.1", + "isbot": "^5.1.36", "react": "^19.2.4", "react-dom": "^19.2.4", - "react-router": "7.12.0" + "react-router": "7.13.1" }, "devDependencies": { - "@react-router/dev": "7.12.0", - "@tailwindcss/vite": "^4.1.13", + "@react-router/dev": "7.13.1", + "@tailwindcss/vite": "^4.2.1", "@types/node": "^22", - "@types/react": "^19.2.7", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "prettier": "^3.8.1", "prettier-plugin-tailwindcss": "^0.7.2", - "tailwindcss": "^4.1.13", - "typescript": "^5.9.2", - "vite": "^7.1.7", + "tailwindcss": "^4.2.1", + "typescript": "^5.9.3", + "vite": "^7.3.1", "vite-tsconfig-paths": "^5.1.4" } } diff --git a/templates/react-router-monorepo/package.json b/templates/react-router-monorepo/package.json index c080fb55c5..6540fbe797 100644 --- a/templates/react-router-monorepo/package.json +++ b/templates/react-router-monorepo/package.json @@ -11,10 +11,10 @@ "devDependencies": { "prettier": "^3.8.1", "prettier-plugin-tailwindcss": "^0.7.2", - "turbo": "^2.8.8", + "turbo": "^2.8.17", "typescript": "5.9.3" }, - "packageManager": "pnpm@9.0.6", + "packageManager": "pnpm@9.15.9", "engines": { "node": ">=20" } diff --git a/templates/start-app/package.json b/templates/start-app/package.json index 77b29faad2..1359fae334 100644 --- a/templates/start-app/package.json +++ b/templates/start-app/package.json @@ -12,34 +12,34 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@tailwindcss/vite": "^4.1.18", - "@tanstack/react-devtools": "^0.7.0", - "@tanstack/react-router": "^1.132.0", - "@tanstack/react-router-devtools": "^1.132.0", - "@tanstack/react-router-ssr-query": "^1.131.7", - "@tanstack/react-start": "^1.132.0", - "@tanstack/router-plugin": "^1.132.0", + "@tailwindcss/vite": "^4.2.1", + "@tanstack/react-devtools": "^0.10.0", + "@tanstack/react-router": "^1.167.4", + "@tanstack/react-router-devtools": "^1.166.9", + "@tanstack/react-router-ssr-query": "^1.166.9", + "@tanstack/react-start": "^1.166.15", + "@tanstack/router-plugin": "^1.166.13", "nitro": "latest", - "react": "^19.2.0", - "react-dom": "^19.2.0", - "tailwindcss": "^4.0.6", + "react": "^19.2.4", + "react-dom": "^19.2.4", + "tailwindcss": "^4.2.1", "vite-tsconfig-paths": "^5.1.4" }, "devDependencies": { - "@tanstack/devtools-vite": "^0.3.11", - "@tanstack/eslint-config": "^0.3.0", - "@testing-library/dom": "^10.4.0", - "@testing-library/react": "^16.2.0", - "@types/node": "^22.10.2", - "@types/react": "^19.2.0", - "@types/react-dom": "^19.2.0", - "@vitejs/plugin-react": "^5.0.4", - "jsdom": "^27.0.0", - "prettier": "^3.5.3", + "@tanstack/devtools-vite": "^0.6.0", + "@tanstack/eslint-config": "^0.4.0", + "@testing-library/dom": "^10.4.1", + "@testing-library/react": "^16.3.2", + "@types/node": "^22.19.15", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.2.0", + "jsdom": "^27.4.0", + "prettier": "^3.8.1", "prettier-plugin-tailwindcss": "^0.7.2", - "typescript": "^5.7.2", - "vite": "^7.1.7", - "vitest": "^3.0.5", + "typescript": "^5.9.3", + "vite": "^7.3.1", + "vitest": "^3.2.4", "web-vitals": "^5.1.0" } } diff --git a/templates/start-monorepo/package.json b/templates/start-monorepo/package.json index 61cf76f04b..6b7b5515e5 100644 --- a/templates/start-monorepo/package.json +++ b/templates/start-monorepo/package.json @@ -12,10 +12,10 @@ "devDependencies": { "prettier": "^3.8.1", "prettier-plugin-tailwindcss": "^0.7.2", - "turbo": "^2.8.8", + "turbo": "^2.8.17", "typescript": "5.9.3" }, - "packageManager": "pnpm@9.0.6", + "packageManager": "pnpm@9.15.9", "engines": { "node": ">=20" } diff --git a/templates/vite-app/package.json b/templates/vite-app/package.json index 5a1dd70945..45901d1384 100644 --- a/templates/vite-app/package.json +++ b/templates/vite-app/package.json @@ -12,25 +12,25 @@ "preview": "vite preview" }, "dependencies": { - "@tailwindcss/vite": "^4.1.17", - "react": "^19.2.0", - "react-dom": "^19.2.0", - "tailwindcss": "^4.1.17" + "@tailwindcss/vite": "^4.2.1", + "react": "^19.2.4", + "react-dom": "^19.2.4", + "tailwindcss": "^4.2.1" }, "devDependencies": { - "@eslint/js": "^9.39.1", - "@types/node": "^24.10.1", - "@types/react": "^19.2.5", + "@eslint/js": "^9.39.4", + "@types/node": "^24.12.0", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^5.1.1", - "eslint": "^9.39.1", + "@vitejs/plugin-react": "^5.2.0", + "eslint": "^9.39.4", "eslint-plugin-react-hooks": "^7.0.1", - "eslint-plugin-react-refresh": "^0.4.24", + "eslint-plugin-react-refresh": "^0.5.2", "globals": "^16.5.0", "prettier": "^3.8.1", "prettier-plugin-tailwindcss": "^0.7.2", "typescript": "~5.9.3", - "typescript-eslint": "^8.46.4", - "vite": "^7.2.4" + "typescript-eslint": "^8.57.1", + "vite": "^7.3.1" } } diff --git a/templates/vite-monorepo/package.json b/templates/vite-monorepo/package.json index 73d474feeb..1c84a25aca 100644 --- a/templates/vite-monorepo/package.json +++ b/templates/vite-monorepo/package.json @@ -12,10 +12,10 @@ "devDependencies": { "prettier": "^3.8.1", "prettier-plugin-tailwindcss": "^0.7.2", - "turbo": "^2.8.8", + "turbo": "^2.8.17", "typescript": "5.9.3" }, - "packageManager": "pnpm@9.0.6", + "packageManager": "pnpm@9.15.9", "engines": { "node": ">=20" }