Skip to content

shadcn/ui

  1. Install TailwindCSS.

  2. Install shadcn/ui

    Terminal window
    npx shadcn@latest init

    It will ask you what theme you want to use.

    This command will create a components.json file in the root of your project. It contains all the configuration for our shadcn/ui components.

    If you want to match RedwoodSDK conventions, add the following aliases to the components.json file:

    components.json
    ...
    "aliases": {
    "components": "@/app/components",
    "utils": "@/app/lib/utils",
    "ui": "@/app/components/ui",
    "lib": "@/app/lib",
    "hooks": "@/app/hooks"
    },
    ...
  3. Now, you should be able to add components: You can add components in bulk by running:

    Terminal window
    npx shadcn@latest add

    Or, you can add a single component by running:

    Terminal window
    npx shadcn@latest add <COMPONENT-NAME>

    Components will be added to the src/app/components/ui folder.

    • Directorysrc/
      • Directoryapp/
        • Directorycomponents/
          • Directoryui/

By default, the shadcn Toaster (from sonner) might not work if added directly to the Document because it needs to be client-side and properly encapsulated within the route tree where toasts are triggered.

To make it work:

  1. Create a “Client Component” for the Toaster.
  2. Create a Layout that encapsulates your routes.
  3. Render the Toaster within that Layout.
src/app/components/toaster.tsx
"use client";
import { Toaster as Sonner } from "@/app/components/ui/sonner";
export function Toaster() {
return <Sonner />;
}
src/app/layouts/main-layout.tsx
import { Toaster } from "@/app/components/Toaster";
export function MainLayout({ children }: { children: React.ReactNode }) {
return (
<>
{children}
<Toaster />
</>
);
}