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:
@@ -0,0 +1,8 @@
|
||||
import { PropDescriptor } from "react-docgen/dist/Documentation.js"
|
||||
|
||||
export default function emptyPropDescriptor(propDescriptor: PropDescriptor) {
|
||||
const objKeys = Object.keys(propDescriptor)
|
||||
objKeys.forEach((key) => {
|
||||
delete propDescriptor[key as keyof PropDescriptor]
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import { PropDescriptor } from "react-docgen/dist/Documentation.js"
|
||||
|
||||
export default function isEmptyPropDescriptor(propDescriptor: PropDescriptor) {
|
||||
const objKeys = Object.keys(propDescriptor)
|
||||
return (
|
||||
objKeys.length === 0 ||
|
||||
objKeys.every((objKey) => {
|
||||
const value = propDescriptor[objKey as keyof PropDescriptor]
|
||||
switch (typeof value) {
|
||||
case "string":
|
||||
return value.length === 0
|
||||
case "object":
|
||||
return Object.keys(value).length === 0
|
||||
default:
|
||||
return false
|
||||
}
|
||||
})
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
const BLACKLISTED_PROPS = ["className", "children"]
|
||||
|
||||
export default function isPropBlacklisted(propName: string) {
|
||||
return BLACKLISTED_PROPS.includes(propName)
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
import { statSync, readFileSync } from "fs"
|
||||
import { globSync } from "glob"
|
||||
|
||||
export default function readFiles(path: string): Map<string, string> {
|
||||
const files = new Map<string, string>()
|
||||
// check if path is for a file
|
||||
const fileStats = statSync(path)
|
||||
if (fileStats.isFile()) {
|
||||
files.set(path, readFileSync(path, "utf-8"))
|
||||
} else {
|
||||
const filePaths = globSync(`${path}/**/*.{tsx,jsx}`, {
|
||||
ignore: [`${path}/**/*.spec.*`, `${path}/**/*.stories.*`],
|
||||
})
|
||||
filePaths.forEach((filePath) => {
|
||||
files.set(filePath, readFileSync(filePath, "utf-8"))
|
||||
})
|
||||
}
|
||||
|
||||
return files
|
||||
}
|
||||
Reference in New Issue
Block a user