Install with shadcn
Already use the shadcn CLI? Add PlopUI with one command. It installs the real npm packages, sets up the styles once, and drops an editable example or a whole ready-made screen into your project.
One command
npx shadcn@latest add https://plopui.com/r/button.json
That command:
- installs
@plop-ui/reactand@plop-ui/fontsfrom npm; - adds
components/plop/plop-provider.tsx(only the first time), which loads PlopUI's styles and fonts; - adds an example you can edit, here
components/plop/button-example.tsx.
The components themselves stay in node_modules, so npm update keeps bringing you fixes. Only the examples and blocks are copied into your project, and they're yours to change.
Wrap your layout once
After the first install, put PlopProvider around your app. In Next.js, that's app/layout.tsx:
import { PlopProvider } from "@/components/plop/plop-provider";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body className="plop-surface" style={{ minHeight: "100vh" }}>
<PlopProvider>{children}</PlopProvider>
</body>
</html>
);
}
plop-surface paints the paper and sets PlopUI's body font; minHeight keeps the paper going to the bottom of short pages. PlopProvider already shows toasts, so there's no <Toaster /> to add. Pick another paper with <PlopProvider surface="notebook"> (see surfaces).
Blocks: whole screens
Ready-made screens built only from PlopUI components. Each is a single file you can rename, restyle and wire to your own data.
npx shadcn@latest add https://plopui.com/r/settings-panel.json
npx shadcn@latest add https://plopui.com/r/signup-card.json
npx shadcn@latest add https://plopui.com/r/empty-state.json
- Settings panel Profile fields, notification switches, a paper picker, and a Save button that toasts with a buddy.
npx shadcn@latest add https://plopui.com/r/settings-panel.json - Sign-up card Name, email and password with friendly errors, a terms checkbox, and a celebration when it works.
npx shadcn@latest add https://plopui.com/r/signup-card.json - Empty state A buddy, a short message and one clear next step, for lists with nothing in them yet.
Nothing here yet
Your sketchbook is empty. Start with one quick doodle; it doesn't have to be good.
npx shadcn@latest add https://plopui.com/r/empty-state.json
Every component
Each component page has a matching registry item that installs PlopUI and adds that page's example.
- Button
npx shadcn@latest add https://plopui.com/r/button.json - IconButton
npx shadcn@latest add https://plopui.com/r/icon-button.json - Tooltip
npx shadcn@latest add https://plopui.com/r/tooltip.json - Switch
npx shadcn@latest add https://plopui.com/r/switch.json - Checkbox
npx shadcn@latest add https://plopui.com/r/checkbox.json - RadioGroup
npx shadcn@latest add https://plopui.com/r/radio.json - Select & MultiSelect
npx shadcn@latest add https://plopui.com/r/select.json - TextField
npx shadcn@latest add https://plopui.com/r/text-field.json - Tag
npx shadcn@latest add https://plopui.com/r/tag.json - Avatar
npx shadcn@latest add https://plopui.com/r/avatar.json - Cards
npx shadcn@latest add https://plopui.com/r/cards.json - Tabs
npx shadcn@latest add https://plopui.com/r/tabs.json - Count & StatusDot
npx shadcn@latest add https://plopui.com/r/badges.json - StatusTimeline
npx shadcn@latest add https://plopui.com/r/status-timeline.json - Loading states
npx shadcn@latest add https://plopui.com/r/loading.json - Callout
npx shadcn@latest add https://plopui.com/r/callout.json - Toast
npx shadcn@latest add https://plopui.com/r/toast.json - SearchField & CommandPalette
npx shadcn@latest add https://plopui.com/r/search.json - Menu
npx shadcn@latest add https://plopui.com/r/menu.json - WordSticker & Doodle
npx shadcn@latest add https://plopui.com/r/word-sticker.json - Buddy
npx shadcn@latest add https://plopui.com/r/buddy.json - PlopProvider
npx shadcn@latest add https://plopui.com/r/provider.json - Sheet & Heading
npx shadcn@latest add https://plopui.com/r/sheet-heading.json
Good to know
- Tailwind is optional. The blocks and examples don't use it, and PlopUI's styles aren't affected by Tailwind's reset, so it's fine either way.
- Leave room above
buddybuttons. The character peeks about 30px above the button. - Not using shadcn? Install the packages directly: see Installation.
- The whole registry is listed at /r/registry.json, in the format shadcn's CLI reads.