> ## 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.

# TypeTree

> Display recursive type structures with expandable nested properties

export const TypeInfo = {
  "MintTsdocs": {
    "ApiExtractorApiReportConfig": {
      "name": "ApiExtractorApiReportConfig",
      "type": "interface",
      "description": "Configuration for API report (.api.md) generation",
      "properties": [{
        "name": "enabled",
        "type": "boolean",
        "description": "Whether to generate API report files",
        "required": false,
        "defaultValue": "[object Object]"
      }, {
        "name": "reportFileName",
        "type": "string",
        "description": "Name of the API report file",
        "required": false,
        "defaultValue": "[object Object]"
      }, {
        "name": "reportFolder",
        "type": "string",
        "description": "Folder where the API report file will be written",
        "required": false,
        "defaultValue": "[object Object]"
      }, {
        "name": "reportTempFolder",
        "type": "string",
        "description": "Temporary folder for API report generation",
        "required": false,
        "defaultValue": "[object Object]"
      }]
    },
    "ApiExtractorCompilerConfig": {
      "name": "ApiExtractorCompilerConfig",
      "type": "interface",
      "description": "TypeScript compiler configuration for API Extractor",
      "properties": [{
        "name": "skipLibCheck",
        "type": "boolean",
        "description": "Whether to skip type checking of declaration files",
        "required": false,
        "defaultValue": "[object Object]"
      }, {
        "name": "tsconfigFilePath",
        "type": "string",
        "description": "Path to the tsconfig.json file",
        "required": false,
        "defaultValue": "[object Object]"
      }]
    },
    "ApiExtractorConfig": {
      "name": "ApiExtractorConfig",
      "type": "interface",
      "description": "Configuration for API Extractor tool integration. API Extractor analyzes TypeScript declarations and generates documentation models.",
      "properties": [{
        "name": "apiReport",
        "type": "object",
        "description": "API report (.api.md) generation settings. API reports show a text summary of your public API surface.",
        "required": false,
        "properties": [{
          "name": "enabled",
          "type": "boolean",
          "description": "Whether to generate API report files",
          "required": false,
          "defaultValue": "[object Object]"
        }, {
          "name": "reportFileName",
          "type": "string",
          "description": "Name of the API report file",
          "required": false,
          "defaultValue": "[object Object]"
        }, {
          "name": "reportFolder",
          "type": "string",
          "description": "Folder where the API report file will be written",
          "required": false,
          "defaultValue": "[object Object]"
        }, {
          "name": "reportTempFolder",
          "type": "string",
          "description": "Temporary folder for API report generation",
          "required": false,
          "defaultValue": "[object Object]"
        }]
      }, {
        "name": "bundledPackages",
        "type": "string[]",
        "description": "NPM packages to treat as part of this package. Useful when you have multiple packages that should be documented together.",
        "required": false
      }, {
        "name": "compiler",
        "type": "object",
        "description": "TypeScript compiler options for API analysis",
        "required": false,
        "properties": [{
          "name": "skipLibCheck",
          "type": "boolean",
          "description": "Whether to skip type checking of declaration files",
          "required": false,
          "defaultValue": "[object Object]"
        }, {
          "name": "tsconfigFilePath",
          "type": "string",
          "description": "Path to the tsconfig.json file",
          "required": false,
          "defaultValue": "[object Object]"
        }]
      }, {
        "name": "configPath",
        "type": "string",
        "description": "Path to custom api-extractor.json file. If specified, will use this instead of generating one automatically. This allows full control over API Extractor configuration.",
        "required": false
      }, {
        "name": "docModel",
        "type": "object",
        "description": "Doc model (.api.json) generation settings. The doc model is used to generate the final MDX documentation.",
        "required": false,
        "properties": [{
          "name": "enabled",
          "type": "boolean",
          "description": "Whether to generate .api.json files for documentation",
          "required": false,
          "defaultValue": "[object Object]"
        }, {
          "name": "projectFolderUrl",
          "type": "string",
          "description": "Base URL for source code links in documentation. Should point to your repository on GitHub, GitLab, etc.",
          "required": false
        }]
      }, {
        "name": "dtsRollup",
        "type": "object",
        "description": "TypeScript declaration (.d.ts) rollup settings. Rollups combine multiple .d.ts files into a single file.",
        "required": false,
        "properties": [{
          "name": "alphaTrimmedFilePath",
          "type": "string",
          "description": "Path for the alpha-trimmed .d.ts rollup file (includes `@public`, `@beta`, and `@alpha`)",
          "required": false
        }, {
          "name": "betaTrimmedFilePath",
          "type": "string",
          "description": "Path for the beta-trimmed .d.ts rollup file (includes `@public` and `@beta`)",
          "required": false
        }, {
          "name": "enabled",
          "type": "boolean",
          "description": "Whether to generate rolled-up .d.ts files",
          "required": false,
          "defaultValue": "[object Object]"
        }, {
          "name": "publicTrimmedFilePath",
          "type": "string",
          "description": "Path for the public-trimmed .d.ts rollup file (includes only `@public`)",
          "required": false
        }, {
          "name": "untrimmedFilePath",
          "type": "string",
          "description": "Path for the untrimmed .d.ts rollup file (includes all declarations)",
          "required": false
        }]
      }, {
        "name": "messages",
        "type": "object",
        "description": "Message reporting configuration. Controls how different types of diagnostic messages are handled.",
        "required": false,
        "properties": [{
          "name": "compilerMessageReporting",
          "type": "Record<string, MessageReportingItem>",
          "description": "Configuration for TypeScript compiler messages",
          "required": false
        }, {
          "name": "extractorMessageReporting",
          "type": "Record<string, MessageReportingItem>",
          "description": "Configuration for API Extractor messages",
          "required": false
        }, {
          "name": "tsdocMessageReporting",
          "type": "Record<string, MessageReportingItem>",
          "description": "Configuration for TSDoc parser messages",
          "required": false
        }]
      }]
    },
    "ApiExtractorDocModelConfig": {
      "name": "ApiExtractorDocModelConfig",
      "type": "interface",
      "description": "Configuration for API documentation model (.api.json) generation",
      "properties": [{
        "name": "enabled",
        "type": "boolean",
        "description": "Whether to generate .api.json files for documentation",
        "required": false,
        "defaultValue": "[object Object]"
      }, {
        "name": "projectFolderUrl",
        "type": "string",
        "description": "Base URL for source code links in documentation. Should point to your repository on GitHub, GitLab, etc.",
        "required": false
      }]
    },
    "ApiExtractorDtsRollupConfig": {
      "name": "ApiExtractorDtsRollupConfig",
      "type": "interface",
      "description": "Configuration for TypeScript declaration (.d.ts) rollup generation",
      "properties": [{
        "name": "alphaTrimmedFilePath",
        "type": "string",
        "description": "Path for the alpha-trimmed .d.ts rollup file (includes `@public`, `@beta`, and `@alpha`)",
        "required": false
      }, {
        "name": "betaTrimmedFilePath",
        "type": "string",
        "description": "Path for the beta-trimmed .d.ts rollup file (includes `@public` and `@beta`)",
        "required": false
      }, {
        "name": "enabled",
        "type": "boolean",
        "description": "Whether to generate rolled-up .d.ts files",
        "required": false,
        "defaultValue": "[object Object]"
      }, {
        "name": "publicTrimmedFilePath",
        "type": "string",
        "description": "Path for the public-trimmed .d.ts rollup file (includes only `@public`)",
        "required": false
      }, {
        "name": "untrimmedFilePath",
        "type": "string",
        "description": "Path for the untrimmed .d.ts rollup file (includes all declarations)",
        "required": false
      }]
    },
    "ApiExtractorMessagesConfig": {
      "name": "ApiExtractorMessagesConfig",
      "type": "interface",
      "description": "Configuration for controlling how different types of messages are reported",
      "properties": [{
        "name": "compilerMessageReporting",
        "type": "Record<string, MessageReportingItem>",
        "description": "Configuration for TypeScript compiler messages",
        "required": false
      }, {
        "name": "extractorMessageReporting",
        "type": "Record<string, MessageReportingItem>",
        "description": "Configuration for API Extractor messages",
        "required": false
      }, {
        "name": "tsdocMessageReporting",
        "type": "Record<string, MessageReportingItem>",
        "description": "Configuration for TSDoc parser messages",
        "required": false
      }]
    },
    "ApiModelError": {
      "name": "ApiModelError",
      "type": "class",
      "description": "Represents an error related to loading or parsing API model files (`.api.json`)."
    },
    "ApiResolutionCache": {
      "name": "ApiResolutionCache",
      "type": "class",
      "description": "Simple LRU cache for API resolution results"
    },
    "ApiResolutionCacheOptions": {
      "name": "ApiResolutionCacheOptions",
      "type": "interface",
      "description": "Configuration options for API resolution cache",
      "properties": [{
        "name": "enabled",
        "type": "boolean",
        "description": "Whether to enable caching",
        "required": false
      }, {
        "name": "maxSize",
        "type": "number",
        "description": "Maximum number of cached resolutions",
        "required": false
      }]
    },
    "ApiSurfaceStats": {
      "name": "ApiSurfaceStats",
      "type": "interface",
      "description": "Statistics about the API surface area with per-type coverage",
      "properties": [{
        "name": "classes",
        "type": "object",
        "required": true,
        "properties": [{
          "name": "coveragePercent",
          "type": "number",
          "required": true
        }, {
          "name": "documented",
          "type": "number",
          "required": true
        }, {
          "name": "total",
          "type": "number",
          "required": true
        }, {
          "name": "undocumented",
          "type": "number",
          "required": true
        }]
      }, {
        "name": "enums",
        "type": "object",
        "required": true,
        "properties": [{
          "name": "coveragePercent",
          "type": "number",
          "required": true
        }, {
          "name": "documented",
          "type": "number",
          "required": true
        }, {
          "name": "total",
          "type": "number",
          "required": true
        }, {
          "name": "undocumented",
          "type": "number",
          "required": true
        }]
      }, {
        "name": "functions",
        "type": "object",
        "required": true,
        "properties": [{
          "name": "coveragePercent",
          "type": "number",
          "required": true
        }, {
          "name": "documented",
          "type": "number",
          "required": true
        }, {
          "name": "total",
          "type": "number",
          "required": true
        }, {
          "name": "undocumented",
          "type": "number",
          "required": true
        }]
      }, {
        "name": "interfaces",
        "type": "object",
        "required": true,
        "properties": [{
          "name": "coveragePercent",
          "type": "number",
          "required": true
        }, {
          "name": "documented",
          "type": "number",
          "required": true
        }, {
          "name": "total",
          "type": "number",
          "required": true
        }, {
          "name": "undocumented",
          "type": "number",
          "required": true
        }]
      }, {
        "name": "methods",
        "type": "object",
        "required": true,
        "properties": [{
          "name": "coveragePercent",
          "type": "number",
          "required": true
        }, {
          "name": "documented",
          "type": "number",
          "required": true
        }, {
          "name": "total",
          "type": "number",
          "required": true
        }, {
          "name": "undocumented",
          "type": "number",
          "required": true
        }]
      }, {
        "name": "namespaces",
        "type": "object",
        "required": true,
        "properties": [{
          "name": "coveragePercent",
          "type": "number",
          "required": true
        }, {
          "name": "documented",
          "type": "number",
          "required": true
        }, {
          "name": "total",
          "type": "number",
          "required": true
        }, {
          "name": "undocumented",
          "type": "number",
          "required": true
        }]
      }, {
        "name": "properties",
        "type": "object",
        "required": true,
        "properties": [{
          "name": "coveragePercent",
          "type": "number",
          "required": true
        }, {
          "name": "documented",
          "type": "number",
          "required": true
        }, {
          "name": "total",
          "type": "number",
          "required": true
        }, {
          "name": "undocumented",
          "type": "number",
          "required": true
        }]
      }, {
        "name": "typeAliases",
        "type": "object",
        "required": true,
        "properties": [{
          "name": "coveragePercent",
          "type": "number",
          "required": true
        }, {
          "name": "documented",
          "type": "number",
          "required": true
        }, {
          "name": "total",
          "type": "number",
          "required": true
        }, {
          "name": "undocumented",
          "type": "number",
          "required": true
        }]
      }, {
        "name": "variables",
        "type": "object",
        "required": true,
        "properties": [{
          "name": "coveragePercent",
          "type": "number",
          "required": true
        }, {
          "name": "documented",
          "type": "number",
          "required": true
        }, {
          "name": "total",
          "type": "number",
          "required": true
        }, {
          "name": "undocumented",
          "type": "number",
          "required": true
        }]
      }]
    },
    "CacheManager": {
      "name": "CacheManager",
      "type": "class",
      "description": "Centralized cache manager for coordinating all caching operationsThis class manages all caching operations in mint-tsdocs. To understand how caching fits into the overall architecture, check the  documentation. The cache system includes type analysis caching and API resolution caching.",
      "properties": [{
        "name": "apiResolution",
        "type": "ApiResolutionCache",
        "description": "Get the API resolution cache",
        "required": true
      }, {
        "name": "typeAnalysis",
        "type": "TypeAnalysisCache",
        "description": "Get the type analysis cache",
        "required": true
      }]
    },
    "CacheManagerOptions": {
      "name": "CacheManagerOptions",
      "type": "interface",
      "description": "Configuration for all cache types",
      "properties": [{
        "name": "apiResolution",
        "type": "object",
        "description": "API resolution cache options",
        "required": false,
        "properties": [{
          "name": "enabled",
          "type": "boolean",
          "description": "Whether to enable caching",
          "required": false
        }, {
          "name": "maxSize",
          "type": "number",
          "description": "Maximum number of cached resolutions",
          "required": false
        }]
      }, {
        "name": "enabled",
        "type": "boolean",
        "description": "Enable caching globally",
        "required": false
      }, {
        "name": "enableStats",
        "type": "boolean",
        "description": "Enable cache statistics reporting",
        "required": false
      }, {
        "name": "typeAnalysis",
        "type": "object",
        "description": "Type analysis cache options",
        "required": false,
        "properties": [{
          "name": "enabled",
          "type": "boolean",
          "description": "Whether to enable caching",
          "required": false
        }, {
          "name": "maxSize",
          "type": "number",
          "description": "Maximum number of cached type analyses",
          "required": false
        }]
      }]
    },
    "CoverageConfig": {
      "name": "CoverageConfig",
      "type": "interface",
      "description": "Configuration for the coverage command.",
      "properties": [{
        "name": "exclude",
        "type": "string[]",
        "description": "Glob patterns for files to exclude from coverage calculation. Matches against the source file path of the API item.",
        "required": false
      }, {
        "name": "groupBy",
        "type": "'file' | 'folder' | 'kind' | 'none'",
        "description": "How to group the coverage report. - `file`: Group by source file - `folder`: Group by source folder - `kind`: Group by API item kind (Class, Interface, etc.) - `none`: No grouping (flat list of items if verbose, or just summary)",
        "required": false,
        "defaultValue": "[object Object]"
      }, {
        "name": "include",
        "type": "string[]",
        "description": "Glob patterns for files to include in coverage calculation. Matches against the source file path of the API item.",
        "required": false
      }, {
        "name": "includeInternal",
        "type": "boolean",
        "description": "Whether to include internal items in coverage calculation. Default: false",
        "required": false,
        "deprecated": true
      }, {
        "name": "rules",
        "type": "CoverageRule[]",
        "description": "Granular rules for coverage calculation. Rules are evaluated in order. The first matching rule determines the level.",
        "required": false
      }, {
        "name": "threshold",
        "type": "number",
        "description": "Minimum coverage percentage required to pass. Default: 80",
        "required": false
      }]
    },
    "CoverageLevel": {
      "name": "CoverageLevel",
      "type": "type",
      "description": "Level of coverage requirement for an API item."
    },
    "CoverageRule": {
      "name": "CoverageRule",
      "type": "interface",
      "description": "Rule for determining the coverage level of an API item.",
      "properties": [{
        "name": "kind",
        "type": "string | string[]",
        "description": "The kind of API item this rule applies to. e.g., 'Class', 'Interface', 'Method', 'Property'",
        "required": true
      }, {
        "name": "level",
        "type": "CoverageLevel",
        "description": "The coverage level for this item. Default: 'required'",
        "required": true
      }, {
        "name": "releaseTag",
        "type": "string | string[]",
        "description": "The TSDoc release tag of the item. e.g., 'public', 'beta', 'alpha', 'internal', 'none'",
        "required": false
      }, {
        "name": "visibility",
        "type": "'public' | 'protected' | 'private' | ('public' | 'protected' | 'private')[]",
        "description": "The TypeScript visibility of the item. e.g., 'public', 'protected', 'private'",
        "required": false
      }]
    },
    "CustomDocNodes": {
      "name": "CustomDocNodes",
      "type": "class",
      "properties": [{
        "name": "configuration",
        "type": "TSDocConfiguration",
        "required": true
      }]
    },
    "CustomMarkdownEmitter": {
      "name": "CustomMarkdownEmitter",
      "type": "class",
      "description": "Custom markdown emitter that extends the base MarkdownEmitter to provide Mintlify-specific formatting and cross-reference resolution.This emitter converts TSDoc tables into Mintlify components (ParamField, ResponseField, TypeTree) for better documentation UX. It also handles API reference resolution with caching for performance.## ArchitectureThe emission process follows this flow: 1. TSDoc nodes are traversed recursively via `writeNode()` 2. Tables are detected and classified by their header content 3. Property tables → TypeTree components with nested object support 4. Method/Constructor tables → ResponseField components 5. Other tables → HTML table fallback## Security ConsiderationsAll user content is sanitized through SecurityUtils before being embedded in JSX/MDX: - `sanitizeJsxAttribute()` - For JSX attribute values (prevents quote escape attacks) - `sanitizeJsonForJsx()` - For JSON data embedded in JSX props - `getEscapedText()` - For markdown content (prevents markdown injection)Note: Content injection (XSS, template injection) is NOT a threat because users generate documentation from their own code for their own sites. Security focus is on command injection and path traversal (see CLAUDE.md).## Caching StrategyAPI reference resolution is cached via ApiResolutionCache (LRU cache) to avoid repeated expensive lookups during documentation generation. Cache is ephemeral (per-run) and does not persist across builds."
    },
    "DebugFunction": {
      "name": "DebugFunction",
      "type": "type",
      "description": "Debug function type (matches debug package signature)"
    },
    "Debugger": {
      "name": "Debugger",
      "type": "interface",
      "description": "Debugger instance with level-specific methods",
      "properties": [{
        "name": "debug",
        "type": "DebugFunction",
        "description": "Log debug-level messages",
        "required": true
      }, {
        "name": "error",
        "type": "DebugFunction",
        "description": "Log error-level messages (always shown when debugging enabled)",
        "required": true
      }, {
        "name": "info",
        "type": "DebugFunction",
        "description": "Log info-level messages",
        "required": true
      }, {
        "name": "namespace",
        "type": "string",
        "description": "Get the namespace for this debugger",
        "required": true
      }, {
        "name": "trace",
        "type": "DebugFunction",
        "description": "Log trace-level messages (most verbose)",
        "required": true
      }, {
        "name": "warn",
        "type": "DebugFunction",
        "description": "Log warning-level messages",
        "required": true
      }]
    },
    "DebugLevel": {
      "name": "DebugLevel",
      "type": "type"
    },
    "DocEmphasisSpan": {
      "name": "DocEmphasisSpan",
      "type": "class",
      "description": "Represents a span of text that is styled with CommonMark emphasis (italics), strong emphasis (boldface), or both.",
      "properties": [{
        "name": "bold",
        "type": "boolean",
        "required": true
      }, {
        "name": "italic",
        "type": "boolean",
        "required": true
      }, {
        "name": "kind",
        "type": "string",
        "required": true
      }]
    },
    "DocExpandable": {
      "name": "DocExpandable",
      "type": "class",
      "description": "Represents an Expandable component for Mintlify documentation. Renders as: ...",
      "properties": [{
        "name": "content",
        "type": "DocSection",
        "required": true
      }, {
        "name": "kind",
        "type": "string",
        "required": true
      }, {
        "name": "title",
        "type": "string",
        "required": true
      }]
    },
    "DocHeading": {
      "name": "DocHeading",
      "type": "class",
      "description": "Represents a section header similar to an HTML `<h1>` or `<h2>` element.",
      "properties": [{
        "name": "kind",
        "type": "string",
        "required": true
      }, {
        "name": "level",
        "type": "number",
        "required": true
      }, {
        "name": "title",
        "type": "string",
        "required": true
      }]
    },
    "DocNoteBox": {
      "name": "DocNoteBox",
      "type": "class",
      "description": "Represents a note box, which is typically displayed as a bordered box containing informational text.",
      "properties": [{
        "name": "content",
        "type": "DocSection",
        "required": true
      }, {
        "name": "kind",
        "type": "string",
        "required": true
      }]
    },
    "DocTable": {
      "name": "DocTable",
      "type": "class",
      "description": "Represents table, similar to an HTML `<table>` element.",
      "properties": [{
        "name": "header",
        "type": "DocTableRow",
        "required": true
      }, {
        "name": "kind",
        "type": "string",
        "required": true
      }, {
        "name": "rows",
        "type": "ReadonlyArray<DocTableRow>",
        "required": true
      }]
    },
    "DocTableCell": {
      "name": "DocTableCell",
      "type": "class",
      "description": "Represents table cell, similar to an HTML `<td>` element.",
      "properties": [{
        "name": "content",
        "type": "DocSection",
        "required": true
      }, {
        "name": "kind",
        "type": "string",
        "required": true
      }]
    },
    "DocTableRow": {
      "name": "DocTableRow",
      "type": "class",
      "description": "Represents table row, similar to an HTML `<tr>` element.",
      "properties": [{
        "name": "cells",
        "type": "ReadonlyArray<DocTableCell>",
        "required": true
      }, {
        "name": "kind",
        "type": "string",
        "required": true
      }]
    },
    "DocumentationCoverageStats": {
      "name": "DocumentationCoverageStats",
      "type": "interface",
      "description": "Overall documentation coverage statistics",
      "properties": [{
        "name": "coveragePercent",
        "type": "number",
        "required": true
      }, {
        "name": "documented",
        "type": "number",
        "required": true
      }, {
        "name": "total",
        "type": "number",
        "required": true
      }, {
        "name": "undocumented",
        "type": "number",
        "required": true
      }, {
        "name": "withExamples",
        "type": "number",
        "required": true
      }, {
        "name": "withRemarks",
        "type": "number",
        "required": true
      }]
    },
    "DocumentationError": {
      "name": "DocumentationError",
      "type": "class",
      "description": "Base class for all custom errors in the documentation generation process. It extends the native `Error` class with additional structured context.",
      "properties": [{
        "name": "code",
        "type": "ErrorCode",
        "description": "A standardized, machine-readable error code from the `ErrorCode` enum. This allows for programmatic handling of different error types.",
        "required": true
      }, {
        "name": "context",
        "type": "object",
        "description": "An object containing additional, structured information about the error.",
        "required": true,
        "properties": [{
          "name": "cause",
          "type": "Error",
          "description": "The original error that was caught and wrapped, allowing for error chaining. This is crucial for preserving the root cause of a failure.",
          "required": false
        }, {
          "name": "command",
          "type": "string",
          "description": "If the error was caused by a command, this holds the command that was executed.",
          "required": false
        }, {
          "name": "data",
          "type": "Record<string, unknown>",
          "description": "A record of additional, arbitrary data relevant to the error, useful for debugging.",
          "required": false
        }, {
          "name": "exitCode",
          "type": "number",
          "description": "The exit code returned by a failed command.",
          "required": false
        }, {
          "name": "operation",
          "type": "string",
          "description": "The specific operation or action being performed when the error occurred.",
          "required": false
        }, {
          "name": "resource",
          "type": "string",
          "description": "The file, directory, or resource that was being processed when the error occurred.",
          "required": false
        }, {
          "name": "suggestion",
          "type": "string",
          "description": "A user-friendly suggestion on how to resolve the error.",
          "required": false
        }]
      }, {
        "name": "isUserError",
        "type": "boolean",
        "description": "A boolean flag indicating whether the error is likely caused by user input (`true`) or by a system/internal failure (`false`). This helps in tailoring the error message to the appropriate audience.",
        "required": true
      }, {
        "name": "timestamp",
        "type": "Date",
        "description": "The exact time when the error instance was created.",
        "required": true
      }]
    },
    "DocumentationHelper": {
      "name": "DocumentationHelper",
      "type": "class",
      "description": "Helper class for generating consistent documentation with Mintlify components"
    },
    "DocumentationStatistics": {
      "name": "DocumentationStatistics",
      "type": "interface",
      "description": "Complete documentation statistics",
      "properties": [{
        "name": "apiSurface",
        "type": "object",
        "required": true,
        "properties": [{
          "name": "classes",
          "type": "object",
          "required": true,
          "properties": [{
            "name": "coveragePercent",
            "type": "number",
            "required": true
          }, {
            "name": "documented",
            "type": "number",
            "required": true
          }, {
            "name": "total",
            "type": "number",
            "required": true
          }, {
            "name": "undocumented",
            "type": "number",
            "required": true
          }]
        }, {
          "name": "enums",
          "type": "object",
          "required": true,
          "properties": [{
            "name": "coveragePercent",
            "type": "number",
            "required": true
          }, {
            "name": "documented",
            "type": "number",
            "required": true
          }, {
            "name": "total",
            "type": "number",
            "required": true
          }, {
            "name": "undocumented",
            "type": "number",
            "required": true
          }]
        }, {
          "name": "functions",
          "type": "object",
          "required": true,
          "properties": [{
            "name": "coveragePercent",
            "type": "number",
            "required": true
          }, {
            "name": "documented",
            "type": "number",
            "required": true
          }, {
            "name": "total",
            "type": "number",
            "required": true
          }, {
            "name": "undocumented",
            "type": "number",
            "required": true
          }]
        }, {
          "name": "interfaces",
          "type": "object",
          "required": true,
          "properties": [{
            "name": "coveragePercent",
            "type": "number",
            "required": true
          }, {
            "name": "documented",
            "type": "number",
            "required": true
          }, {
            "name": "total",
            "type": "number",
            "required": true
          }, {
            "name": "undocumented",
            "type": "number",
            "required": true
          }]
        }, {
          "name": "methods",
          "type": "object",
          "required": true,
          "properties": [{
            "name": "coveragePercent",
            "type": "number",
            "required": true
          }, {
            "name": "documented",
            "type": "number",
            "required": true
          }, {
            "name": "total",
            "type": "number",
            "required": true
          }, {
            "name": "undocumented",
            "type": "number",
            "required": true
          }]
        }, {
          "name": "namespaces",
          "type": "object",
          "required": true,
          "properties": [{
            "name": "coveragePercent",
            "type": "number",
            "required": true
          }, {
            "name": "documented",
            "type": "number",
            "required": true
          }, {
            "name": "total",
            "type": "number",
            "required": true
          }, {
            "name": "undocumented",
            "type": "number",
            "required": true
          }]
        }, {
          "name": "properties",
          "type": "object",
          "required": true,
          "properties": [{
            "name": "coveragePercent",
            "type": "number",
            "required": true
          }, {
            "name": "documented",
            "type": "number",
            "required": true
          }, {
            "name": "total",
            "type": "number",
            "required": true
          }, {
            "name": "undocumented",
            "type": "number",
            "required": true
          }]
        }, {
          "name": "typeAliases",
          "type": "object",
          "required": true,
          "properties": [{
            "name": "coveragePercent",
            "type": "number",
            "required": true
          }, {
            "name": "documented",
            "type": "number",
            "required": true
          }, {
            "name": "total",
            "type": "number",
            "required": true
          }, {
            "name": "undocumented",
            "type": "number",
            "required": true
          }]
        }, {
          "name": "variables",
          "type": "object",
          "required": true,
          "properties": [{
            "name": "coveragePercent",
            "type": "number",
            "required": true
          }, {
            "name": "documented",
            "type": "number",
            "required": true
          }, {
            "name": "total",
            "type": "number",
            "required": true
          }, {
            "name": "undocumented",
            "type": "number",
            "required": true
          }]
        }]
      }, {
        "name": "coverage",
        "type": "object",
        "required": true,
        "properties": [{
          "name": "coveragePercent",
          "type": "number",
          "required": true
        }, {
          "name": "documented",
          "type": "number",
          "required": true
        }, {
          "name": "total",
          "type": "number",
          "required": true
        }, {
          "name": "undocumented",
          "type": "number",
          "required": true
        }, {
          "name": "withExamples",
          "type": "number",
          "required": true
        }, {
          "name": "withRemarks",
          "type": "number",
          "required": true
        }]
      }, {
        "name": "generatedFiles",
        "type": "object",
        "required": true,
        "properties": [{
          "name": "averageSize",
          "type": "number",
          "required": true
        }, {
          "name": "mdxFiles",
          "type": "number",
          "required": true
        }, {
          "name": "totalSize",
          "type": "number",
          "required": true
        }]
      }, {
        "name": "projectName",
        "type": "string",
        "required": false
      }]
    },
    "DocumentationStats": {
      "name": "DocumentationStats",
      "type": "class",
      "description": "Utility class for collecting documentation statistics"
    },
    "ErrorBoundary": {
      "name": "ErrorBoundary",
      "type": "class",
      "description": "Error boundary for handling errors during documentation generation."
    },
    "ErrorBoundaryOptions": {
      "name": "ErrorBoundaryOptions",
      "type": "interface",
      "properties": [{
        "name": "continueOnError",
        "type": "boolean",
        "description": "Whether to continue processing when encountering non-critical errors",
        "required": false
      }, {
        "name": "errorLogPath",
        "type": "string",
        "description": "Path to log error details (optional)",
        "required": false
      }, {
        "name": "includeStackTraces",
        "type": "boolean",
        "description": "Whether to include stack traces in error logs",
        "required": false
      }, {
        "name": "logErrors",
        "type": "boolean",
        "description": "Whether to log detailed error information",
        "required": false
      }, {
        "name": "maxErrors",
        "type": "number",
        "description": "Maximum number of errors before failing completely",
        "required": false
      }]
    },
    "ErrorContext": {
      "name": "ErrorContext",
      "type": "interface",
      "description": "Provides structured metadata about an error, offering rich context for debugging and logging.",
      "properties": [{
        "name": "cause",
        "type": "Error",
        "description": "The original error that was caught and wrapped, allowing for error chaining. This is crucial for preserving the root cause of a failure.",
        "required": false
      }, {
        "name": "command",
        "type": "string",
        "description": "If the error was caused by a command, this holds the command that was executed.",
        "required": false
      }, {
        "name": "data",
        "type": "Record<string, unknown>",
        "description": "A record of additional, arbitrary data relevant to the error, useful for debugging.",
        "required": false
      }, {
        "name": "exitCode",
        "type": "number",
        "description": "The exit code returned by a failed command.",
        "required": false
      }, {
        "name": "operation",
        "type": "string",
        "description": "The specific operation or action being performed when the error occurred.",
        "required": false
      }, {
        "name": "resource",
        "type": "string",
        "description": "The file, directory, or resource that was being processed when the error occurred.",
        "required": false
      }, {
        "name": "suggestion",
        "type": "string",
        "description": "A user-friendly suggestion on how to resolve the error.",
        "required": false
      }]
    },
    "ErrorResult": {
      "name": "ErrorResult",
      "type": "interface",
      "properties": [{
        "name": "data",
        "type": "T",
        "description": "The result data if successful",
        "required": false
      }, {
        "name": "error",
        "type": "DocumentationError",
        "description": "The error if failed",
        "required": false
      }, {
        "name": "recovered",
        "type": "boolean",
        "description": "Whether this was recovered from a previous error",
        "required": false
      }, {
        "name": "success",
        "type": "boolean",
        "description": "Whether the operation succeeded",
        "required": true
      }]
    },
    "FileSystemError": {
      "name": "FileSystemError",
      "type": "class",
      "description": "Represents an error related to file system operations (read, write, etc.)."
    },
    "GeneratedFilesStats": {
      "name": "GeneratedFilesStats",
      "type": "interface",
      "description": "Statistics about generated documentation files",
      "properties": [{
        "name": "averageSize",
        "type": "number",
        "required": true
      }, {
        "name": "mdxFiles",
        "type": "number",
        "required": true
      }, {
        "name": "totalSize",
        "type": "number",
        "required": true
      }]
    },
    "GlobalErrorBoundary": {
      "name": "GlobalErrorBoundary",
      "type": "class",
      "description": "Global error boundary instance for the application."
    },
    "ICustomMarkdownEmitterOptions": {
      "name": "ICustomMarkdownEmitterOptions",
      "type": "interface",
      "description": "Configuration options for CustomMarkdownEmitter",
      "properties": [{
        "name": "contextApiItem",
        "type": "ApiItem | undefined",
        "required": true
      }, {
        "name": "onGetFilenameForApiItem",
        "type": "(apiItem: ApiItem) => string | undefined",
        "required": true
      }]
    },
    "IDocEmphasisSpanParameters": {
      "name": "IDocEmphasisSpanParameters",
      "type": "interface",
      "description": "Constructor parameters for .",
      "properties": [{
        "name": "bold",
        "type": "boolean",
        "required": false
      }, {
        "name": "italic",
        "type": "boolean",
        "required": false
      }]
    },
    "IDocHeadingParameters": {
      "name": "IDocHeadingParameters",
      "type": "interface",
      "description": "Constructor parameters for .",
      "properties": [{
        "name": "level",
        "type": "number",
        "required": false
      }, {
        "name": "title",
        "type": "string",
        "required": true
      }]
    },
    "IDocNoteBoxParameters": {
      "name": "IDocNoteBoxParameters",
      "type": "interface",
      "description": "Constructor parameters for ."
    },
    "IDocTableCellParameters": {
      "name": "IDocTableCellParameters",
      "type": "interface",
      "description": "Constructor parameters for ."
    },
    "IDocTableParameters": {
      "name": "IDocTableParameters",
      "type": "interface",
      "description": "Constructor parameters for .",
      "properties": [{
        "name": "headerCells",
        "type": "ReadonlyArray<DocTableCell>",
        "required": false
      }, {
        "name": "headerTitles",
        "type": "string[]",
        "required": false
      }]
    },
    "IDocTableRowParameters": {
      "name": "IDocTableRowParameters",
      "type": "interface",
      "description": "Constructor parameters for ."
    },
    "IMarkdownDocumenterOptions": {
      "name": "IMarkdownDocumenterOptions",
      "type": "interface",
      "description": "Configuration options for MarkdownDocumenter",
      "properties": [{
        "name": "apiModel",
        "type": "ApiModel",
        "required": true
      }, {
        "name": "convertReadme",
        "type": "boolean",
        "required": false
      }, {
        "name": "docsJsonPath",
        "type": "string",
        "required": false
      }, {
        "name": "enableMenu",
        "type": "boolean",
        "required": false
      }, {
        "name": "groupName",
        "type": "string",
        "required": false
      }, {
        "name": "outputFolder",
        "type": "string",
        "required": true
      }, {
        "name": "readmeTitle",
        "type": "string",
        "required": false
      }, {
        "name": "tabName",
        "type": "string",
        "required": false
      }, {
        "name": "templates",
        "type": "object",
        "description": "Template configuration for customizing output",
        "required": false,
        "properties": [{
          "name": "userTemplateDir",
          "type": "string",
          "required": false
        }, {
          "name": "overrides",
          "type": "Record<string, string>",
          "required": false
        }, {
          "name": "cache",
          "type": "boolean",
          "required": false
        }, {
          "name": "strict",
          "type": "boolean",
          "required": false
        }]
      }, {
        "name": "verbose",
        "type": "boolean",
        "required": false
      }]
    },
    "IMarkdownEmitterContext": {
      "name": "IMarkdownEmitterContext",
      "type": "interface",
      "description": "Context for markdown emission",
      "properties": [{
        "name": "boldRequested",
        "type": "boolean",
        "required": true
      }, {
        "name": "italicRequested",
        "type": "boolean",
        "required": true
      }, {
        "name": "options",
        "type": "TOptions",
        "required": true
      }, {
        "name": "writer",
        "type": "IndentedWriter",
        "required": true
      }, {
        "name": "writingBold",
        "type": "boolean",
        "required": true
      }, {
        "name": "writingItalic",
        "type": "boolean",
        "required": true
      }]
    },
    "IMarkdownEmitterOptions": {
      "name": "IMarkdownEmitterOptions",
      "type": "interface",
      "description": "Configuration options for MarkdownEmitter"
    },
    "IndentedWriter": {
      "name": "IndentedWriter",
      "type": "class",
      "description": "A utility for writing indented text.",
      "properties": [{
        "name": "defaultIndentPrefix",
        "type": "string",
        "description": "The text characters used to create one level of indentation. Two spaces by default.",
        "required": true
      }]
    },
    "IReturnData": {
      "name": "IReturnData",
      "type": "interface",
      "properties": [{
        "name": "description",
        "type": "string",
        "required": false
      }, {
        "name": "type",
        "type": "string",
        "required": true
      }, {
        "name": "typePath",
        "type": "string",
        "required": false
      }, {
        "name": "typeRef",
        "type": "string",
        "required": false
      }]
    },
    "ITableData": {
      "name": "ITableData",
      "type": "interface",
      "properties": [{
        "name": "headers",
        "type": "string[]",
        "required": true
      }, {
        "name": "rows",
        "type": "ITableRow[]",
        "required": true
      }, {
        "name": "title",
        "type": "string",
        "required": true
      }]
    },
    "ITableRow": {
      "name": "ITableRow",
      "type": "interface",
      "properties": [{
        "name": "defaultValue",
        "type": "string",
        "required": false
      }, {
        "name": "description",
        "type": "string",
        "required": false
      }, {
        "name": "isDeprecated",
        "type": "boolean",
        "required": false
      }, {
        "name": "isInherited",
        "type": "boolean",
        "required": false
      }, {
        "name": "isOptional",
        "type": "boolean",
        "required": false
      }, {
        "name": "modifiers",
        "type": "string[]",
        "required": false
      }, {
        "name": "title",
        "type": "string",
        "required": true
      }, {
        "name": "titlePath",
        "type": "string",
        "required": false
      }, {
        "name": "type",
        "type": "string",
        "required": false
      }, {
        "name": "typePath",
        "type": "string",
        "required": false
      }, {
        "name": "typeRef",
        "type": "string",
        "required": false
      }]
    },
    "ITemplateData": {
      "name": "ITemplateData",
      "type": "interface",
      "description": "Interface for template data that gets passed to EJS templates",
      "properties": [{
        "name": "abstractClasses",
        "type": "ITableRow[]",
        "required": false
      }, {
        "name": "apiItem",
        "type": "object",
        "required": true,
        "properties": [{
          "name": "name",
          "type": "string",
          "required": true
        }, {
          "name": "kind",
          "type": "string",
          "required": true
        }, {
          "name": "displayName",
          "type": "string",
          "required": true
        }, {
          "name": "description",
          "type": "string",
          "required": false
        }, {
          "name": "summary",
          "type": "DocSegment[]",
          "required": false
        }, {
          "name": "remarks",
          "type": "DocSegment[]",
          "required": false
        }, {
          "name": "signature",
          "type": "string",
          "required": false
        }, {
          "name": "isDeprecated",
          "type": "boolean",
          "required": false
        }, {
          "name": "isAlpha",
          "type": "boolean",
          "required": false
        }, {
          "name": "isBeta",
          "type": "boolean",
          "required": false
        }, {
          "name": "releaseTag",
          "type": "string",
          "required": false
        }]
      }, {
        "name": "classes",
        "type": "ITableRow[]",
        "required": false
      }, {
        "name": "constructors",
        "type": "ITableRow[]",
        "required": false
      }, {
        "name": "enumerations",
        "type": "ITableRow[]",
        "required": false
      }, {
        "name": "events",
        "type": "ITableRow[]",
        "required": false
      }, {
        "name": "examples",
        "type": "string[]",
        "required": false
      }, {
        "name": "functions",
        "type": "ITableRow[]",
        "required": false
      }, {
        "name": "guides",
        "type": "Array<{ path: string; description: string; }>",
        "required": false
      }, {
        "name": "heritageTypes",
        "type": "Array<{ name: string; path?: string; }>",
        "required": false
      }, {
        "name": "interfaces",
        "type": "ITableRow[]",
        "required": false
      }, {
        "name": "members",
        "type": "ITableRow[]",
        "required": false
      }, {
        "name": "methods",
        "type": "ITableRow[]",
        "required": false
      }, {
        "name": "namespaces",
        "type": "ITableRow[]",
        "required": false
      }, {
        "name": "navigation",
        "type": "object",
        "required": false,
        "properties": [{
          "name": "id",
          "type": "string",
          "required": true
        }, {
          "name": "title",
          "type": "string",
          "required": true
        }, {
          "name": "group",
          "type": "string",
          "required": false
        }]
      }, {
        "name": "page",
        "type": "object",
        "required": true,
        "properties": [{
          "name": "title",
          "type": "string",
          "required": true
        }, {
          "name": "description",
          "type": "string",
          "required": true
        }, {
          "name": "icon",
          "type": "string",
          "required": true
        }]
      }, {
        "name": "parameters",
        "type": "ITableRow[]",
        "required": false
      }, {
        "name": "properties",
        "type": "ITableRow[]",
        "required": false
      }, {
        "name": "rendering",
        "type": "object",
        "required": false,
        "properties": [{
          "name": "hideStringEnumValues",
          "type": "boolean",
          "required": false
        }]
      }, {
        "name": "returnType",
        "type": "object",
        "required": false,
        "properties": [{
          "name": "description",
          "type": "string",
          "required": false
        }, {
          "name": "type",
          "type": "string",
          "required": true
        }, {
          "name": "typePath",
          "type": "string",
          "required": false
        }, {
          "name": "typeRef",
          "type": "string",
          "required": false
        }]
      }, {
        "name": "typeAliases",
        "type": "ITableRow[]",
        "required": false
      }, {
        "name": "variables",
        "type": "ITableRow[]",
        "required": false
      }]
    },
    "ITemplateEngineOptions": {
      "name": "ITemplateEngineOptions",
      "type": "interface",
      "description": "Configuration for template engine",
      "properties": [{
        "name": "cache",
        "type": "boolean",
        "required": false
      }, {
        "name": "strict",
        "type": "boolean",
        "required": false
      }, {
        "name": "templateDir",
        "type": "string",
        "required": false
      }]
    },
    "ITemplateManagerOptions": {
      "name": "ITemplateManagerOptions",
      "type": "interface",
      "description": "Configuration for template manager",
      "properties": [{
        "name": "defaultTemplateDir",
        "type": "string",
        "required": false
      }, {
        "name": "overrides",
        "type": "Record<string, string>",
        "description": "Individual template overrides - map template names to file paths",
        "required": false
      }, {
        "name": "userTemplateDir",
        "type": "string",
        "required": false
      }]
    },
    "LinkValidation": {
      "name": "LinkValidation",
      "type": "interface",
      "description": "Validation result for links",
      "properties": [{
        "name": "error",
        "type": "string",
        "description": "Error message if validation failed",
        "required": false
      }, {
        "name": "isValid",
        "type": "boolean",
        "description": "Whether the link target is valid",
        "required": true
      }, {
        "name": "path",
        "type": "string",
        "description": "The resolved path to the target (if valid)",
        "required": false
      }]
    },
    "LinkValidator": {
      "name": "LinkValidator",
      "type": "class",
      "description": "Validates and resolves link targets for the Link component"
    },
    "LintConfig": {
      "name": "LintConfig",
      "type": "interface",
      "description": "Configuration for linting documentation.",
      "properties": [{
        "name": "eslint",
        "type": "object",
        "description": "Configuration for ESLint integration",
        "required": false,
        "properties": [{
          "name": "enabled",
          "type": "boolean",
          "required": false
        }, {
          "name": "directories",
          "type": "string[]",
          "required": false
        }, {
          "name": "configPath",
          "type": "string",
          "required": false
        }]
      }, {
        "name": "failOnError",
        "type": "boolean",
        "description": "Fail the command (exit code 1) when errors are found",
        "required": false,
        "defaultValue": "[object Object]"
      }]
    },
    "LiquidTemplateEngine": {
      "name": "LiquidTemplateEngine",
      "type": "class",
      "properties": [{
        "name": "liquid",
        "type": "Liquid",
        "description": "Get the Liquid engine for direct access",
        "required": true
      }, {
        "name": "templateDir",
        "type": "string",
        "description": "Get the template directory (public for template manager)",
        "required": true
      }]
    },
    "LiquidTemplateManager": {
      "name": "LiquidTemplateManager",
      "type": "class",
      "description": "Template manager that uses LiquidJS with template merging",
      "properties": [{
        "name": "liquidEngine",
        "type": "LiquidTemplateEngine",
        "description": "Get the Liquid engine for direct access",
        "required": true
      }, {
        "name": "mergedTemplateDir",
        "type": "string | undefined",
        "description": "Get the current merged template directory (for debugging)",
        "required": true
      }, {
        "name": "templateDataConverter",
        "type": "TemplateDataConverter",
        "description": "Get template data converter",
        "required": true
      }]
    },
    "MarkdownDocumenter": {
      "name": "MarkdownDocumenter",
      "type": "class",
      "description": "Core class for rendering API documentation in Mintlify-compatible MDX format.This class takes TypeScript API model data and converts it into MDX files with proper Mintlify frontmatter, navigation integration, and formatting suitable for documentation sites. The process involves multiple stages including data conversion and template rendering."
    },
    "MarkdownEmitter": {
      "name": "MarkdownEmitter",
      "type": "class",
      "description": "Base class for rendering TSDoc nodes to Markdown/MDX formatThis emitter traverses a TSDoc abstract syntax tree and converts it to markdown text. It handles standard markdown constructs (bold, italic, code, links) and provides extension points for subclasses to customize behavior.## Key Features- **TSDoc Node Processing**: Converts all standard TSDoc nodes to markdown - **Text Escaping**: Ensures special markdown characters are properly escaped - **Formatting Tracking**: Maintains state for bold/italic formatting - **Extension Points**: Virtual methods for subclass customization## Extension PointsSubclasses can override these virtual methods: - `writeNode()` - Customize handling for specific node types - `writeLinkTagWithCodeDestination()` - Handle links to code symbols (e.g., ) - `writeLinkTagWithUrlDestination()` - Handle external URL links## Usage Example"
    },
    "MessageReportingItem": {
      "name": "MessageReportingItem",
      "type": "interface",
      "description": "Configuration for how specific messages should be reported",
      "properties": [{
        "name": "addToApiReportFile",
        "type": "boolean",
        "description": "Whether to include this message in the API report file",
        "required": false,
        "defaultValue": "[object Object]"
      }, {
        "name": "logLevel",
        "type": "'error' | 'warning' | 'none'",
        "description": "How to report this message type - `error`: Report as an error (fails the build) - `warning`: Report as a warning (doesn't fail the build) - `none`: Suppress the message",
        "required": false
      }]
    },
    "MintlifyTsDocsConfig": {
      "name": "MintlifyTsDocsConfig",
      "type": "interface",
      "description": "Main configuration interface for mint-tsdocs. This configuration can be provided in mint-tsdocs.config.json or package.json.",
      "properties": [{
        "name": "$schema",
        "type": "string",
        "description": "JSON Schema reference for IDE autocomplete. Points to the schema file for validation and IntelliSense support.",
        "required": false,
        "defaultValue": "[object Object]"
      }, {
        "name": "apiExtractor",
        "type": "object",
        "description": "API Extractor configuration. Controls how TypeScript declarations are analyzed and processed. Configuration is written to .tsdocs/api-extractor.json during generation.",
        "required": false,
        "properties": [{
          "name": "apiReport",
          "type": "object",
          "description": "API report (.api.md) generation settings. API reports show a text summary of your public API surface.",
          "required": false,
          "properties": [{
            "name": "enabled",
            "type": "boolean",
            "description": "Whether to generate API report files",
            "required": false,
            "defaultValue": "[object Object]"
          }, {
            "name": "reportFileName",
            "type": "string",
            "description": "Name of the API report file",
            "required": false,
            "defaultValue": "[object Object]"
          }, {
            "name": "reportFolder",
            "type": "string",
            "description": "Folder where the API report file will be written",
            "required": false,
            "defaultValue": "[object Object]"
          }, {
            "name": "reportTempFolder",
            "type": "string",
            "description": "Temporary folder for API report generation",
            "required": false,
            "defaultValue": "[object Object]"
          }]
        }, {
          "name": "bundledPackages",
          "type": "string[]",
          "description": "NPM packages to treat as part of this package. Useful when you have multiple packages that should be documented together.",
          "required": false
        }, {
          "name": "compiler",
          "type": "object",
          "description": "TypeScript compiler options for API analysis",
          "required": false,
          "properties": [{
            "name": "skipLibCheck",
            "type": "boolean",
            "description": "Whether to skip type checking of declaration files",
            "required": false,
            "defaultValue": "[object Object]"
          }, {
            "name": "tsconfigFilePath",
            "type": "string",
            "description": "Path to the tsconfig.json file",
            "required": false,
            "defaultValue": "[object Object]"
          }]
        }, {
          "name": "configPath",
          "type": "string",
          "description": "Path to custom api-extractor.json file. If specified, will use this instead of generating one automatically. This allows full control over API Extractor configuration.",
          "required": false
        }, {
          "name": "docModel",
          "type": "object",
          "description": "Doc model (.api.json) generation settings. The doc model is used to generate the final MDX documentation.",
          "required": false,
          "properties": [{
            "name": "enabled",
            "type": "boolean",
            "description": "Whether to generate .api.json files for documentation",
            "required": false,
            "defaultValue": "[object Object]"
          }, {
            "name": "projectFolderUrl",
            "type": "string",
            "description": "Base URL for source code links in documentation. Should point to your repository on GitHub, GitLab, etc.",
            "required": false
          }]
        }, {
          "name": "dtsRollup",
          "type": "object",
          "description": "TypeScript declaration (.d.ts) rollup settings. Rollups combine multiple .d.ts files into a single file.",
          "required": false,
          "properties": [{
            "name": "alphaTrimmedFilePath",
            "type": "string",
            "description": "Path for the alpha-trimmed .d.ts rollup file (includes `@public`, `@beta`, and `@alpha`)",
            "required": false
          }, {
            "name": "betaTrimmedFilePath",
            "type": "string",
            "description": "Path for the beta-trimmed .d.ts rollup file (includes `@public` and `@beta`)",
            "required": false
          }, {
            "name": "enabled",
            "type": "boolean",
            "description": "Whether to generate rolled-up .d.ts files",
            "required": false,
            "defaultValue": "[object Object]"
          }, {
            "name": "publicTrimmedFilePath",
            "type": "string",
            "description": "Path for the public-trimmed .d.ts rollup file (includes only `@public`)",
            "required": false
          }, {
            "name": "untrimmedFilePath",
            "type": "string",
            "description": "Path for the untrimmed .d.ts rollup file (includes all declarations)",
            "required": false
          }]
        }, {
          "name": "messages",
          "type": "object",
          "description": "Message reporting configuration. Controls how different types of diagnostic messages are handled.",
          "required": false,
          "properties": [{
            "name": "compilerMessageReporting",
            "type": "Record<string, MessageReportingItem>",
            "description": "Configuration for TypeScript compiler messages",
            "required": false
          }, {
            "name": "extractorMessageReporting",
            "type": "Record<string, MessageReportingItem>",
            "description": "Configuration for API Extractor messages",
            "required": false
          }, {
            "name": "tsdocMessageReporting",
            "type": "Record<string, MessageReportingItem>",
            "description": "Configuration for TSDoc parser messages",
            "required": false
          }]
        }]
      }, {
        "name": "convertReadme",
        "type": "boolean",
        "description": "Whether to convert README.md to index.mdx in the output folder. Useful for including package overview documentation.",
        "required": false,
        "defaultValue": "[object Object]"
      }, {
        "name": "coverage",
        "type": "object",
        "description": "Coverage configuration. Settings for the `coverage` command.",
        "required": false,
        "properties": [{
          "name": "exclude",
          "type": "string[]",
          "description": "Glob patterns for files to exclude from coverage calculation. Matches against the source file path of the API item.",
          "required": false
        }, {
          "name": "groupBy",
          "type": "'file' | 'folder' | 'kind' | 'none'",
          "description": "How to group the coverage report. - `file`: Group by source file - `folder`: Group by source folder - `kind`: Group by API item kind (Class, Interface, etc.) - `none`: No grouping (flat list of items if verbose, or just summary)",
          "required": false,
          "defaultValue": "[object Object]"
        }, {
          "name": "include",
          "type": "string[]",
          "description": "Glob patterns for files to include in coverage calculation. Matches against the source file path of the API item.",
          "required": false
        }, {
          "name": "includeInternal",
          "type": "boolean",
          "description": "Whether to include internal items in coverage calculation. Default: false",
          "required": false,
          "deprecated": true
        }, {
          "name": "rules",
          "type": "CoverageRule[]",
          "description": "Granular rules for coverage calculation. Rules are evaluated in order. The first matching rule determines the level.",
          "required": false
        }, {
          "name": "threshold",
          "type": "number",
          "description": "Minimum coverage percentage required to pass. Default: 80",
          "required": false
        }]
      }, {
        "name": "docsJson",
        "type": "string",
        "description": "Path to Mintlify's docs.json file for navigation integration. This file will be updated with links to the generated documentation pages. If not specified, will search for docs.json in common locations.",
        "required": false
      }, {
        "name": "entryPoint",
        "type": "string",
        "description": "Path to the main TypeScript declaration file (.d.ts) to document. This is typically the output of your TypeScript build process. If not specified, will auto-detect from package.json `types` or `typings` field.",
        "required": false
      }, {
        "name": "groupName",
        "type": "string",
        "description": "Name of the group within the tab for organizing API documentation pages. Groups help organize related API pages under a common section.",
        "required": false,
        "defaultValue": "[object Object]"
      }, {
        "name": "lint",
        "type": "object",
        "description": "Linting configuration. Settings for the `lint` command.",
        "required": false,
        "properties": [{
          "name": "eslint",
          "type": "object",
          "description": "Configuration for ESLint integration",
          "required": false,
          "properties": [{
            "name": "enabled",
            "type": "boolean",
            "required": false
          }, {
            "name": "directories",
            "type": "string[]",
            "required": false
          }, {
            "name": "configPath",
            "type": "string",
            "required": false
          }]
        }, {
          "name": "failOnError",
          "type": "boolean",
          "description": "Fail the command (exit code 1) when errors are found",
          "required": false,
          "defaultValue": "[object Object]"
        }]
      }, {
        "name": "outputFolder",
        "type": "string",
        "description": "Directory where MDX documentation files will be generated. Generated files are organized by API item type (classes, interfaces, etc.).",
        "required": false,
        "defaultValue": "[object Object]"
      }, {
        "name": "readmeTitle",
        "type": "string",
        "description": "Title for the converted README file in navigation. Only used when `convertReadme` is true.",
        "required": false,
        "defaultValue": "[object Object]"
      }, {
        "name": "tabName",
        "type": "string",
        "description": "Name of the tab in Mintlify navigation where API docs will appear. This creates a top-level navigation tab in your Mintlify docs.",
        "required": false,
        "defaultValue": "[object Object]"
      }, {
        "name": "templates",
        "type": "object",
        "description": "Template customization options. Configure custom templates to control how API items are rendered.",
        "required": false,
        "properties": [{
          "name": "cache",
          "type": "boolean",
          "description": "Whether to enable template caching for better performance. Disable during development if templates aren't updating.",
          "required": false,
          "defaultValue": "[object Object]"
        }, {
          "name": "rendering",
          "type": "object",
          "description": "Configuration for controlling how API items are rendered.",
          "required": false,
          "properties": [{
            "name": "hideStringEnumValues",
            "type": "boolean",
            "description": "Whether to hide the value column in string enum member tables. For string enums, the value is usually the same as the member name.",
            "required": false,
            "defaultValue": "[object Object]"
          }]
        }, {
          "name": "strict",
          "type": "boolean",
          "description": "Whether to use strict mode for templates. Strict mode will throw errors for undefined variables.",
          "required": false,
          "defaultValue": "[object Object]"
        }, {
          "name": "userTemplateDir",
          "type": "string",
          "description": "Directory containing custom template overrides. Templates are written in Liquid format and override default templates. Use `mint-tsdocs customize -t ./templates` to initialize templates.",
          "required": false
        }]
      }]
    },
    "NavigationItem": {
      "name": "NavigationItem",
      "type": "interface",
      "description": "Navigation item interface for Mintlify docs.json structure",
      "properties": [{
        "name": "apiKind",
        "type": "ApiItemKind",
        "required": false
      }, {
        "name": "displayName",
        "type": "string",
        "required": false
      }, {
        "name": "group",
        "type": "string",
        "required": false
      }, {
        "name": "icon",
        "type": "string",
        "required": false
      }, {
        "name": "page",
        "type": "string",
        "required": false
      }, {
        "name": "pages",
        "type": "Array<string | NavigationItem>",
        "required": false
      }, {
        "name": "parentPage",
        "type": "string",
        "required": false
      }]
    },
    "NavigationManager": {
      "name": "NavigationManager",
      "type": "class",
      "description": "Manages Mintlify navigation structure including docs.json updates and hierarchical organization"
    },
    "NavigationManagerOptions": {
      "name": "NavigationManagerOptions",
      "type": "interface",
      "description": "Configuration options for navigation manager",
      "properties": [{
        "name": "customIcons",
        "type": "Record<ApiItemKind, { displayName: string; icon: string; }>",
        "description": "Custom icon mappings for API item types",
        "required": false
      }, {
        "name": "docsJsonPath",
        "type": "string",
        "description": "Path to the docs.json file",
        "required": false
      }, {
        "name": "enableMenu",
        "type": "boolean",
        "description": "Enable menu for the group in navigation",
        "required": false
      }, {
        "name": "groupName",
        "type": "string",
        "description": "Group name within the tab",
        "required": false
      }, {
        "name": "maxDocsJsonSize",
        "type": "number",
        "description": "Maximum size for docs.json file in bytes (default: 10MB)",
        "required": false
      }, {
        "name": "outputFolder",
        "type": "string",
        "description": "Output folder path for path calculations",
        "required": false
      }, {
        "name": "tabName",
        "type": "string",
        "description": "Tab name in Mintlify navigation (default: \"Code Reference\")",
        "required": false
      }]
    },
    "ObjectTypeAnalyzer": {
      "name": "ObjectTypeAnalyzer",
      "type": "class",
      "description": "Analyzes TypeScript type strings to extract nested object properties"
    },
    "RenderingConfig": {
      "name": "RenderingConfig",
      "type": "interface",
      "description": "Configuration for controlling how API items are rendered in templates.",
      "properties": [{
        "name": "hideStringEnumValues",
        "type": "boolean",
        "description": "Whether to hide the value column in string enum member tables. For string enums, the value is usually the same as the member name.",
        "required": false,
        "defaultValue": "[object Object]"
      }]
    },
    "ResolvedConfig": {
      "name": "ResolvedConfig",
      "type": "interface",
      "description": "Resolved configuration after applying defaults and auto-detection. This is the final configuration used internally by mint-tsdocs. All optional fields from MintlifyTsDocsConfig are resolved to concrete values.",
      "properties": [{
        "name": "apiExtractor",
        "type": "object",
        "description": "Resolved API Extractor configuration",
        "required": true,
        "properties": [{
          "name": "apiReport",
          "type": "object",
          "description": "API report (.api.md) generation settings. API reports show a text summary of your public API surface.",
          "required": false,
          "properties": [{
            "name": "enabled",
            "type": "boolean",
            "description": "Whether to generate API report files",
            "required": false,
            "defaultValue": "[object Object]"
          }, {
            "name": "reportFileName",
            "type": "string",
            "description": "Name of the API report file",
            "required": false,
            "defaultValue": "[object Object]"
          }, {
            "name": "reportFolder",
            "type": "string",
            "description": "Folder where the API report file will be written",
            "required": false,
            "defaultValue": "[object Object]"
          }, {
            "name": "reportTempFolder",
            "type": "string",
            "description": "Temporary folder for API report generation",
            "required": false,
            "defaultValue": "[object Object]"
          }]
        }, {
          "name": "bundledPackages",
          "type": "string[]",
          "description": "NPM packages to treat as part of this package. Useful when you have multiple packages that should be documented together.",
          "required": false
        }, {
          "name": "compiler",
          "type": "object",
          "description": "TypeScript compiler options for API analysis",
          "required": false,
          "properties": [{
            "name": "skipLibCheck",
            "type": "boolean",
            "description": "Whether to skip type checking of declaration files",
            "required": false,
            "defaultValue": "[object Object]"
          }, {
            "name": "tsconfigFilePath",
            "type": "string",
            "description": "Path to the tsconfig.json file",
            "required": false,
            "defaultValue": "[object Object]"
          }]
        }, {
          "name": "configPath",
          "type": "string",
          "description": "Path to custom api-extractor.json file. If specified, will use this instead of generating one automatically. This allows full control over API Extractor configuration.",
          "required": false
        }, {
          "name": "docModel",
          "type": "object",
          "description": "Doc model (.api.json) generation settings. The doc model is used to generate the final MDX documentation.",
          "required": false,
          "properties": [{
            "name": "enabled",
            "type": "boolean",
            "description": "Whether to generate .api.json files for documentation",
            "required": false,
            "defaultValue": "[object Object]"
          }, {
            "name": "projectFolderUrl",
            "type": "string",
            "description": "Base URL for source code links in documentation. Should point to your repository on GitHub, GitLab, etc.",
            "required": false
          }]
        }, {
          "name": "dtsRollup",
          "type": "object",
          "description": "TypeScript declaration (.d.ts) rollup settings. Rollups combine multiple .d.ts files into a single file.",
          "required": false,
          "properties": [{
            "name": "alphaTrimmedFilePath",
            "type": "string",
            "description": "Path for the alpha-trimmed .d.ts rollup file (includes `@public`, `@beta`, and `@alpha`)",
            "required": false
          }, {
            "name": "betaTrimmedFilePath",
            "type": "string",
            "description": "Path for the beta-trimmed .d.ts rollup file (includes `@public` and `@beta`)",
            "required": false
          }, {
            "name": "enabled",
            "type": "boolean",
            "description": "Whether to generate rolled-up .d.ts files",
            "required": false,
            "defaultValue": "[object Object]"
          }, {
            "name": "publicTrimmedFilePath",
            "type": "string",
            "description": "Path for the public-trimmed .d.ts rollup file (includes only `@public`)",
            "required": false
          }, {
            "name": "untrimmedFilePath",
            "type": "string",
            "description": "Path for the untrimmed .d.ts rollup file (includes all declarations)",
            "required": false
          }]
        }, {
          "name": "messages",
          "type": "object",
          "description": "Message reporting configuration. Controls how different types of diagnostic messages are handled.",
          "required": false,
          "properties": [{
            "name": "compilerMessageReporting",
            "type": "Record<string, MessageReportingItem>",
            "description": "Configuration for TypeScript compiler messages",
            "required": false
          }, {
            "name": "extractorMessageReporting",
            "type": "Record<string, MessageReportingItem>",
            "description": "Configuration for API Extractor messages",
            "required": false
          }, {
            "name": "tsdocMessageReporting",
            "type": "Record<string, MessageReportingItem>",
            "description": "Configuration for TSDoc parser messages",
            "required": false
          }]
        }]
      }, {
        "name": "convertReadme",
        "type": "boolean",
        "description": "Whether to convert README.md to index.mdx",
        "required": true
      }, {
        "name": "coverage",
        "type": "object",
        "description": "Resolved coverage configuration",
        "required": false,
        "properties": [{
          "name": "exclude",
          "type": "string[]",
          "description": "Glob patterns for files to exclude from coverage calculation. Matches against the source file path of the API item.",
          "required": false
        }, {
          "name": "groupBy",
          "type": "'file' | 'folder' | 'kind' | 'none'",
          "description": "How to group the coverage report. - `file`: Group by source file - `folder`: Group by source folder - `kind`: Group by API item kind (Class, Interface, etc.) - `none`: No grouping (flat list of items if verbose, or just summary)",
          "required": false,
          "defaultValue": "[object Object]"
        }, {
          "name": "include",
          "type": "string[]",
          "description": "Glob patterns for files to include in coverage calculation. Matches against the source file path of the API item.",
          "required": false
        }, {
          "name": "includeInternal",
          "type": "boolean",
          "description": "Whether to include internal items in coverage calculation. Default: false",
          "required": false,
          "deprecated": true
        }, {
          "name": "rules",
          "type": "CoverageRule[]",
          "description": "Granular rules for coverage calculation. Rules are evaluated in order. The first matching rule determines the level.",
          "required": false
        }, {
          "name": "threshold",
          "type": "number",
          "description": "Minimum coverage percentage required to pass. Default: 80",
          "required": false
        }]
      }, {
        "name": "docsJson",
        "type": "string",
        "description": "Resolved path to Mintlify's docs.json file (if found)",
        "required": false
      }, {
        "name": "entryPoint",
        "type": "string",
        "description": "Resolved path to the main TypeScript declaration file (.d.ts)",
        "required": true
      }, {
        "name": "groupName",
        "type": "string",
        "description": "Resolved group name within the tab",
        "required": true
      }, {
        "name": "lint",
        "type": "object",
        "description": "Resolved linting configuration",
        "required": true,
        "properties": [{
          "name": "failOnError",
          "type": "boolean",
          "required": true
        }]
      }, {
        "name": "outputFolder",
        "type": "string",
        "description": "Resolved directory where MDX documentation files will be generated",
        "required": true
      }, {
        "name": "readmeTitle",
        "type": "string",
        "description": "Title for the converted README file",
        "required": true
      }, {
        "name": "tabName",
        "type": "string",
        "description": "Resolved tab name in Mintlify navigation",
        "required": true
      }, {
        "name": "templates",
        "type": "object",
        "description": "Resolved template configuration with all defaults applied",
        "required": true,
        "properties": [{
          "name": "cache",
          "type": "boolean",
          "description": "Whether template caching is enabled",
          "required": true
        }, {
          "name": "rendering",
          "type": "object",
          "description": "Resolved rendering configuration",
          "required": true,
          "properties": [{
            "name": "hideStringEnumValues",
            "type": "boolean",
            "description": "Whether to hide the value column in string enum member tables",
            "required": true
          }]
        }, {
          "name": "strict",
          "type": "boolean",
          "description": "Whether strict mode is enabled for templates",
          "required": true
        }, {
          "name": "userTemplateDir",
          "type": "string",
          "description": "Directory containing custom template overrides",
          "required": false
        }]
      }]
    },
    "ResolvedRenderingConfig": {
      "name": "ResolvedRenderingConfig",
      "type": "interface",
      "description": "Resolved rendering configuration with all defaults applied.",
      "properties": [{
        "name": "hideStringEnumValues",
        "type": "boolean",
        "description": "Whether to hide the value column in string enum member tables",
        "required": true
      }]
    },
    "ResolvedTemplateConfig": {
      "name": "ResolvedTemplateConfig",
      "type": "interface",
      "description": "Resolved template configuration with all defaults applied. This is the final template configuration used internally after resolving defaults.",
      "properties": [{
        "name": "cache",
        "type": "boolean",
        "description": "Whether template caching is enabled",
        "required": true
      }, {
        "name": "rendering",
        "type": "object",
        "description": "Resolved rendering configuration",
        "required": true,
        "properties": [{
          "name": "hideStringEnumValues",
          "type": "boolean",
          "description": "Whether to hide the value column in string enum member tables",
          "required": true
        }]
      }, {
        "name": "strict",
        "type": "boolean",
        "description": "Whether strict mode is enabled for templates",
        "required": true
      }, {
        "name": "userTemplateDir",
        "type": "string",
        "description": "Directory containing custom template overrides",
        "required": false
      }]
    },
    "SecurityError": {
      "name": "SecurityError",
      "type": "class",
      "description": "Represents an error related to security, such as path traversal or command injection. These are always considered user errors."
    },
    "SecurityUtils": {
      "name": "SecurityUtils",
      "type": "class",
      "description": "Security utilities for input validation, sanitization, and secure file operations."
    },
    "TemplateConfig": {
      "name": "TemplateConfig",
      "type": "interface",
      "description": "Configuration for customizing documentation templates. Templates control how API items are rendered in MDX format.",
      "properties": [{
        "name": "cache",
        "type": "boolean",
        "description": "Whether to enable template caching for better performance. Disable during development if templates aren't updating.",
        "required": false,
        "defaultValue": "[object Object]"
      }, {
        "name": "rendering",
        "type": "object",
        "description": "Configuration for controlling how API items are rendered.",
        "required": false,
        "properties": [{
          "name": "hideStringEnumValues",
          "type": "boolean",
          "description": "Whether to hide the value column in string enum member tables. For string enums, the value is usually the same as the member name.",
          "required": false,
          "defaultValue": "[object Object]"
        }]
      }, {
        "name": "strict",
        "type": "boolean",
        "description": "Whether to use strict mode for templates. Strict mode will throw errors for undefined variables.",
        "required": false,
        "defaultValue": "[object Object]"
      }, {
        "name": "userTemplateDir",
        "type": "string",
        "description": "Directory containing custom template overrides. Templates are written in Liquid format and override default templates. Use `mint-tsdocs customize -t ./templates` to initialize templates.",
        "required": false
      }]
    },
    "TemplateDataConverter": {
      "name": "TemplateDataConverter",
      "type": "class",
      "description": "Converts API model data to template-friendly format"
    },
    "TemplateEngine": {
      "name": "TemplateEngine",
      "type": "class",
      "description": "Template engine that processes EJS templates with API data"
    },
    "TemplateManager": {
      "name": "TemplateManager",
      "type": "class",
      "description": "Manages template resolution and rendering with user override support"
    },
    "TypeAnalysisCache": {
      "name": "TypeAnalysisCache",
      "type": "class",
      "description": "Simple LRU cache for type analysis results"
    },
    "TypeAnalysisCacheOptions": {
      "name": "TypeAnalysisCacheOptions",
      "type": "interface",
      "description": "Configuration options for type analysis cache",
      "properties": [{
        "name": "enabled",
        "type": "boolean",
        "description": "Whether to enable caching",
        "required": false
      }, {
        "name": "maxSize",
        "type": "number",
        "description": "Maximum number of cached type analyses",
        "required": false
      }]
    },
    "TypeCoverageStats": {
      "name": "TypeCoverageStats",
      "type": "interface",
      "description": "Coverage statistics for a single API item type",
      "properties": [{
        "name": "coveragePercent",
        "type": "number",
        "required": true
      }, {
        "name": "documented",
        "type": "number",
        "required": true
      }, {
        "name": "total",
        "type": "number",
        "required": true
      }, {
        "name": "undocumented",
        "type": "number",
        "required": true
      }]
    },
    "TypeInfoGenerator": {
      "name": "TypeInfoGenerator",
      "type": "class",
      "description": "Generates TypeInfo.jsx file with type information for documentation"
    },
    "Utilities": {
      "name": "Utilities",
      "type": "class"
    },
    "ValidationError": {
      "name": "ValidationError",
      "type": "class",
      "description": "Represents an error related to input validation. These are always considered user errors."
    }
  }
};

export const Preview = ({children, title = "Preview", className}) => {
  const outerClasses = ["code-block mt-5 mb-8 not-prose rounded-2xl relative group", "text-gray-950 bg-gray-50 dark:bg-white/5 dark:text-gray-50", "border border-gray-950/10 dark:border-white/10", "p-0.5", className].filter(Boolean).join(" ");
  return <div className={outerClasses} data-component="tsdocs-preview">
      {}
      <div className="flex text-gray-400 text-xs rounded-t-[14px] leading-6 font-medium pl-4 pr-2.5 py-1">
        <div className="flex-none flex items-center gap-1.5 text-gray-700 dark:text-gray-300">
          {title}
        </div>
      </div>

      {}
      <div className="prose prose-sm dark:prose-invert w-0 min-w-full max-w-full py-3.5 px-4 rounded-b-2xl bg-white dark:bg-codeblock overflow-x-auto scrollbar-thin scrollbar-thumb-rounded scrollbar-thumb-black/15 hover:scrollbar-thumb-black/20 dark:scrollbar-thumb-white/20 dark:hover:scrollbar-thumb-white/25">
        {children}
      </div>
    </div>;
};

export const TypeTreeGroup = ({title, children}) => {
  return <div>
      {title && <h3>{title}</h3>}
      {children}
    </div>;
};

export const TypeTree = ({name, type, description, required = false, deprecated = false, properties = [], defaultValue, level = 0, maxDepth = 10, open = false}) => {
  if (level >= maxDepth) {
    console.warn(`TypeTree: Maximum depth (${maxDepth}) exceeded for ${name}. Preventing infinite recursion.`);
    return <ResponseField name={name} type={type} required={required} deprecated={deprecated} default={defaultValue}>
        {description}
        <div style={{
      fontStyle: 'italic',
      opacity: 0.7
    }}>
          (Maximum nesting depth reached)
        </div>
      </ResponseField>;
  }
  const hasNested = properties && properties.length > 0;
  return <ResponseField name={name} type={type} required={required} deprecated={deprecated} default={defaultValue}>
      {description}
      {hasNested && <Expandable title="props" key={`${name}-${level}`} defaultOpen={open}>
          {properties.map((prop, idx) => {
    const key = prop.name ? `${prop.name}-${idx}` : `prop-${idx}`;
    return <TypeTree open key={key} name={prop.name} type={prop.type} description={prop.description} required={prop.required} deprecated={prop.deprecated} properties={prop.properties} defaultValue={prop.defaultValue} level={level + 1} maxDepth={maxDepth} />;
  })}
        </Expandable>}
    </ResponseField>;
};

The `TypeTree` component provides an elegant way to document complex type structures with nested properties. It automatically handles recursive rendering and provides an intuitive expandable interface for exploring deeply nested types.

## Basic Usage

Import the component and pass it the type information.

```jsx TypeTree usage theme={null}
import { TypeTree, TypeTreeGroup } from "/snippets/tsdocs/TypeTree.jsx"

const databaseField: TypeTreeProperty = {
  name: "database",
  type: "object",
  description: "Database configuration",
  required: true,
  properties: [
    { name: "host", type: "string", description: "Database host address", required: true },
    { name: "port", type: "number", description: "Database port number", defaultValue: "5432" },
    {
      name: "credentials",
      type: "object",
      description: "Database authentication credentials",
      properties: [
        { name: "username", type: "string", required: true },
        { name: "password", type: "string", required: true }
      ]
    }
  ]
};

<TypeTree open {...databaseField} />
```

The `TypeTree` component will recurse through the properties using the
[`ResponseField`](https://www.mintlify.com/docs/components/responses)
and [`Expandable`](https://www.mintlify.com/docs/components/expandables)
Mintlify components to display the type information.

export const databaseField = {
  name: "database",
  type: "object",
  description: "Database configuration",
  required: true,
  properties: [{
    name: "host",
    type: "string",
    description: "Database host address",
    required: true
  }, {
    name: "port",
    type: "number",
    description: "Database port number",
    defaultValue: "5432"
  }, {
    name: "credentials",
    type: "object",
    description: "Database authentication credentials",
    properties: [{
      name: "username",
      type: "string",
      required: true
    }, {
      name: "password",
      type: "string",
      required: true
    }]
  }]
};

<Preview title="TypeTree Preview">
  <TypeTree open {...databaseField} />
</Preview>

## Using the Auto-generated TypeInfo

When you run `mint-tsdocs generate`, it automatically creates a `TypeInfo.jsx` file containing structured type information for all documented API items. This makes it incredibly easy to document your types with full IDE autocomplete support.

<Info>
  Learn more about TypeInfo in the [comprehensive TypeInfo guide](/components/type-info), including how to explore available types, access nested properties, and best practices.
</Info>

### Quick Start

Simply import TypeInfo and spread it into a TypeTree component:

```mdx Document any type from your API theme={null}
import { TypeInfo } from "/snippets/tsdocs/TypeInfo.jsx"

<TypeTree open {...TypeInfo.PackageName.TypeName} />
```

The TypeInfo object is organized as `TypeInfo.PackageName.TypeName`, where package names are converted to PascalCase. For example, `mint-tsdocs` becomes `MintTsdocs`.

### Live Example

Here's the complete `ResolvedConfig` type from mint-tsdocs, automatically generated with full nested documentation:

<Preview title="Auto-generated from TypeScript source">
  <TypeTree open {...TypeInfo.MintTsdocs.ResolvedConfig} />
</Preview>

### IDE Autocomplete

<Tip>
  Your IDE will provide autocomplete suggestions when you type `TypeInfo.` - making it easy to discover and reference all available types from your codebase.
</Tip>

### Import Path Workaround

<Warning>
  Due to [a bug in the MDX extension](https://github.com/mdx-js/mdx-analyzer/issues/522) for VSCode, you may not get TypeScript autocomplete with the absolute path. As a temporary workaround while editing:

  1. Change import to relative path: `import { TypeInfo } from "../snippets/tsdocs/TypeInfo.jsx"`
  2. Get autocomplete and make your changes
  3. Change back to absolute path: `import { TypeInfo } from "/snippets/tsdocs/TypeInfo.jsx"`
  4. Save and commit

  The absolute path is required for the documentation site to load correctly.
</Warning>

### Exploring Available Types

To see what types are available:

1. **Check the generated file**: Open `docs/snippets/tsdocs/TypeInfo.jsx` to browse all types
2. **Use your IDE**: Start typing `TypeInfo.` and let autocomplete show available packages and types
3. **Check the TypeScript declarations**: Open `docs/snippets/tsdocs/TypeInfo.d.ts` for the full type structure

For a complete guide on using TypeInfo, see the [TypeInfo documentation](/snippets/type-info).

## Properties

<ResponseField name="name" type="string" required>
  The name of the property or type being documented
</ResponseField>

<ResponseField name="type" type="string" required>
  The TypeScript type annotation (e.g., `string`, `number`, `object`, `Array<string>`)
</ResponseField>

<ResponseField name="description" type="string">
  Human-readable description of what this property represents
</ResponseField>

<ResponseField name="required" type="boolean" default="false">
  Whether this property is required. Displays a red "required" badge when `true`
</ResponseField>

<ResponseField name="deprecated" type="boolean" default="false">
  Whether this property is deprecated. Displays an orange "deprecated" badge when `true`
</ResponseField>

<ResponseField name="defaultValue" type="string">
  The default value for this property, if any. Displayed below the description
</ResponseField>

<ResponseField name="properties" type="array">
  Array of nested properties for complex types. Each item should be an object with the same structure as TypeTree props
</ResponseField>

<ResponseField name="level" type="number" default="0">
  Internal property for tracking nesting depth. Automatically managed by the component (don't set manually)
</ResponseField>

## Nested Objects

TypeTree automatically renders nested properties with expandable sections. This example demonstrates 3 levels of nesting, showcasing the auto-expansion behavior:

<Preview
  code={`<TypeTree open
name="apiConfig"
type="object"
description="API configuration settings"
required={true}
properties={[
{
  name: "endpoint",
  type: "string",
  description: "API endpoint URL",
  required: true,
  defaultValue: "https://api.example.com"
},
{
  name: "authentication",
  type: "object",
  description: "Authentication configuration",
  required: true,
  properties: [
    {
      name: "method",
      type: "'oauth' | 'apiKey' | 'jwt'",
      description: "Authentication method to use",
      required: true,
      defaultValue: "oauth"
    },
    {
      name: "credentials",
      type: "object",
      description: "Authentication credentials",
      required: true,
      properties: [
        {
          name: "clientId",
          type: "string",
          description: "OAuth client ID",
          required: true
        },
        {
          name: "clientSecret",
          type: "string",
          description: "OAuth client secret",
          required: true
        },
        {
          name: "scopes",
          type: "Array<string>",
          description: "Required OAuth scopes",
          defaultValue: "['read', 'write']"
        }
      ]
    },
    {
      name: "refreshToken",
      type: "boolean",
      description: "Enable automatic token refresh",
      defaultValue: "true"
    }
  ]
},
{
  name: "retry",
  type: "object",
  description: "Retry configuration for failed requests",
  properties: [
    { name: "maxAttempts", type: "number", defaultValue: "3" },
    { name: "backoffMs", type: "number", defaultValue: "1000" },
    {
      name: "retryableErrors",
      type: "object",
      description: "Error codes that trigger retry",
      properties: [
        { name: "network", type: "boolean", defaultValue: "true" },
        { name: "timeout", type: "boolean", defaultValue: "true" },
        { name: "serverError", type: "boolean", defaultValue: "false" }
      ]
    }
  ]
}
]}
/>`}
>
  <TypeTree
    open
    name="apiConfig"
    type="object"
    description="API configuration settings"
    required={true}
    properties={[
  {
    name: "endpoint",
    type: "string",
    description: "API endpoint URL",
    required: true,
    defaultValue: "https://api.example.com"
  },
  {
    name: "authentication",
    type: "object",
    description: "Authentication configuration",
    required: true,
    properties: [
      {
        name: "method",
        type: "'oauth' | 'apiKey' | 'jwt'",
        description: "Authentication method to use",
        required: true,
        defaultValue: "oauth"
      },
      {
        name: "credentials",
        type: "object",
        description: "Authentication credentials",
        required: true,
        properties: [
          {
            name: "clientId",
            type: "string",
            description: "OAuth client ID",
            required: true
          },
          {
            name: "clientSecret",
            type: "string",
            description: "OAuth client secret",
            required: true
          },
          {
            name: "scopes",
            type: "Array<string>",
            description: "Required OAuth scopes",
            defaultValue: "['read', 'write']"
          }
        ]
      },
      {
        name: "refreshToken",
        type: "boolean",
        description: "Enable automatic token refresh",
        defaultValue: "true"
      }
    ]
  },
  {
    name: "retry",
    type: "object",
    description: "Retry configuration for failed requests",
    properties: [
      { name: "maxAttempts", type: "number", defaultValue: "3" },
      { name: "backoffMs", type: "number", defaultValue: "1000" },
      {
        name: "retryableErrors",
        type: "object",
        description: "Error codes that trigger retry",
        properties: [
          { name: "network", type: "boolean", defaultValue: "true" },
          { name: "timeout", type: "boolean", defaultValue: "true" },
          { name: "serverError", type: "boolean", defaultValue: "false" }
        ]
      }
    ]
  }
]}
  />
</Preview>

This example demonstrates the three-level nesting structure:

* **Level 1**: `endpoint`, `authentication`, `retry` (all expanded by default)
* **Level 2**: Under `authentication`: `method`, `credentials`, `refreshToken`; Under `retry`: `maxAttempts`, `backoffMs`, `retryableErrors` (all expanded by default)
* **Level 3**: Under `credentials`: `clientId`, `clientSecret`, `scopes`; Under `retryableErrors`: `network`, `timeout`, `serverError` (expanded by default per auto-expansion rules)

## Auto-Expansion Behavior

TypeTree automatically expands the first two levels of nesting for better discoverability:

* **Level 0** (root): Always visible
* **Level 1**: Expanded by default
* **Level 2**: Expanded by default
* **Level 3+**: Collapsed by default (user must click to expand)

This provides an optimal balance between information density and discoverability.

## Grouping Multiple Types

Use `TypeTreeGroup` to organize multiple related types:

<Preview
  code={`<TypeTreeGroup open title="Request Parameters">
<TypeTree open
name="id"
type="string"
description="Unique identifier"
required={true}
/>
<TypeTree open
name="options"
type="object"
description="Optional configuration"
properties={[
  { name: "timeout", type: "number", defaultValue: "5000" },
  { name: "retries", type: "number", defaultValue: "3" }
]}
/>
</TypeTreeGroup>`}
>
  <TypeTreeGroup open title="Request Parameters">
    <TypeTree open name="id" type="string" description="Unique identifier" required={true} />

    <TypeTree
      open
      name="options"
      type="object"
      description="Optional configuration"
      properties={[
    { name: "timeout", type: "number", defaultValue: "5000" },
    { name: "retries", type: "number", defaultValue: "3" }
  ]}
    />
  </TypeTreeGroup>
</Preview>

## Complex Type Examples

### Union Types

<Preview
  code={`<TypeTree open
name="status"
type="'pending' | 'active' | 'completed'"
description="Current status of the task"
required={true}
/>`}
>
  <TypeTree open name="status" type="'pending' | 'active' | 'completed'" description="Current status of the task" required={true} />
</Preview>

### Array Types

<Preview
  code={`<TypeTree open
name="tags"
type="Array<string>"
description="List of tags associated with the item"
/>`}
>
  <TypeTree open name="tags" type="Array<string>" description="List of tags associated with the item" />
</Preview>

### Generic Types

<Preview
  code={`<TypeTree open
name="response"
type="Promise<Result<T>>"
description="Async operation result"
/>`}
>
  <TypeTree open name="response" type="Promise<Result<T>>" description="Async operation result" />
</Preview>

### Function Types

<Preview
  code={`<TypeTree open
name="handler"
type="(event: Event) => void"
description="Event handler callback"
required={true}
/>`}
>
  <TypeTree open name="handler" type="(event: Event) => void" description="Event handler callback" required={true} />
</Preview>

## Deprecated Properties

Mark deprecated properties with the `deprecated` flag:

<Preview
  code={`<TypeTree open
name="oldField"
type="string"
description="This field is deprecated. Use 'newField' instead."
deprecated={true}
/>`}
>
  <TypeTree open name="oldField" type="string" description="This field is deprecated. Use 'newField' instead." deprecated={true} />
</Preview>

## Optional vs Required

The component automatically displays badges for required and optional properties:

<Preview
  code={`<TypeTreeGroup open title="User Fields">
<TypeTree open
name="email"
type="string"
description="User email address"
required={true}
/>
<TypeTree open
name="phone"
type="string"
description="User phone number"
/>
</TypeTreeGroup>`}
>
  <TypeTreeGroup open title="User Fields">
    <TypeTree open name="email" type="string" description="User email address" required={true} />

    <TypeTree open name="phone" type="string" description="User phone number" />
  </TypeTreeGroup>
</Preview>

## Best Practices

<AccordionGroup>
  <Accordion title="Use Clear Descriptions" icon="message">
    Write descriptions that explain **what** the property does and **why** it exists, not just restating the type.

    ```jsx theme={null}
    // ❌ Not helpful
    <TypeTree open
      name="timeout"
      type="number"
      description="A number"
    />

    // ✅ Clear and helpful
    <TypeTree open
      name="timeout"
      type="number"
      description="Maximum time in milliseconds to wait for a response before aborting"
      defaultValue="5000"
    />
    ```
  </Accordion>

  <Accordion title="Include Default Values" icon="sparkles">
    Always document default values to help users understand the expected behavior:

    ```jsx theme={null}
    <TypeTree open
      name="retries"
      type="number"
      description="Number of retry attempts for failed requests"
      defaultValue="3"
    />
    ```
  </Accordion>

  <Accordion title="Organize Complex Structures" icon="layer-group">
    For very complex types with many properties, use TypeTreeGroup to create logical sections:

    ```jsx theme={null}
    <TypeTreeGroup open title="Authentication Options">
      <TypeTree open name="apiKey" type="string" />
      <TypeTree open name="token" type="string" />
    </TypeTreeGroup>

    <TypeTreeGroup open title="Request Options">
      <TypeTree open name="timeout" type="number" />
      <TypeTree open name="retries" type="number" />
    </TypeTreeGroup>
    ```
  </Accordion>

  <Accordion title="Keep Nesting Reasonable" icon="sitemap">
    While TypeTree supports unlimited nesting, try to limit depth to 3-4 levels for readability. Consider breaking very deep structures into separate documentation pages.
  </Accordion>
</AccordionGroup>

## Styling and Theming

TypeTree automatically adapts to Mintlify's light and dark themes using Tailwind CSS:

* **Light mode**: Uses gray borders and backgrounds
* **Dark mode**: Uses darker backgrounds with lighter borders
* **Hover states**: Subtle background changes on expandable items
* **Badges**: Color-coded for required (red), deprecated (orange), optional (gray)

## Comparison with ParamField

TypeTree is designed as a cleaner alternative to deeply nested ParamField components:

<Tabs>
  <Tab title="TypeTree (Recommended)">
    ```jsx theme={null}
    <TypeTree open
      name="config"
      type="object"
      properties={[
        { name: "host", type: "string", required: true },
        { name: "port", type: "number", defaultValue: "5432" }
      ]}
    />
    ```

    **Advantages:**

    * Single component declaration
    * Easy to maintain
    * Properties defined as data
    * Built-in expansion logic
  </Tab>

  <Tab title="ParamField (Verbose)">
    ```jsx theme={null}
    <ParamField name="config" type="object">
      <Expandable title="Properties">
        <ParamField name="host" type="string" required>
        </ParamField>
        <ParamField name="port" type="number">
          Default: 5432
        </ParamField>
      </Expandable>
    </ParamField>
    ```

    **Drawbacks:**

    * Deeply nested JSX
    * Hard to maintain
    * Repetitive structure
    * Manual expansion handling
  </Tab>
</Tabs>

## Auto-Generated Documentation

When using `mint-tsdocs` to generate API documentation, TypeTree components are automatically created for complex type structures:

1. The tool analyzes TypeScript types
2. Extracts nested property information
3. Generates TypeTree components with full type information
4. Installs the component to your `docs/snippets/` folder

This means you get clean, maintainable documentation without manual work!

## Troubleshooting

<AccordionGroup>
  <Accordion title="Component not found" icon="triangle-exclamation">
    If you see `Cannot find module "/snippets/TypeTree.jsx"`:

    1. Ensure TypeTree.jsx exists in your `docs/snippets/` folder
    2. Run `mint-tsdocs` to auto-install the component
    3. Check that the import path is correct (should start with `/snippets/`)
  </Accordion>

  <Accordion title="Properties not expanding" icon="hand-pointer">
    If nested properties don't expand when clicked:

    1. Verify the `properties` array is properly formatted JSON
    2. Check browser console for JavaScript errors
    3. Ensure each nested property has at least `name` and `type` fields
  </Accordion>

  <Accordion title="Styling issues" icon="paintbrush">
    If the component doesn't look right:

    1. Ensure Tailwind CSS is properly loaded in your Mintlify site
    2. Check that you're using an up-to-date version of the component
    3. Try refreshing the page to reload styles
  </Accordion>
</AccordionGroup>

## Version History

<CardGroup cols={2}>
  <Card title="v1.0.0" icon="rocket">
    Initial release with full recursive rendering support
  </Card>

  <Card title="Future" icon="sparkles">
    * Syntax highlighting for code examples
    * Copy-to-clipboard for type definitions
    * Collapsible all/expand all controls
  </Card>
</CardGroup>

## Related Components

<CardGroup cols={3}>
  <Card title="RefLink" icon="link" href="/components/reflink">
    Type-safe API reference links
  </Card>

  <Card title="PageLink" icon="link" href="/components/pagelink">
    Type-safe documentation page links
  </Card>

  <Card title="Preview" icon="eye" href="/components/preview">
    Styled wrapper for examples
  </Card>

  <Card title="ParamField" icon="square-dashed" href="https://mintlify.com/docs/components/fields">
    Standard Mintlify component for parameters
  </Card>

  <Card title="ResponseField" icon="reply" href="https://mintlify.com/docs/components/responses">
    Document API response structures
  </Card>

  <Card title="Expandable" icon="chevron-down" href="https://mintlify.com/docs/components/accordions">
    Create expandable sections
  </Card>
</CardGroup>
