diff --git a/ts-packages/cli-fig-docs/src/components/FigDocs/index.tsx b/ts-packages/cli-fig-docs/src/components/FigDocs/index.tsx index ce43be1547..679cf1dac2 100644 --- a/ts-packages/cli-fig-docs/src/components/FigDocs/index.tsx +++ b/ts-packages/cli-fig-docs/src/components/FigDocs/index.tsx @@ -1,5 +1,91 @@ +import { Card, CardContent, Typography, CardActions, Button, Stack, Divider, Box } from '@mui/material'; import * as React from 'react'; +export const FigOption = (option: Fig.Option): JSX.Element | null => { + return ( + + +
+          {option.name}
+        
+
+ + {option.description} + + {option.args && Array.isArray(option.args) ? ( + <> + + Args: + + {option.args.map((arg, i) => ( + <> + + {arg.name} {arg.isOptional} + + {Array.isArray(option.args) && i < option.args.length - 1 && } + + ))} + + ) : ( + option.args && ( + + Args: {option.args.name} {option.args.isOptional === true && '--is optional'} + + ) + )} +
+ ); +}; + +export const FigSubcommand = (subcommand: Fig.Subcommand): JSX.Element | null => { + return ( + + +
+          {subcommand.name}
+        
+
+ {subcommand.description} + {subcommand.subcommands && ( + <> + + Subcommands: + + + + )} + {subcommand.subcommands + ? subcommand.subcommands.map((command, i) => { + return ( + + + {i < subcommand.subcommands!.length - 1 && } + + ); + }) + : null} + {subcommand.options && ( + <> + + Options: + + + + )} + {subcommand.options + ? subcommand.options.map((option, i) => { + return ( + + + {subcommand!.options && i < subcommand!.options.length - 1 && } + + ); + }) + : null} +
+ ); +}; + export const FigDocs: React.FC<{ figSpec?: Fig.Spec; }> = ({ figSpec }) => { @@ -16,7 +102,37 @@ export const FigDocs: React.FC<{ {subcommand && (
Name: {subcommand.name}
-
{JSON.stringify(subcommand, null, 2)}
+ {subcommand.subcommands && ( + + Subcommands: + + )} + {subcommand.subcommands?.map((command, i) => { + return ( + + + + {subcommand!.subcommands && i < subcommand!.subcommands.length - 1 && } + + + ); + })} + {subcommand.options && ( + + Options: + + )} + {subcommand.options && + subcommand.options.map((option, i) => { + return ( + + + + {subcommand!.options && i < subcommand!.options.length - 1 && } + + + ); + })}
)}