{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "column-docs",
  "title": "Column",
  "description": "Documentation for Column",
  "files": [
    {
      "path": "../../content/docs/(plugins)/(elements)/column.mdx",
      "content": "---\ntitle: Column\ndocs:\n  - route: /docs/components/column-node\n    title: Column Nodes\n---\n\n<ComponentPreview name=\"column-demo\" />\n\n<PackageInfo>\n\n## Features\n\n- Add columns to your document.\n- Choose from a variety of column layouts using `column-group-node` toolbar.\n- [ ] Resizable columns\n\n</PackageInfo>\n\n## Kit Usage\n\n<Steps>\n\n### Installation\n\nThe fastest way to add column functionality is with the `ColumnKit`, which includes pre-configured `ColumnPlugin` and `ColumnItemPlugin` with [Plate UI](/docs/installation/plate-ui) components.\n\n<ComponentSource name=\"column-kit\" />\n\n- [`ColumnGroupElement`](/docs/components/column-node): Renders column group containers.\n- [`ColumnElement`](/docs/components/column-node): Renders individual column items.\n\n### Add Kit\n\nAdd the kit to your plugins:\n\n```tsx\nimport { createPlateEditor } from 'platejs/react';\nimport { ColumnKit } from '@/components/editor/plugins/column-kit';\n\nconst editor = createPlateEditor({\n  plugins: [\n    // ...otherPlugins,\n    ...ColumnKit,\n  ],\n});\n```\n\n</Steps>\n\n## Manual Usage\n\n<Steps>\n\n### Installation\n\n```bash\nnpm install @platejs/layout\n```\n\n### Add Plugins\n\nInclude the column plugins in your Plate plugins array when creating the editor.\n\n```tsx\nimport { ColumnPlugin, ColumnItemPlugin } from '@platejs/layout/react';\nimport { createPlateEditor } from 'platejs/react';\n\nconst editor = createPlateEditor({\n  plugins: [\n    // ...otherPlugins,\n    ColumnPlugin,\n    ColumnItemPlugin,\n  ],\n});\n```\n\n### Configure Plugins\n\nConfigure the plugins with custom components to render column layouts.\n\n```tsx\nimport { ColumnPlugin, ColumnItemPlugin } from '@platejs/layout/react';\nimport { createPlateEditor } from 'platejs/react';\nimport { ColumnGroupElement, ColumnElement } from '@/components/ui/column-node';\n\nconst editor = createPlateEditor({\n  plugins: [\n    // ...otherPlugins,\n    ColumnPlugin.withComponent(ColumnGroupElement),\n    ColumnItemPlugin.withComponent(ColumnElement),\n  ],\n});\n```\n\n- `withComponent`: Assigns [`ColumnGroupElement`](/docs/components/column-node) to render column group containers and [`ColumnElement`](/docs/components/column-node) to render individual columns.\n\n### Turn Into Toolbar Button\n\nYou can add this item to the [Turn Into Toolbar Button](/docs/toolbar#turn-into-toolbar-button) to convert blocks into column layouts:\n\n```tsx\n{\n  icon: <Columns3Icon />,\n  label: '3 columns',\n  value: 'action_three_columns',\n}\n```\n\n</Steps>\n\n## Plugins\n\n### `ColumnPlugin`\n\nAdd Column Plugin to your document.\n\n### `ColumnItemPlugin`\n\nAdd Column Item Plugin to your document.\n\n## Types\n\n### `TColumnGroupElement`\n\nExtends `TElement`.\n\n### `TColumnElement`\n\nExtends `TElement`.\n\n<API name=\"TColumnElement\">\n<APIAttributes>\n  <APIItem name=\"width\" type=\"string\" optional>\n    The column's width (must end with `%`)\n  </APIItem>\n</APIAttributes>\n</API>\n\n## Transforms\n\n### `insertColumnGroup`\n\nInsert a columnGroup with two empty columns.\n\n<API name=\"insertColumnGroup\">\n<APIOptions type=\"InsertNodesOptions & { columns?: number[] | number }\">\n    - `columns`: Array of column widths or number of equal-width columns (default: 2)\n    - Other `InsertNodesOptions` to control insert behavior\n  <APIItem name=\"columns\" type=\"number[] | number\" optional>\n    Array of column widths or number of equal-width columns (default: 2)\n  </APIItem>\n  <APIItem name=\"...InsertNodesOptions\" type=\"InsertNodesOptions\">\n    Other options to control insert behavior\n  </APIItem>\n</APIOptions>\n</API>\n\n### `insertColumn`\n\nInsert an empty column.\n\n<API name=\"insertColumn\">\n<APIOptions type=\"InsertNodesOptions & { width?: string }\">\n  <APIItem name=\"width\" type=\"string\" optional>\n    Column width (default: \"33%\")\n  </APIItem>\n  <APIItem name=\"...InsertNodesOptions\" type=\"InsertNodesOptions\">\n    Other options to control insert behavior\n  </APIItem>\n</APIOptions>\n</API>\n\n### `moveMiddleColumn`\n\nMove the middle column to the left or right.\n\n<API name=\"moveMiddleColumn\">\n<APIParameters>\n  <APIItem name=\"nodeEntry\" type=\"NodeEntry\">\n    The node entry of `column` element\n  </APIItem>\n  <APIItem name=\"options\" type=\"{ direction: 'left' | 'right' }\">\n    Control the direction the middle column moves to\n  </APIItem>\n</APIParameters>\n\n<APIReturns type=\"boolean\">\n  Returns `false` if the middle node is empty (and removes it), `true` otherwise.\n</APIReturns>\n</API>\n\n### `toggleColumnGroup`\n\nConvert a block into a column group layout or update an existing column group's layout.\n\n<API name=\"toggleColumnGroup\">\n- If the target block is not a column group, wraps it in a new column group with the specified number of columns\n- If the target block is already a column group, updates its column layout using `setColumns`\n- The original content becomes the content of the first column\n- Additional columns are created with empty paragraphs\n<APIOptions type=\"object\">\n  <APIItem name=\"at\" type=\"Location\" optional>\n    The location to toggle the column group at.\n  </APIItem>\n  <APIItem name=\"columns\" type=\"number\" optional>\n    Number of equal-width columns to create (default: 2)\n  </APIItem>\n  <APIItem name=\"widths\" type=\"string[]\" optional>\n    Array of column widths (e.g., ['50%', '50%']). Takes precedence over `columns`.\n  </APIItem>\n</APIOptions>\n</API>\n\n### `setColumns`\n\nUpdate the column layout of an existing column group.\n\n<API name=\"setColumns\">\n- When increasing columns:\n  - Keeps existing column content\n  - Adds new empty columns with specified widths\n- When decreasing columns:\n  - Merges content from removed columns into the last remaining column\n  - Updates widths of remaining columns\n- When keeping same number of columns:\n  - Only updates column widths\n<APIOptions type=\"object\">\n  <APIItem name=\"at\" type=\"Path\">\n    The path to the column group element.\n  </APIItem>\n  <APIItem name=\"columns\" type=\"number\" optional>\n    Number of equal-width columns to create.\n  </APIItem>\n  <APIItem name=\"widths\" type=\"string[]\" optional>\n    Array of column widths (e.g., ['33%', '67%']). Takes precedence over `columns`.\n  </APIItem>\n</APIOptions>\n</API>\n\n\n## Hooks\n\n### `useDebouncePopoverOpen`\n\n<API name=\"useDebouncePopoverOpen\">\n<APIReturns type=\"boolean\">\n  Whether the popover is open.\n</APIReturns>\n</API>",
      "type": "registry:file",
      "target": "content/docs/plate/(plugins)/(elements)/column.mdx"
    }
  ],
  "type": "registry:file"
}