---
title: Type table
description: Render a props or options table from a type definition.
---

A type table documents an API surface as a table rather than prose, so a reader scans for the field they need instead of reading paragraphs.

```mdx filename="content/config.mdx"
<auto-type-table path="src/config.ts" name="DocsConfig" />
```

The tag name is the `component_name` configured on `TypeScriptDocgen`; `auto-type-table` is the default.

## Attributes

| Attribute | Meaning |
|---|---|
| `path` | File to read the type from |
| `name` | Named type inside that file |
| `type` | An inline type literal, instead of `path` + `name` |

The tag is deferred: the build records the request and emits a pending placeholder (`<div data-proa-docs-type-table-pending>`) holding the escaped directive. Nothing replaces that placeholder today: `TypeScriptDocgen::command` is only checked for presence, never run. Enabling docgen without a command fails the build as soon as any page requests a table, so the unconfigured case is never published silently; with a command configured, or with docgen disabled (the default), the placeholder ships as is.

## Current limitation

**Type extraction is TypeScript-shaped and not yet wired.** The directive names a TypeScript file and type, and the build records the request without resolving it, so neither a TypeScript nor a Rust type produces a table today.

For Rust APIs, write the table by hand:

| Field | Type | Default | Meaning |
|---|---|---|---|
| `base_path` | `&'static str` | `"/docs"` | URL prefix the site mounts under |
| `site_name` | `&'static str` | — | Shown in the sidebar header |

A rustdoc-driven source would let a config reference page shrink to a handful of lines. It is the highest-leverage thing missing from this crate — [Fumadocs' whole MDX config surface](https://www.fumadocs.dev/docs/mdx/global) is three generated tables and 111 words of prose.

## Related

[Configuration](/docs/proa-docs/configuration) · [Markdown](/docs/proa-docs/markdown)
