{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "autoformat-docs",
  "title": "Autoformat",
  "description": "Markdown shortcuts and text substitutions powered by input rules.",
  "files": [
    {
      "path": "../../content/docs/(plugins)/(functionality)/autoformat.mdx",
      "content": "---\ntitle: Autoformat\ndescription: Markdown shortcuts and text substitutions powered by input rules.\ndocs:\n  - route: /docs/plugin-input-rules\n    title: Plugin Input Rules\n  - route: /docs/basic-blocks\n    title: Basic Elements\n  - route: /docs/basic-marks\n    title: Basic Marks\n  - route: /docs/code-block\n    title: Code Block\n  - route: /docs/list\n    title: List\n---\n\nFor the full runtime — dispatch, ownership, selection context, and custom rule authoring — see the [Plugin Input Rules](/docs/plugin-input-rules) guide. This page is the kit-first entry for markdown shortcuts and text substitutions.\n\n<ComponentPreview name=\"autoformat-demo\" />\n\n<PackageInfo>\n\n## Features\n\n- Markdown shortcuts owned by the feature plugins that understand them.\n- Text substitutions powered by local `createTextSubstitutionInputRule(...)` definitions.\n- Explicit activation through `inputRules`.\n- No hidden default shortcut behavior.\n\n</PackageInfo>\n\n## Kit Usage\n\n<Steps>\n\n### Installation\n\nThe fastest way to add common text substitutions is with `AutoformatKit`.\n\n<ComponentSource name=\"autoformat-kit\" />\n\n### Add Kit\n\n```tsx\nimport { createPlateEditor } from 'platejs/react';\nimport { AutoformatKit } from '@/components/editor/plugins/autoformat-kit';\n\nconst editor = createPlateEditor({\n  plugins: [\n    // ...otherPlugins,\n    ...AutoformatKit,\n  ],\n});\n```\n\n</Steps>\n\n## Manual Usage\n\n<Steps>\n\n### Feature-Owned Markdown Shortcuts\n\nMarkdown shortcuts live on the plugins that own those features:\n\n```tsx\nimport {\n  BlockquoteRules,\n  HeadingRules,\n  HorizontalRuleRules,\n} from '@platejs/basic-nodes';\nimport {\n  BlockquotePlugin,\n  H1Plugin,\n  HorizontalRulePlugin,\n} from '@platejs/basic-nodes/react';\nimport { CodeBlockRules } from '@platejs/code-block';\nimport { CodeBlockPlugin } from '@platejs/code-block/react';\nimport { LinkRules } from '@platejs/link';\nimport { LinkPlugin } from '@platejs/link/react';\nimport {\n  BulletedListRules,\n  OrderedListRules,\n  TaskListRules,\n} from '@platejs/list';\nimport { ListPlugin } from '@platejs/list/react';\nimport { MathRules } from '@platejs/math';\nimport { EquationPlugin, InlineEquationPlugin } from '@platejs/math/react';\n\nconst editor = createPlateEditor({\n  plugins: [\n    H1Plugin.configure({\n      inputRules: [HeadingRules.markdown()],\n    }),\n    BlockquotePlugin.configure({\n      inputRules: [BlockquoteRules.markdown()],\n    }),\n    HorizontalRulePlugin.configure({\n      inputRules: [HorizontalRuleRules.markdown({ variant: '-' })],\n    }),\n    CodeBlockPlugin.configure({\n      inputRules: [CodeBlockRules.markdown({ on: 'match' })],\n    }),\n    ListPlugin.configure({\n      inputRules: [\n        BulletedListRules.markdown({ variant: '-' }),\n        OrderedListRules.markdown({ variant: '.' }),\n        TaskListRules.markdown({ checked: false }),\n      ],\n    }),\n    InlineEquationPlugin.configure({\n      inputRules: [MathRules.markdown({ variant: '$' })],\n    }),\n    EquationPlugin.configure({\n      inputRules: [MathRules.markdown({ on: 'break', variant: '$$' })],\n    }),\n    LinkPlugin.configure({\n      inputRules: [\n        LinkRules.markdown(),\n        LinkRules.autolink({ variant: 'paste' }),\n        LinkRules.autolink({ variant: 'space' }),\n        LinkRules.autolink({ variant: 'break' }),\n      ],\n    }),\n  ],\n});\n```\n\n- Package rule families own the markdown semantics. Kits register explicit rule instances.\n\n### Local Text Substitutions\n\nGeneric substitutions such as smart quotes, arrows, and fractions are best kept\nas local copied plugin code:\n\n```tsx\nimport {\n  createSlatePlugin,\n  createTextSubstitutionInputRule,\n} from 'platejs';\n\nconst ShortcutsPlugin = createSlatePlugin({\n  key: 'shortcuts',\n  inputRules: [\n    createTextSubstitutionInputRule({\n      patterns: [{ format: '—', match: '--' }],\n    }),\n  ],\n});\n\nconst editor = createPlateEditor({\n  plugins: [ShortcutsPlugin],\n});\n```\n\n### Fine-Grained Overrides\n\nRule names are the override unit:\n\n```tsx\nimport { ItalicRules } from '@platejs/basic-nodes';\n\nItalicPlugin.configure({\n  inputRules: [ItalicRules.markdown({ variant: '_' })],\n});\n```\n\n</Steps>\n",
      "type": "registry:file",
      "target": "content/docs/plate/(plugins)/(functionality)/autoformat.mdx"
    }
  ],
  "type": "registry:file"
}