|
1 | | -import { Box } from 'ink' |
2 | | -import BigText from 'ink-big-text' |
3 | | -import Gradient from 'ink-gradient' |
4 | | -import React, { useState } from 'react' |
| 1 | +import { Box, Text } from 'ink' |
| 2 | +import React, { useState, type ReactNode } from 'react' |
| 3 | +import MainTitle from './import/MainTitle.js' |
5 | 4 | import Step1 from './import/Step1.js' |
6 | 5 | import Step2 from './import/Step2.js' |
7 | | -import Step3 from './import/Step3.js' |
| 6 | +import Step3, { type ItemProps } from './import/Step3.js' |
8 | 7 | import { canShowStep } from './import/utils.js' |
9 | 8 |
|
10 | 9 | const App = () => { |
11 | 10 | const [projectName, setProjectName] = useState<string>('') |
12 | 11 | const [currentStep, setCurrentStep] = useState(1) |
| 12 | + const [setupOption, setSetupOption] = useState<ItemProps | undefined>() |
13 | 13 |
|
14 | 14 | const finishStep = () => setCurrentStep(currentStep + 1) |
| 15 | + const onSelect = (item: ItemProps) => setSetupOption(item) |
15 | 16 |
|
16 | | - const onSelect = (value: string) => { |
17 | | - console.log(value) |
18 | | - } |
| 17 | + const steps: Array<ReactNode> = [ |
| 18 | + <Step1 |
| 19 | + onSubmit={setProjectName} |
| 20 | + onCompletion={finishStep} |
| 21 | + projectName={projectName} |
| 22 | + key={1} |
| 23 | + />, |
| 24 | + <Step2 |
| 25 | + onCompletion={finishStep} |
| 26 | + projectName={projectName} |
| 27 | + key={2} |
| 28 | + />, |
| 29 | + <Step3 |
| 30 | + onCompletion={finishStep} |
| 31 | + onSelect={onSelect} |
| 32 | + key={3} |
| 33 | + />, |
| 34 | + ] |
19 | 35 |
|
20 | 36 | return ( |
21 | 37 | <Box |
22 | 38 | flexDirection={'column'} |
23 | 39 | rowGap={1} |
24 | 40 | > |
25 | | - <Gradient colors={['#ff438c', '#bb1d79', '#8b46a4', '#6a2581']}> |
26 | | - <BigText |
27 | | - lineHeight={1} |
28 | | - font={'chrome'} |
29 | | - text="dAppBooster" |
30 | | - /> |
31 | | - </Gradient> |
32 | | - <Step1 |
33 | | - onSubmit={setProjectName} |
34 | | - onCompletion={finishStep} |
35 | | - projectName={projectName} |
36 | | - /> |
37 | | - {canShowStep(currentStep, 2) && ( |
38 | | - <Step2 |
39 | | - projectName={projectName} |
40 | | - onCompletion={finishStep} |
41 | | - /> |
42 | | - )} |
43 | | - {canShowStep(currentStep, 3) && ( |
44 | | - <Step3 |
45 | | - onCompletion={finishStep} |
46 | | - onSelect={onSelect} |
47 | | - projectName={projectName} |
48 | | - /> |
49 | | - )} |
| 41 | + <MainTitle /> |
| 42 | + {steps.map((item, index) => canShowStep(currentStep, index + 1) && item)} |
| 43 | + {canShowStep(currentStep, 4) && <Text>{setupOption?.value}</Text>} |
50 | 44 | </Box> |
51 | 45 | ) |
52 | 46 | } |
|
0 commit comments