> ## Documentation Index
> Fetch the complete documentation index at: https://mint-tsdocs.saulo.engineer/llms.txt
> Use this file to discover all available pages before exploring further.

# writeNode

> Writes a single TSDoc node to the output

export const RefLink = ({target, children}) => {
  if (!target || typeof target !== 'string') {
    console.error('RefLink: Invalid target prop. Expected non-empty string.');
    return <span className="tsdocs-reflink broken-link" title="Invalid RefLink target" data-component="tsdocs-reflink">Invalid Link</span>;
  }
  const linkText = children || target;
  const path = typeof window !== 'undefined' && window.getRefPath ? window.getRefPath(target) : `./${target.split('.').filter(s => s.length > 0).join('/')}`;
  const isValid = typeof window !== 'undefined' && window.VALID_REFS && window.VALID_REFS.has(target);
  const className = !isValid ? 'tsdocs-reflink broken-link' : 'tsdocs-reflink';
  const title = !isValid ? `Broken API reference: ${target}` : undefined;
  return <a href={path} className={className} title={title} data-component="tsdocs-reflink">
      {linkText}
    </a>;
};

export const PageLink = ({target, children}) => {
  if (!target || typeof target !== 'string') {
    console.error('PageLink: Invalid target prop. Expected non-empty string.');
    return <span className="tsdocs-pagelink broken-link" title="Invalid PageLink target" data-component="tsdocs-pagelink">Invalid Link</span>;
  }
  const linkText = children || target;
  let path = target;
  if (!path.startsWith('/')) {
    path = `/${target}`;
  }
  const isValid = typeof window !== 'undefined' && window.VALID_PAGES && window.VALID_PAGES.has(target);
  const className = !isValid ? 'tsdocs-pagelink broken-link' : 'tsdocs-pagelink';
  const title = !isValid ? `Broken page link: ${target}` : undefined;
  return <a href={path} className={className} title={title} data-component="tsdocs-pagelink">
      {linkText}
    </a>;
};

# writeNode

## Summary

Writes a single TSDoc node to the output

## Signature

```typescript theme={null}
protected writeNode(docNode: DocNode, context: IMarkdownEmitterContext, docNodeSiblings: boolean): void;
```

## Parameters

### docNode

**Type**:`DocNode`

The TSDoc node to write

### context

**Type**:<RefLink target="mint-tsdocs.IMarkdownEmitterContext">`IMarkdownEmitterContext`</RefLink>

Emission context (writer, formatting state)

### docNodeSiblings

**Type**:`boolean`

Whether this node has siblings (used for formatting decisions)

## Returns

**Type**:`void`

Writes a single TSDoc node to the output

## Remarks

This is the core dispatch method that handles all TSDoc node types: - **PlainText** - Regular text content - **HtmlStartTag/HtmlEndTag** - Raw HTML pass-through - **CodeSpan** - Inline code (backticks) - **LinkTag** - Links to code symbols or URLs - **Paragraph** - Text blocks with spacing - **FencedCode** - Code blocks with syntax highlighting - **Section** - Logical grouping of content - **SoftBreak** - Whitespace normalization - **EscapedText** - Pre-escaped text - **ErrorText** - Parser error recovery - **InlineTag** - Ignored (handled elsewhere) - **BlockTag** - Known tags skipped, unknown tags logged  Subclasses can override this to customize handling for specific node types.
