{
  "url": "https://unifast.dev/docs/packages/node/custom-heading-id/",
  "locale": "en",
  "title": "customHeadingId()",
  "description": "Set custom IDs on headings using the {#custom-id} syntax.",
  "section": "packages",
  "body": "```ts\nimport { customHeadingId } from \"@unifast/node\";\n```\n\n## Signature\n\n```ts\nfunction customHeadingId(): UnifastPlugin\n```\n\n## Parameters\n\nNone.\n\n## Usage\n\n```ts\nimport { compile, customHeadingId } from \"@unifast/node\";\n\nconst md = `# Introduction {#intro}`;\n\nconst result = compile(md, {\n  plugins: [customHeadingId()],\n});\n// The heading gets id=\"intro\" instead of the auto-generated slug\n```\n\n## Examples\n\n### Custom ID\n\nUse the `{#custom-id}` syntax at the end of a heading to assign a specific `id` attribute. The brace block is removed from the rendered text:\n\n```ts\nimport { compile, customHeadingId } from \"@unifast/node\";\n\nconst md = `## Getting Started {#getting-started}`;\n\nconst result = compile(md, { plugins: [customHeadingId()] });\nconsole.log(result.output);\n// <h2 id=\"getting-started\">Getting Started</h2>\n```\n\n### Heading without custom ID\n\nHeadings without the `{#...}` syntax are left unchanged. They use the default slug generated from the heading text:\n\n```ts\nimport { compile, customHeadingId } from \"@unifast/node\";\n\nconst md = `## Getting Started`;\n\nconst result = compile(md, { plugins: [customHeadingId()] });\nconsole.log(result.output);\n// <h2 id=\"getting-started\">Getting Started</h2>\n```\n\n### Classes and arbitrary attributes\n\nThe brace syntax also supports `.class` and `key=value` notation:\n\n```ts\nimport { compile, customHeadingId } from \"@unifast/node\";\n\nconst md = `## API Reference {#api .docs data-level=2}`;\n\nconst result = compile(md, { plugins: [customHeadingId()] });\nconsole.log(result.output);\n// <h2 id=\"api\" class=\"docs\" data-level=\"2\">API Reference</h2>\n```",
  "alternates": [
    {
      "locale": "en",
      "url": "https://unifast.dev/docs/packages/node/custom-heading-id/",
      "api": "https://unifast.dev//api/docs/packages/node/custom-heading-id.json"
    },
    {
      "locale": "ja",
      "url": "https://unifast.dev/ja/docs/packages/node/custom-heading-id/",
      "api": "https://unifast.dev//api/ja/docs/packages/node/custom-heading-id.json"
    },
    {
      "locale": "zh-CN",
      "url": "https://unifast.dev/zh-CN/docs/packages/node/custom-heading-id/",
      "api": "https://unifast.dev//api/zh-CN/docs/packages/node/custom-heading-id.json"
    },
    {
      "locale": "zh-TW",
      "url": "https://unifast.dev/zh-TW/docs/packages/node/custom-heading-id/",
      "api": "https://unifast.dev//api/zh-TW/docs/packages/node/custom-heading-id.json"
    },
    {
      "locale": "ko",
      "url": "https://unifast.dev/ko/docs/packages/node/custom-heading-id/",
      "api": "https://unifast.dev//api/ko/docs/packages/node/custom-heading-id.json"
    },
    {
      "locale": "fr",
      "url": "https://unifast.dev/fr/docs/packages/node/custom-heading-id/",
      "api": "https://unifast.dev//api/fr/docs/packages/node/custom-heading-id.json"
    },
    {
      "locale": "it",
      "url": "https://unifast.dev/it/docs/packages/node/custom-heading-id/",
      "api": "https://unifast.dev//api/it/docs/packages/node/custom-heading-id.json"
    },
    {
      "locale": "es",
      "url": "https://unifast.dev/es/docs/packages/node/custom-heading-id/",
      "api": "https://unifast.dev//api/es/docs/packages/node/custom-heading-id.json"
    },
    {
      "locale": "pt-BR",
      "url": "https://unifast.dev/pt-BR/docs/packages/node/custom-heading-id/",
      "api": "https://unifast.dev//api/pt-BR/docs/packages/node/custom-heading-id.json"
    },
    {
      "locale": "de",
      "url": "https://unifast.dev/de/docs/packages/node/custom-heading-id/",
      "api": "https://unifast.dev//api/de/docs/packages/node/custom-heading-id.json"
    },
    {
      "locale": "ru",
      "url": "https://unifast.dev/ru/docs/packages/node/custom-heading-id/",
      "api": "https://unifast.dev//api/ru/docs/packages/node/custom-heading-id.json"
    },
    {
      "locale": "hi",
      "url": "https://unifast.dev/hi/docs/packages/node/custom-heading-id/",
      "api": "https://unifast.dev//api/hi/docs/packages/node/custom-heading-id.json"
    },
    {
      "locale": "id",
      "url": "https://unifast.dev/id/docs/packages/node/custom-heading-id/",
      "api": "https://unifast.dev//api/id/docs/packages/node/custom-heading-id.json"
    },
    {
      "locale": "tr",
      "url": "https://unifast.dev/tr/docs/packages/node/custom-heading-id/",
      "api": "https://unifast.dev//api/tr/docs/packages/node/custom-heading-id.json"
    },
    {
      "locale": "vi",
      "url": "https://unifast.dev/vi/docs/packages/node/custom-heading-id/",
      "api": "https://unifast.dev//api/vi/docs/packages/node/custom-heading-id.json"
    }
  ]
}
