import React from 'react'; import Arguments from './ArgumentsRenderer'; import Argument from 'react-styleguidist/lib/client/rsg-components/Argument'; import JsDoc from './JsDoc'; import Markdown from 'react-styleguidist/lib/client/rsg-components/Markdown'; import Name from 'react-styleguidist/lib/client/rsg-components/Name'; import Para from 'react-styleguidist/lib/client/rsg-components/Para'; import renderTypeColumn from 'react-styleguidist/lib/client/rsg-components/Props/renderType'; import renderExtra from 'react-styleguidist/lib/client/rsg-components/Props/renderExtra'; import renderDefault from 'react-styleguidist/lib/client/rsg-components/Props/renderDefault'; import { PropDescriptor } from 'react-styleguidist/lib/client/rsg-components/Props/util'; function renderDescription(prop: PropDescriptor) { const { description, tags = {} } = prop; const extra = renderExtra(prop); const args = [...(tags.arg || []), ...(tags.argument || []), ...(tags.param || [])]; const returnDocumentation = (tags.return && tags.return[0]) || (tags.returns && tags.returns[0]); return (
{description && } {extra && {extra}} {args.length > 0 && } {returnDocumentation && }
); } function renderName(prop: PropDescriptor) { const { name, tags = {} } = prop; return {name}; } export function getRowKey(row: { name: string }) { return row.name; } export const columns = [ { caption: 'Prop name lol', render: renderName, }, { caption: 'Type', render: renderTypeColumn, }, { caption: 'Default', render: renderDefault, }, { caption: 'Description', render: renderDescription, }, ]; interface PropsProps { props: PropDescriptor[]; } const PropsRenderer: React.FC = ({ props }) => props.map((r) => { const isComponentProp = r.name[0].toUpperCase() === r.name[0]; const customType = r.tags.overrideType; return (

{r.name}

{renderDescription(r)}
Type Required
{customType ? customType[0].description : isComponentProp ? 'Component, element' : r.type.name} No

); }); const styles = { container: { marginTop: 50, }, table: { border: '1px solid black', borderCollapse: 'collapse', width: '100%', }, td: { border: '1px solid black', borderCollapse: 'collapse', padding: 10, textAlign: 'center', width: '50%', }, th: { backgroundColor: 'rgba(0, 0, 0, 0.06)', border: '1px solid black', borderCollapse: 'collapse', padding: 10, textAlign: 'center', width: '50%', }, tr: {}, }; export default PropsRenderer;