docs: generate documentation for UI components (#5849)
* added tool to generate spec files for React components * use typedoc for missing descriptions and types * improvements and fixes * improvements * added doc comments for half of the components * add custom resolver + more doc comments * added all tsdocs * general improvements * add specs to UI docs * added github action * remove unnecessary api route * Added readme for react-docs-generator * remove comment * Update packages/design-system/ui/src/components/currency-input/currency-input.tsx Co-authored-by: Kasper Fabricius Kristensen <45367945+kasperkristensen@users.noreply.github.com> * remove description of aria fields + add generate script --------- Co-authored-by: Kasper Fabricius Kristensen <45367945+kasperkristensen@users.noreply.github.com>
This commit is contained in:
co-authored by
Kasper Fabricius Kristensen
parent
edc49bfe1d
commit
245e5c9a69
@@ -5,6 +5,7 @@ import { visit } from "unist-util-visit"
|
||||
|
||||
import { ExampleRegistry } from "../registries/example-registry"
|
||||
import { UnistNode, UnistTree } from "../types/unist"
|
||||
import { Documentation } from "react-docgen"
|
||||
|
||||
export function rehypeComponent() {
|
||||
return async (tree: UnistTree) => {
|
||||
@@ -42,6 +43,33 @@ export function rehypeComponent() {
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
}
|
||||
} else if (node.name === "ComponentReference") {
|
||||
const mainComponent = getNodeAttributeByName(node, "mainComponent")
|
||||
?.value as string
|
||||
|
||||
if (!mainComponent) {
|
||||
return null
|
||||
}
|
||||
|
||||
const mainSpecsDir = path.join(process.cwd(), "src/specs")
|
||||
const componentSpecsDir = path.join(mainSpecsDir, mainComponent)
|
||||
const specs: Documentation[] = []
|
||||
|
||||
const specFiles = fs.readdirSync(componentSpecsDir)
|
||||
specFiles.map((specFileName) => {
|
||||
// read spec file
|
||||
const specFile = fs.readFileSync(
|
||||
path.join(componentSpecsDir, specFileName),
|
||||
"utf-8"
|
||||
)
|
||||
specs.push(JSON.parse(specFile) as Documentation)
|
||||
})
|
||||
|
||||
node.attributes?.push({
|
||||
name: "specsSrc",
|
||||
value: JSON.stringify(specs),
|
||||
type: "mdxJsxAttribute",
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user