From 5edf9c95b7d13dcbd325aa4cf6b48d58a53b07c6 Mon Sep 17 00:00:00 2001 From: shadcn Date: Sun, 8 Mar 2026 12:05:55 +0400 Subject: [PATCH 1/3] fix(shadcn): fallback style resolving issue --- .changeset/dark-lemons-invite.md | 5 +++++ packages/shadcn/src/utils/get-config.ts | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 .changeset/dark-lemons-invite.md diff --git a/.changeset/dark-lemons-invite.md b/.changeset/dark-lemons-invite.md new file mode 100644 index 0000000000..69d26e04d3 --- /dev/null +++ b/.changeset/dark-lemons-invite.md @@ -0,0 +1,5 @@ +--- +"shadcn": patch +--- + +fix fallback style resolving issue diff --git a/packages/shadcn/src/utils/get-config.ts b/packages/shadcn/src/utils/get-config.ts index 9e7784ab70..45b5cdfd5d 100644 --- a/packages/shadcn/src/utils/get-config.ts +++ b/packages/shadcn/src/utils/get-config.ts @@ -213,7 +213,17 @@ export function findCommonRoot(cwd: string, resolvedPath: string) { // TODO: Cache this call. export async function getTargetStyleFromConfig(cwd: string, fallback: string) { const projectInfo = await getProjectInfo(cwd) - return projectInfo?.tailwindVersion === "v4" ? "new-york-v4" : fallback + + // Only override legacy v3 style names for Tailwind v4 projects. + // Preserve v4 style names like "base-nova", "radix-nova", etc. + if ( + projectInfo?.tailwindVersion === "v4" && + (!fallback || fallback === "new-york" || fallback === "default") + ) { + return "new-york-v4" + } + + return fallback } export function getBase(style: string | undefined) { From 7e405f1568a7dc430a203b8181579f77ef47e1d4 Mon Sep 17 00:00:00 2001 From: shadcn Date: Sun, 8 Mar 2026 12:39:38 +0400 Subject: [PATCH 2/3] fix: --base in project form --- apps/v4/app/(create)/components/project-form.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/v4/app/(create)/components/project-form.tsx b/apps/v4/app/(create)/components/project-form.tsx index 6399659d35..d64a7b7039 100644 --- a/apps/v4/app/(create)/components/project-form.tsx +++ b/apps/v4/app/(create)/components/project-form.tsx @@ -80,10 +80,11 @@ export function ProjectForm({ const commands = React.useMemo(() => { const presetFlag = ` --preset ${presetCode}` + const baseFlag = params.base !== "radix" ? ` --base ${params.base}` : "" const templateFlag = ` --template ${framework}` const monorepoFlag = isMonorepo ? " --monorepo" : "" const rtlFlag = params.rtl ? " --rtl" : "" - const flags = `${presetFlag}${templateFlag}${monorepoFlag}${rtlFlag}` + const flags = `${presetFlag}${baseFlag}${templateFlag}${monorepoFlag}${rtlFlag}` return IS_LOCAL_DEV && !process.env.NEXT_PUBLIC_RC ? { @@ -98,7 +99,7 @@ export function ProjectForm({ yarn: `yarn dlx shadcn${SHADCN_VERSION} init${flags}`, bun: `bunx --bun shadcn${SHADCN_VERSION} init${flags}`, } - }, [framework, isMonorepo, params.rtl, presetCode]) + }, [framework, isMonorepo, params.base, params.rtl, presetCode]) const command = commands[packageManager] From 21c64cb5610ca66180e5b7217b436ff4762adfb7 Mon Sep 17 00:00:00 2001 From: shadcn Date: Sun, 8 Mar 2026 12:39:47 +0400 Subject: [PATCH 3/3] fix --- packages/shadcn/src/utils/get-config.ts | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/packages/shadcn/src/utils/get-config.ts b/packages/shadcn/src/utils/get-config.ts index 45b5cdfd5d..9e7784ab70 100644 --- a/packages/shadcn/src/utils/get-config.ts +++ b/packages/shadcn/src/utils/get-config.ts @@ -213,17 +213,7 @@ export function findCommonRoot(cwd: string, resolvedPath: string) { // TODO: Cache this call. export async function getTargetStyleFromConfig(cwd: string, fallback: string) { const projectInfo = await getProjectInfo(cwd) - - // Only override legacy v3 style names for Tailwind v4 projects. - // Preserve v4 style names like "base-nova", "radix-nova", etc. - if ( - projectInfo?.tailwindVersion === "v4" && - (!fallback || fallback === "new-york" || fallback === "default") - ) { - return "new-york-v4" - } - - return fallback + return projectInfo?.tailwindVersion === "v4" ? "new-york-v4" : fallback } export function getBase(style: string | undefined) {