Initialize shadcn/ui + Tailwind CSS v4 in Vite projects (Vite-specific, not Next.js/Remix)...
For Next.js, Remix, or other frameworks, You MUST use their respective shadcn installation guides.
If prerequisites are missing, You MUST help the user set up Tailwind v4 first.
Action: You MUST update tsconfig.json to include compilerOptions:
{
"files": [],
"references": [
{ "path": "./tsconfig.app.json" },
{ "path": "./tsconfig.node.json" }
],
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}
}
}
import tailwindcss from "@tailwindcss/vite";
import path from "path";
export default defineConfig({
plugins: [react(), tailwindcss()],
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
},
},
});
You SHOULD recommend these settings:
You MUST wait for user confirmation before continuing.
You SHOULD instruct them to select all components (a then Enter).
You MUST wait for user confirmation before continuing.
You SHOULD instruct them to answer NO to all overwrite prompts.
You MUST wait for user confirmation before continuing.
Required packages:
tw-animate-css (devDep) - v4 replacement for tailwindcss-animatetailwind-merge (dep) - used by cn() utilityclsx (dep) - used by cn() utilityclass-variance-authority (dep) - used by shadcn componentsYou MUST run if any are missing:
npm install tailwind-merge clsx class-variance-authority
npm install -D tw-animate-css
@import "tailwindcss";
@import "tw-animate-css";
@custom-variant dark (&:is(.dark *));
@theme inline {
/* Variable mappings: --color-X: var(--X); */
}
:root {
/* Token definitions using oklch() */
}
.dark {
/* Dark mode tokens using oklch() */
}
@layer base {
* {
@apply border-border outline-ring/50;
}
body {
@apply bg-background text-foreground;
}
}
You MUST remove these if present:
@media (prefers-color-scheme) blocks@theme blocks (keep only @theme inline)@config directivesYou MUST fix any TypeScript errors before marking setup complete.