{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "basic-marks-docs",
  "title": "Basic Marks",
  "description": "Common inline text formatting marks.",
  "files": [
    {
      "path": "../../content/docs/(plugins)/(marks)/basic-marks.mdx",
      "content": "---\ntitle: Basic Marks\ndescription: Common inline text formatting marks.\ndocs:\n  - route: /docs/components/mark-toolbar-button\n    title: Mark Toolbar Button\n  - route: /docs/toolbar\n    title: Toolbar\n---\n\nBasic Marks covers the common inline formatting marks: bold, italic, underline, strikethrough, code, subscript, superscript, highlight, and kbd. The package owns mark plugins and transforms; the registry kit adds leaf components, toolbar wiring, and Markdown-style input rules.\n\n<Cards>\n\n<Card icon=\"bold\" title=\"Bold\" href=\"/docs/bold\">\nUse `bold` for strong emphasis.\n</Card>\n\n<Card icon=\"italic\" title=\"Italic\" href=\"/docs/italic\">\nUse `italic` for emphasis or stylistic text.\n</Card>\n\n<Card icon=\"underline\" title=\"Underline\" href=\"/docs/underline\">\nUse `underline` for underlined text.\n</Card>\n\n<Card icon=\"strikethrough\" title=\"Strikethrough\" href=\"/docs/strikethrough\">\nUse `strikethrough` for deleted or replaced text.\n</Card>\n\n<Card icon=\"code\" title=\"Code\" href=\"/docs/code\">\nUse `code` for inline code and technical terms.\n</Card>\n\n<Card icon=\"subscript\" title=\"Subscript\" href=\"/docs/subscript\">\nUse `sub` for subscript text.\n</Card>\n\n<Card icon=\"superscript\" title=\"Superscript\" href=\"/docs/superscript\">\nUse `sup` for superscript text.\n</Card>\n\n<Card icon=\"kbd\" title=\"Kbd\" href=\"/docs/kbd\">\nUse `kbd` for keyboard shortcuts.\n</Card>\n\n<Card icon=\"highlight\" title=\"Highlight\" href=\"/docs/highlight\">\nUse `highlight` for marked text.\n</Card>\n\n</Cards>\n\n<ComponentPreview name=\"basic-marks-demo\" />\n\n<PackageInfo>\n\n## Features\n\n- Leaf plugins for common mark keys.\n- Toggle transforms through each mark plugin.\n- HTML deserialization for semantic tags and styles.\n- Markdown-style input rules in the registry kit.\n- Registry leaves for code, highlight, and keyboard text.\n- Toolbar support through `MarkToolbarButton`.\n\n</PackageInfo>\n\n## Kit Usage\n\n<Steps>\n\n### Add The Kit\n\n`BasicMarksKit` is the full client-side registry kit. It includes mark plugins, input rules, `CodeLeaf`, `HighlightLeaf`, and `KbdLeaf`.\n\n<ComponentSource name=\"basic-marks-kit\" />\n\n```tsx\nimport { createPlateEditor } from 'platejs/react';\n\nimport { BasicMarksKit } from '@/components/editor/plugins/basic-marks-kit';\n\nexport const editor = createPlateEditor({\n  plugins: [...BasicMarksKit],\n});\n```\n\n### Add Toolbar Buttons\n\nUse `MarkToolbarButton` for direct mark toggles.\n\n```tsx\nimport { BoldIcon } from 'lucide-react';\nimport { KEYS } from 'platejs';\n\nimport { MarkToolbarButton } from '@/components/ui/mark-toolbar-button';\n\nexport function BoldToolbarButton() {\n  return (\n    <MarkToolbarButton nodeType={KEYS.bold} tooltip=\"Bold (⌘+B)\">\n      <BoldIcon />\n    </MarkToolbarButton>\n  );\n}\n```\n\n</Steps>\n\n## Ownership\n\n| Surface | Owner | What It Does |\n|---------|-------|--------------|\n| `BasicMarksPlugin` | `@platejs/basic-nodes/react` | Groups bold, code, italic, strikethrough, subscript, superscript, and underline. |\n| `BaseBasicMarksPlugin` | `@platejs/basic-nodes` | Headless grouping plugin for the same seven marks. |\n| `BasicMarksKit` | Registry | Adds the full mark set, input rules, and client leaf components. |\n| `BaseBasicMarksKit` | Registry | Adds static/base mark plugins with static code, highlight, and kbd leaves. |\n| Individual mark plugins | `@platejs/basic-nodes` | Own mark keys, HTML parsing, render tags, and `toggle` transforms. |\n| `MarkToolbarButton` | Registry UI | Reads mark state and calls the mark toolbar hook. |\n\n`BasicMarksPlugin` is smaller than `BasicMarksKit`: highlight and kbd are separate plugins that the registry kit includes.\n\n## Mark Set\n\n| Mark | Plugin | Key | Render | Notes |\n|------|--------|-----|--------|-------|\n| Bold | `BoldPlugin` | `KEYS.bold` | `strong` | Deserializes `strong`, `b`, and bold font weight. |\n| Italic | `ItalicPlugin` | `KEYS.italic` | `em` | Deserializes `em`, `i`, and italic font style. |\n| Underline | `UnderlinePlugin` | `KEYS.underline` | `u` | Deserializes `u` and underline text decoration. |\n| Strikethrough | `StrikethroughPlugin` | `KEYS.strikethrough` | `s` | Uses directional selection affinity. |\n| Code | `CodePlugin` | `KEYS.code` | `code` | Uses hard selection affinity and skips `pre` HTML parents. |\n| Subscript | `SubscriptPlugin` | `KEYS.sub` | `sub` | Toggle removes superscript. |\n| Superscript | `SuperscriptPlugin` | `KEYS.sup` | `sup` | Toggle removes subscript. |\n| Highlight | `HighlightPlugin` | `KEYS.highlight` | `mark` | Uses directional selection affinity. |\n| Kbd | `KbdPlugin` | `KEYS.kbd` | `kbd` | Uses hard selection affinity. |\n\nEach base mark plugin extends `editor.tf.<mark>.toggle()` by calling `editor.tf.toggleMark(type)`.\n\n## Input Rules\n\n`BasicMarksKit` registers input rules explicitly. The package plugins do not enable them by default.\n\n| Rule Family | Kit Registration |\n|-------------|------------------|\n| `BoldRules.markdown` | `variant: '*'` and `variant: '_'` |\n| `ItalicRules.markdown` | `variant: '*'` and `variant: '_'` |\n| `UnderlineRules.markdown` | Default underline rule |\n| `CodeRules.markdown` | Default inline code rule |\n| `StrikethroughRules.markdown` | Default strikethrough rule |\n| `SubscriptRules.markdown` | Default subscript rule |\n| `SuperscriptRules.markdown` | Default superscript rule |\n| `HighlightRules.markdown` | `variant: '=='` and `variant: '≡'` |\n| `MarkComboRules.markdown` | Bold/italic/underline combinations |\n\nSee [Plugin Input Rules](/docs/plugin-input-rules) for the runtime model.\n\n## Manual Usage\n\nInstall the package when you want to compose marks yourself.\n\n```bash\nnpm install @platejs/basic-nodes\n```\n\nAdd only the marks you need.\n\n```tsx title=\"components/editor/mark-plugins.tsx\"\nimport {\n  BoldPlugin,\n  CodePlugin,\n  ItalicPlugin,\n  UnderlinePlugin,\n} from '@platejs/basic-nodes/react';\n\nexport const markPlugins = [\n  BoldPlugin,\n  ItalicPlugin,\n  UnderlinePlugin,\n  CodePlugin,\n];\n```\n\nUse the individual pages for mark-specific setup and component details.\n\n## API Reference\n\n| API | Package | Use |\n|-----|---------|-----|\n| `BasicMarksPlugin` | `@platejs/basic-nodes/react` | React grouping plugin for seven common marks. |\n| `BaseBasicMarksPlugin` | `@platejs/basic-nodes` | Headless grouping plugin for seven common marks. |\n| `BasicMarksKit` | Registry | Full client kit with highlight, kbd, input rules, and leaves. |\n| `BaseBasicMarksKit` | Registry | Static/base kit for server or static rendering. |\n| `MarkToolbarButton` | Registry UI | Toolbar control for one mark key. |\n\n",
      "type": "registry:file",
      "target": "content/docs/plate/(plugins)/(marks)/basic-marks.mdx"
    }
  ],
  "type": "registry:file"
}