Better generated docs for react components (#3930)

Before:
![Screenshot 2024-06-12 at 12 57
26](https://github.com/tldraw/tldraw/assets/1489520/2a9f6098-ef2a-4f52-88f5-d6e4311c067d)

After:
![Screenshot 2024-06-12 at 12 59
16](https://github.com/tldraw/tldraw/assets/1489520/51733c2a-a2b4-4084-a89a-85bce5b47672)

React components in docs now list their props, and appear under a new
"Component" section instead of randomly under either `Function` or
`Variable`. In order to have our docs generate this, a few criteria need
to be met:
1. They need to be tagged with the `@react` tsdoc tag
2. Their props need to be a simple type alias, typically to an
interface.

Both of these rules are enforced with a new lint rule - any component
tagged as `@public` will have these rules enforced.

### Change Type

- [x] `docs` — Changes to the documentation, examples, or templates.
- [x] `improvement` — Improving existing features
This commit is contained in:
alex 2024-06-13 14:09:27 +01:00 committed by GitHub
parent 69e6dbc407
commit 6cb797a074
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
97 changed files with 998 additions and 485 deletions

View file

@ -10,7 +10,7 @@ import {
DocSection,
DocSoftBreak,
} from '@microsoft/tsdoc'
import assert from 'assert'
import { assert } from '@tldraw/utils'
import { slug as githubSlug } from 'github-slugger'
import path from 'path'
@ -98,6 +98,12 @@ export async function formatWithPrettier(
console.warn(`☢️ Could not format code: ${code}`)
}
// sometimes prettier adds a semicolon to the start of the code when formatting expressions (JSX
// in particular), so strip it if we see it
if (formattedCode.startsWith(';')) {
formattedCode = formattedCode.slice(1)
}
return formattedCode.trimEnd()
}