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 && }
+
+
+ );
+ })}
)}
>