Readable on every color
Each fill comes with the text color that passes WCAG AA on it, and onColor() picks one for colors you bring.
Wobbly lines, colors by instinct. It breaks the design rulebook, never the accessibility one.
npm i @plop-ui/reactMost interfaces look the same now: the same grid, the same radius, the same safe palette. Clean, correct and forgettable.
PlopUI goes the other way. Lines wobble, stickers sit a little crooked, and the colors come from instinct, not strategy. Every imperfection is on purpose, an experiment rather than a rule.
Break the visual rulebook all you like. The rules that keep the door open, like contrast, keyboard and screen readers, stay put. They’re what lets everyone join the fun.
Creativity is the brain having fun. This kit is mine. Go make it yours.
A sticker on the outside, a careful component on the inside. Here's what you get with every piece.
Each fill comes with the text color that passes WCAG AA on it, and onColor() picks one for colors you bring.
Buttons are buttons, switches are switches. Keyboard, focus and screen readers work before the drawing does.
Static pieces are Server Components, and every wobble comes from a seed, so the server and the browser draw the same thing.
Press a sticker and it squishes, springs back, and buzzes on a phone. Cancel shakes its head instead of throwing confetti.
Poster, cutting mat, notebook, kraft and riso, light and dark. Colors, type and motion all come from tokens.
Turn on reduced motion and every animation in the kit stops. State changes still show, just instantly.
Polaroids, tickets and notebook pages, each one a real component.
Labels, as strips of washi tape. Removable ones peel off and fly away.
Sketched, inked, colored, shipped. The current step boils so eyes find it.
The switch knob sleeps when off and wakes up when on. Ticks are drawn in one stroke.
Drawn freehand over accessible elements. Try any of them in the playground.
Every piece starts as one cobalt marker line, with a little wobble left in on purpose.
A paper border and a soft offset shadow, like a die-cut sheet you could peel.
Peel one back and there's a native element: keyboard, focus and screen readers already work.
It squishes into the paper, springs back and buzzes on a phone. Go on, it's a real Button.
Install it, put a PlopProvider at the root, and your pages render on the server with Next.js.
npm i @plop-ui/reactPick the paper your app sits on. Text colors adjust so it all stays readable, light or dark.
import { PlopProvider, Button } from "@plop-ui/react";
export default function Page() {
return (
<PlopProvider surface="poster">
<Button variant="tomato" buddy>
Post sketch
</Button>
</PlopProvider>
);
}