<Puck>
Render the Puck editor.
import { Puck } from "@measured/puck";
const config = {
components: {},
};
const initialData = {
content: [],
root: {},
};
export function Editor() {
return <Puck config={config} data={initialData} />;
}
Props
Param | Example | Type | Status |
---|---|---|---|
config | config: { components: {} } | Config | Required |
data | data: { content: [], root: {} } | Data | Required |
children | children: <Puck.Preview /> | ReactNode | - |
headerPath | headerPath: "/my-page" | String | - |
headerTitle | headerTitle: "My Page" | String | - |
onChange() | onChange: (data) => {} | Function | - |
onPublish() | onPublish: async (data) => {} | Function | - |
overrides | overrides: { header: () => <div /> } | Overrides | - |
plugins | plugins: [myPlugin] | Plugin[] | - |
ui | ui: {leftSideBarVisible: false} | AppState.ui | - |
Required props
config
An object describing the available components, fields and more. See the Config
docs for a full reference.
export function Editor() {
return (
<Puck
config={{
components: {
HeadingBlock: {
fields: {
children: {
type: "text",
},
},
render: ({ children }) => {
return <h1>{children}</h1>;
},
},
},
}}
// ...
/>
);
}
data
The initial data to render. Cannot be changed once <Puck>
has been mounted. See the Data
docs for a full reference.
export function Editor() {
return (
<Puck
data={{
content: [
{
props: { children: "Hello, world", id: "id" },
type: "HeadingBlock",
},
],
root: {},
}}
// ...
/>
);
}
Optional props
children
Render custom nodes to create custom interfaces.
export function Editor() {
return (
<Puck /*...*/>
<Puck.Preview />
</Puck>
);
}
headerPath
Set a path to show after the header title
export function Editor() {
return (
<Puck
headerPath="/my-page"
// ...
/>
);
}
headerTitle
Set the title shown in the header
export function Editor() {
return (
<Puck
headerPath="My page"
// ...
/>
);
}
onChange(data)
Callback that triggers when the user makes a change.
Receives a single Data
arg.
export function Editor() {
return (
<Puck
onChange={(data) => {
console.log("Puck data was updated", data);
}}
// ...
/>
);
}
onPublish(data)
Callback that triggers when the user hits the "Publish" button. Use this to save the Puck data to your database.
Receives a single Data
arg.
export function Editor() {
return (
<Puck
onPublish={async (data) => {
await fetch("/my-api", {
method: "post",
body: JSON.stringify({ data }),
});
}}
// ...
/>
);
}
overrides
An Overrides
object defining custom render methods for various parts of the Puck UI.
export function Editor() {
return (
<Puck
overrides={{
header: () => <div />,
}}
// ...
/>
);
}
plugins
An array of plugins to enhance Puck's behaviour. See the Plugin API reference.
import headingAnalyzer from "@measured/puck-plugin-heading-analyzer";
export function Editor() {
return (
<Puck
plugins={[headingAnalyzer]}
// ...
/>
);
}
ui
Set the initial application UI state. See AppState.ui
.
export function Editor() {
return (
<Puck
// Hide the left side bar by default
ui={{ leftSideBarVisible: false }}
// ...
/>
);
}