MCPcopy
hub / github.com/puckeditor/puck

github.com/puckeditor/puck @v0.22.0 sqlite

repository ↗ · DeepWiki ↗ · release v0.22.0 ↗
609 symbols 1,770 edges 432 files 0 documented · 0%
README

<img src="https://res.cloudinary.com/die3nptcg/image/upload/Puck_Logo_Black_RGB_dqsjag.svg" height="100px" aria-label="Puck logo">

The visual editor for React

DocumentationDemoDiscordContributing

⭐️ Enjoying Puck? Please leave a star!

GIF showing a page being created in the Puck Editor, with components being added, arranged, and customized in real time

What is Puck?

Puck is a modular, open-source visual editor for React.js. You can use Puck to build custom drag-and-drop experiences with your own application and React components.

Because Puck is just a React component, it plays well with all React.js environments, including Next.js. You own your data and there’s no vendor lock-in.

Puck is also licensed under MIT, making it suitable for both internal systems and commercial applications.

Quick start

Install the package:

npm i @puckeditor/core --save # or npx create-puck-app my-app

Render the editor:

// Editor.jsx
import { Puck } from "@puckeditor/core";

// Create Puck component config
const config = {
  components: {
    HeadingBlock: {
      fields: {
        children: {
          type: "text",
        },
      },
      render: ({ children }) => {
        return <h1>{children}</h1>;
      },
    },
  },
};

// Describe the initial data
const initialData = {};

// Save the data to your database
const save = (data) => {};

// Render Puck editor
export function Editor() {
  return <Puck config={config} data={initialData} onPublish={save} />;
}

Render the page:

// Page.jsx
import { Render } from "@puckeditor/core";

export function Page() {
  return <Render config={config} data={data} />;
}

Recipes

Use create-puck-app to quickly spin up a a pre-configured app based on our provided recipes:

npx create-puck-app my-app

Available recipes include:

  • next: Next.js example, using App Router and static page generation
  • react-router: React Router v7 app example, using dynamic routes to create pages at any level

Community

Get support

If you have any questions about Puck, please open a GitHub issue or join us on Discord.

Or book a discovery call for hands-on support and consultancy.

License

MIT © The Puck Contributors

Extension points exported contracts — how you extend this code

PuckMetadata (Interface)
(no doc)
packages/core/types/Data.tsx
ComponentMetadata (Interface)
(no doc)
packages/core/types/Data.tsx
FieldMetadata (Interface)
(no doc)
packages/core/types/Data.tsx
ComponentConfigExtensions (Interface)
(no doc)
packages/core/types/Config.tsx
BaseField (Interface)
(no doc)
packages/core/types/Fields.ts

Core symbols most depended-on inside this repo

useAppStore
called by 118
packages/core/store/index.ts
getClassNameFactory
called by 78
packages/core/lib/get-class-name-factory.ts
walkAppState
called by 38
packages/core/lib/data/walk-app-state.ts
expectIndexed
called by 37
packages/core/reducer/actions/__helpers__/index.tsx
useControlContext
called by 26
packages/core/components/RichTextMenu/lib/use-control-context.ts
executeSequence
called by 26
packages/core/reducer/actions/__helpers__/index.tsx
useAppStoreApi
called by 26
packages/core/store/index.ts
toComponent
called by 22
packages/core/lib/data/to-component.ts

Shape

Function 559
Interface 23
Method 17
Class 10

Languages

TypeScript100%

Modules by API surface

packages/core/components/AutoFrame/index.tsx15 symbols
packages/core/types/Fields.ts12 symbols
packages/core/lib/dnd/NestedDroppablePlugin.ts11 symbols
packages/core/components/LayerTree/index.tsx11 symbols
apps/docs/components/Preview/index.tsx10 symbols
packages/core/lib/use-inject-css.ts9 symbols
packages/core/lib/global-position.ts8 symbols
packages/core/components/Puck/__tests__/richtext.spec.tsx8 symbols
packages/core/components/Puck/__tests__/index.tsx8 symbols
packages/core/components/DraggableComponent/index.tsx8 symbols
packages/core/lib/use-hotkey.ts7 symbols
packages/core/components/DropZone/index.tsx7 symbols

Dependencies from manifests, versioned

@dnd-kit/abstract0.4.0 · 1×
@dnd-kit/dom0.4.0 · 1×
@dnd-kit/geometry0.4.0 · 1×
@dnd-kit/helpers0.4.0 · 1×
@dnd-kit/react0.4.0 · 1×
@dnd-kit/state0.4.0 · 1×
@emotion/react11.13.3 · 1×
@juggle/resize-observer3.4.0 · 1×
@puckeditor/cloud-client0.7.0 · 1×
@puckeditor/core0.22.0 · 1×
@puckeditor/plugin-ai0.7.0 · 1×
@radix-ui/react-popover1.1.15 · 1×

For agents

$ claude mcp add puck \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact