diff options
author | 2021-05-03 12:15:13 -0500 | |
---|---|---|
committer | 2021-05-03 12:15:13 -0500 | |
commit | ed631329e731d31e384dacc1ec399ba60b7c906b (patch) | |
tree | 0c998bb642c1feab773cb0e751dbb0ece1e59d64 /packages/create-astro/src/components/Help.tsx | |
parent | 467820996f71b0c78f2000294cb6f3c0a8f3aca4 (diff) | |
download | astro-ed631329e731d31e384dacc1ec399ba60b7c906b.tar.gz astro-ed631329e731d31e384dacc1ec399ba60b7c906b.tar.zst astro-ed631329e731d31e384dacc1ec399ba60b7c906b.zip |
`create-astro` UI (#164)
* refactor: improve create-astro layout, build script
* feat(create-astro): v0.1.0
* docs(create-astro): add README
* feat(create-astro): add meta files to starter templates
Diffstat (limited to 'packages/create-astro/src/components/Help.tsx')
-rw-r--r-- | packages/create-astro/src/components/Help.tsx | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/packages/create-astro/src/components/Help.tsx b/packages/create-astro/src/components/Help.tsx new file mode 100644 index 000000000..88fcf5633 --- /dev/null +++ b/packages/create-astro/src/components/Help.tsx @@ -0,0 +1,62 @@ +import React, { FC } from 'react'; +import { Box, Text } from 'ink'; +import { ARGS, ARG } from '../config'; + +const Type: FC<{ type: any, enum?: string[] }> = ({ type, enum: e }) => { + if (type === Boolean) { + return <> + <Text color="#3894FF">true</Text> + <Text dimColor>|</Text> + <Text color="#3894FF">false</Text> + </> + } + if (e?.length > 0) { + return <> + {e.map((item, i, { length: len}) => { + if (i !== len - 1) { + return <Box key={item}> + <Text color="#17C083">{item}</Text> + <Text dimColor>|</Text> + </Box> + } + + return <Text color="#17C083" key={item}>{item}</Text> + })} + </> + } + + return <Text color="#3894FF">string</Text>; +} + +const Command: FC<{ name: string, info: ARG }> = ({ name, info: { alias, description, type, enum: e } }) => { + return ( + <Box display="flex" alignItems="flex-start"> + <Box width={24} display="flex" flexGrow={0}> + <Text color="whiteBright">--{name}</Text>{alias && <Text dimColor> -{alias}</Text>} + </Box> + <Box width={24}> + <Type type={type} enum={e} /> + </Box> + <Box> + <Text>{description}</Text> + </Box> + </Box> + ); +} + +const Help: FC<{ context: any }> = ({ context: { templates }}) => { + return ( + <> + <Box width={48} display="flex" marginY={1}> + <Text backgroundColor="#882DE7" color="white">{' astro '}</Text> + <Box marginLeft={1}> + <Text color="black" backgroundColor="white"> help </Text> + </Box> + </Box> + <Box marginBottom={1} marginLeft={2} display="flex" flexDirection="column"> + {Object.entries(ARGS).map(([name, info]) => <Command key={name} name={name} info={name === 'template' ? { ...info, enum: templates.map(({ value }) => value) } : info} /> )} + </Box> + </> + ) +}; +export default Help; |