{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "plopui",
  "homepage": "https://plopui.com",
  "items": [
    {
      "name": "plop-setup",
      "type": "registry:lib",
      "title": "PlopUI setup",
      "description": "Installs @plop-ui/react and @plop-ui/fonts, loads their styles once, and gives you <PlopProvider>.",
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "docs": "Wrap your root layout once: import { PlopProvider } from \"@/components/plop/plop-provider\" and put <PlopProvider> around {children}. Docs: https://plopui.com/docs/getting-started",
      "files": [
        {
          "path": "registry/plopui/plop-provider.tsx",
          "type": "registry:lib",
          "target": "components/plop/plop-provider.tsx"
        }
      ]
    },
    {
      "name": "button",
      "type": "registry:component",
      "title": "Button",
      "description": "The hero sticker. Peels on hover, squishes on press, springs back. Add a buddy for the one action that matters most on a screen, and a burst for the presses worth celebrating.",
      "categories": [
        "actions"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/button-example.tsx. Docs: https://plopui.com/docs/components/button",
      "files": [
        {
          "path": "registry/plopui/button-example.tsx",
          "type": "registry:component",
          "target": "components/plop/button-example.tsx"
        }
      ]
    },
    {
      "name": "icon-button",
      "type": "registry:component",
      "title": "IconButton",
      "description": "A round sticker with just an icon. The label is required, so it can never ship without a name.",
      "categories": [
        "actions"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/icon-button-example.tsx. Docs: https://plopui.com/docs/components/icon-button",
      "files": [
        {
          "path": "registry/plopui/icon-button-example.tsx",
          "type": "registry:component",
          "target": "components/plop/icon-button-example.tsx"
        }
      ]
    },
    {
      "name": "tooltip",
      "type": "registry:component",
      "title": "Tooltip",
      "description": "A speech bubble that pops out of whatever it explains. Opens on hover and keyboard focus.",
      "categories": [
        "actions"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/tooltip-example.tsx. Docs: https://plopui.com/docs/components/tooltip",
      "files": [
        {
          "path": "registry/plopui/tooltip-example.tsx",
          "type": "registry:component",
          "target": "components/plop/tooltip-example.tsx"
        }
      ]
    },
    {
      "name": "switch",
      "type": "registry:component",
      "title": "Switch",
      "description": "The knob is a little face. It sleeps when off and wakes up when you flip it on.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/switch-example.tsx. Docs: https://plopui.com/docs/components/switch",
      "files": [
        {
          "path": "registry/plopui/switch-example.tsx",
          "type": "registry:component",
          "target": "components/plop/switch-example.tsx"
        }
      ]
    },
    {
      "name": "checkbox",
      "type": "registry:component",
      "title": "Checkbox",
      "description": "The tick is drawn in one stroke and overshoots the box, like a pen would.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/checkbox-example.tsx. Docs: https://plopui.com/docs/components/checkbox",
      "files": [
        {
          "path": "registry/plopui/checkbox-example.tsx",
          "type": "registry:component",
          "target": "components/plop/checkbox-example.tsx"
        }
      ]
    },
    {
      "name": "radio",
      "type": "registry:component",
      "title": "RadioGroup",
      "description": "Radios fill with an ink blob. A fieldset of real radio inputs.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/radio-example.tsx. Docs: https://plopui.com/docs/components/radio",
      "files": [
        {
          "path": "registry/plopui/radio-example.tsx",
          "type": "registry:component",
          "target": "components/plop/radio-example.tsx"
        }
      ]
    },
    {
      "name": "select",
      "type": "registry:component",
      "title": "Select & MultiSelect",
      "description": "Pick one or pick many from a taped paper sheet. The trigger has the fields' wobbly marker outline and boils while open, picks get a tick that draws itself in, and in a MultiSelect every pick sticks onto the trigger as washi tape. Add a search box for long lists, like a people picker.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/select-example.tsx. Docs: https://plopui.com/docs/components/select",
      "files": [
        {
          "path": "registry/plopui/select-example.tsx",
          "type": "registry:component",
          "target": "components/plop/select-example.tsx"
        }
      ]
    },
    {
      "name": "text-field",
      "type": "registry:component",
      "title": "TextField",
      "description": "Focus swipes a highlighter across the label and makes the outline boil. Errors switch to tomato ink and say how to fix it.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/text-field-example.tsx. Docs: https://plopui.com/docs/components/text-field",
      "files": [
        {
          "path": "registry/plopui/text-field-example.tsx",
          "type": "registry:component",
          "target": "components/plop/text-field-example.tsx"
        }
      ]
    },
    {
      "name": "tag",
      "type": "registry:component",
      "title": "Tag",
      "description": "Status labels are strips of washi tape. Removable tags peel off when you dismiss them.",
      "categories": [
        "display"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/tag-example.tsx. Docs: https://plopui.com/docs/components/tag",
      "files": [
        {
          "path": "registry/plopui/tag-example.tsx",
          "type": "registry:component",
          "target": "components/plop/tag-example.tsx"
        }
      ]
    },
    {
      "name": "avatar",
      "type": "registry:component",
      "title": "Avatar",
      "description": "Doodle faces generated from a name, so the same person always gets the same face. Real photos can drop in too.",
      "categories": [
        "display"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/avatar-example.tsx. Docs: https://plopui.com/docs/components/avatar",
      "files": [
        {
          "path": "registry/plopui/avatar-example.tsx",
          "type": "registry:component",
          "target": "components/plop/avatar-example.tsx"
        }
      ]
    },
    {
      "name": "cards",
      "type": "registry:component",
      "title": "Cards",
      "description": "Three paper objects for three jobs: a ticket stub for queue items, a taped unit card for people, a sticky note for quick context.",
      "categories": [
        "display"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/cards-example.tsx. Docs: https://plopui.com/docs/components/cards",
      "files": [
        {
          "path": "registry/plopui/cards-example.tsx",
          "type": "registry:component",
          "target": "components/plop/cards-example.tsx"
        }
      ]
    },
    {
      "name": "tabs",
      "type": "registry:component",
      "title": "Tabs",
      "description": "Index-card dividers. The active one comes forward and joins the page. Arrow keys move between them.",
      "categories": [
        "display"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/tabs-example.tsx. Docs: https://plopui.com/docs/components/tabs",
      "files": [
        {
          "path": "registry/plopui/tabs-example.tsx",
          "type": "registry:component",
          "target": "components/plop/tabs-example.tsx"
        }
      ]
    },
    {
      "name": "badges",
      "type": "registry:component",
      "title": "Count & StatusDot",
      "description": "Round count stickers and little status dots.",
      "categories": [
        "display"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/badges-example.tsx. Docs: https://plopui.com/docs/components/badges",
      "files": [
        {
          "path": "registry/plopui/badges-example.tsx",
          "type": "registry:component",
          "target": "components/plop/badges-example.tsx"
        }
      ]
    },
    {
      "name": "status-timeline",
      "type": "registry:component",
      "title": "StatusTimeline",
      "description": "Where a sketch is right now. Done steps get a cobalt tick, the current step boils, the rest are pencilled in.",
      "categories": [
        "feedback"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/status-timeline-example.tsx. Docs: https://plopui.com/docs/components/status-timeline",
      "files": [
        {
          "path": "registry/plopui/status-timeline-example.tsx",
          "type": "registry:component",
          "target": "components/plop/status-timeline-example.tsx"
        }
      ]
    },
    {
      "name": "loading",
      "type": "registry:component",
      "title": "Loading states",
      "description": "Spinners, progress, skeletons and the in-between states nobody designs until it's too late. Drawn by hand, honest about time, quiet for screen readers and still under reduced motion.",
      "categories": [
        "feedback"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/loading-example.tsx. Docs: https://plopui.com/docs/components/loading",
      "files": [
        {
          "path": "registry/plopui/loading-example.tsx",
          "type": "registry:component",
          "target": "components/plop/loading-example.tsx"
        }
      ]
    },
    {
      "name": "callout",
      "type": "registry:component",
      "title": "Callout",
      "description": "A strip torn off a pad. Use it for things people need to know before they act, not for decoration.",
      "categories": [
        "feedback"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/callout-example.tsx. Docs: https://plopui.com/docs/components/callout",
      "files": [
        {
          "path": "registry/plopui/callout-example.tsx",
          "type": "registry:component",
          "target": "components/plop/callout-example.tsx"
        }
      ]
    },
    {
      "name": "toast",
      "type": "registry:component",
      "title": "Toast",
      "description": "Slaps onto the bottom of the screen like a stamp, then lifts off after a few seconds. The wash behind it takes its kind (red for an error, green for success), and it can celebrate or wince when it lands.",
      "categories": [
        "feedback"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/toast-example.tsx. Docs: https://plopui.com/docs/components/toast",
      "files": [
        {
          "path": "registry/plopui/toast-example.tsx",
          "type": "registry:component",
          "target": "components/plop/toast-example.tsx"
        }
      ]
    },
    {
      "name": "search",
      "type": "registry:component",
      "title": "SearchField & CommandPalette",
      "description": "A search box with a wobbly marker outline that boils while it has focus, grouped results on a taped sheet, highlighter matches and keycap shortcuts. The same field powers a ⌘K command palette.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/search-example.tsx. Docs: https://plopui.com/docs/components/search",
      "files": [
        {
          "path": "registry/plopui/search-example.tsx",
          "type": "registry:component",
          "target": "components/plop/search-example.tsx"
        }
      ]
    },
    {
      "name": "menu",
      "type": "registry:component",
      "title": "Menu",
      "description": "A sticker button that opens a short sheet of actions: hand-drawn icons, keycap hints, a dashed separator and one careful red item at the end. Use the round icon version at the end of a row.",
      "categories": [
        "actions"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/menu-example.tsx. Docs: https://plopui.com/docs/components/menu",
      "files": [
        {
          "path": "registry/plopui/menu-example.tsx",
          "type": "registry:component",
          "target": "components/plop/menu-example.tsx"
        }
      ]
    },
    {
      "name": "word-sticker",
      "type": "registry:component",
      "title": "WordSticker & Doodle",
      "description": "Words lettered in Sketchpop and cut out like a sticker, plus little marker doodles to go with them. Design one in the playground's Lettering tool and copy the component.",
      "categories": [
        "display"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/word-sticker-example.tsx. Docs: https://plopui.com/docs/components/word-sticker",
      "files": [
        {
          "path": "registry/plopui/word-sticker-example.tsx",
          "type": "registry:component",
          "target": "components/plop/word-sticker-example.tsx"
        }
      ]
    },
    {
      "name": "buddy",
      "type": "registry:component",
      "title": "Buddy",
      "description": "A cast of characters, one per state: Pip cheers success, Bix winces at errors, Snooze dozes on stale data, Confetti celebrates, Specs previews and Hum thinks while loading. Stand one alone, or let it peek over any component.",
      "categories": [
        "feedback"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/buddy-example.tsx. Docs: https://plopui.com/docs/components/buddy",
      "files": [
        {
          "path": "registry/plopui/buddy-example.tsx",
          "type": "registry:component",
          "target": "components/plop/buddy-example.tsx"
        }
      ]
    },
    {
      "name": "provider",
      "type": "registry:component",
      "title": "PlopProvider",
      "description": "Sets the surface, theme and feedback settings for everything inside it, and renders the filters, ink-burst layer and toast zone.",
      "categories": [
        "foundations"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/provider-example.tsx. Docs: https://plopui.com/docs/components/provider",
      "files": [
        {
          "path": "registry/plopui/provider-example.tsx",
          "type": "registry:component",
          "target": "components/plop/provider-example.tsx"
        }
      ]
    },
    {
      "name": "sheet-heading",
      "type": "registry:component",
      "title": "Sheet & Heading",
      "description": "The paper everything sits on, and the lettering that labels it.",
      "categories": [
        "foundations"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "docs": "Example: components/plop/sheet-heading-example.tsx. Docs: https://plopui.com/docs/components/sheet-heading",
      "files": [
        {
          "path": "registry/plopui/sheet-heading-example.tsx",
          "type": "registry:component",
          "target": "components/plop/sheet-heading-example.tsx"
        }
      ]
    },
    {
      "name": "empty-state",
      "type": "registry:block",
      "title": "Empty State",
      "description": "An empty state with a buddy, a short message and one clear next step, for lists and boards with nothing in them yet.",
      "categories": [
        "blocks"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "files": [
        {
          "path": "registry/plopui/empty-state.tsx",
          "type": "registry:component",
          "target": "components/plop/empty-state.tsx"
        }
      ]
    },
    {
      "name": "settings-panel",
      "type": "registry:block",
      "title": "Settings Panel",
      "description": "A settings sheet: profile fields, notification switches, a paper picker, and a Save button that toasts with a buddy.",
      "categories": [
        "blocks"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "files": [
        {
          "path": "registry/plopui/settings-panel.tsx",
          "type": "registry:component",
          "target": "components/plop/settings-panel.tsx"
        }
      ]
    },
    {
      "name": "signup-card",
      "type": "registry:block",
      "title": "Signup Card",
      "description": "A sign-up card: name, email and password with friendly errors on submit, a terms checkbox, and a celebration when it works.",
      "categories": [
        "blocks"
      ],
      "dependencies": [
        "@plop-ui/react",
        "@plop-ui/fonts"
      ],
      "registryDependencies": [
        "https://plopui.com/r/plop-setup.json"
      ],
      "files": [
        {
          "path": "registry/plopui/signup-card.tsx",
          "type": "registry:component",
          "target": "components/plop/signup-card.tsx"
        }
      ]
    }
  ]
}
