1
- import { TextPrompt , SelectPrompt , ConfirmPrompt } from "@clack/core" ;
1
+ import { ConfirmPrompt , SelectPrompt , TextPrompt } from "@clack/core" ;
2
2
import ansiEscapes from "ansi-escapes" ;
3
3
import logUpdate from "log-update" ;
4
- import { shapes , cancel , space , status , newline } from "./cli " ;
5
- import { blue , dim , gray , brandColor , bold } from "./colors " ;
4
+ import { blue , bold , brandColor , dim , gray } from "./colors " ;
5
+ import { cancel , newline , shapes , space , status } from "./index " ;
6
6
import type { ChalkInstance } from "chalk" ;
7
- import type { C3Arg } from "types" ;
8
7
8
+ export type Arg = string | boolean | string [ ] | undefined ;
9
9
const grayBar = gray ( shapes . bar ) ;
10
10
const blCorner = gray ( shapes . corners . bl ) ;
11
11
const leftT = gray ( shapes . leftT ) ;
@@ -25,9 +25,9 @@ export type BasePromptConfig = {
25
25
// The status label to be shown after submitting
26
26
label : string ;
27
27
// Pretty-prints the value in the interactive prompt
28
- format ?: ( value : C3Arg ) => string ;
28
+ format ?: ( value : Arg ) => string ;
29
29
// Returns a user displayed error if the value is invalid
30
- validate ?: ( value : C3Arg ) => string | void ;
30
+ validate ?: ( value : Arg ) => string | void ;
31
31
} ;
32
32
33
33
export type TextPromptConfig = BasePromptConfig & {
@@ -104,7 +104,7 @@ type Renderer = (props: {
104
104
state ?: string ;
105
105
error ?: string ;
106
106
cursor ?: number ;
107
- value : C3Arg ;
107
+ value : Arg ;
108
108
} ) => string [ ] ;
109
109
110
110
const renderSubmit = ( config : PromptConfig , value : string ) => {
@@ -144,28 +144,27 @@ const getTextRenderers = (config: TextPromptConfig) => {
144
144
format : _format ,
145
145
} = config ;
146
146
const helpText = _helpText ?? "" ;
147
- const format = _format ?? ( ( val : C3Arg ) => String ( val ) ) ;
147
+ const format = _format ?? ( ( val : Arg ) => String ( val ) ) ;
148
148
149
149
return {
150
150
initial : ( ) => [
151
151
`${ blCorner } ${ bold ( question ) } ${ dim ( helpText ) } ` ,
152
152
`${ space ( 2 ) } ${ gray ( format ( defaultValue ) ) } ` ,
153
153
`` , // extra line for readability
154
154
] ,
155
- active : ( { value } : { value : C3Arg } ) => [
155
+ active : ( { value } : { value : Arg } ) => [
156
156
`${ blCorner } ${ bold ( question ) } ${ dim ( helpText ) } ` ,
157
157
`${ space ( 2 ) } ${ format ( value || dim ( defaultValue ) ) } ` ,
158
158
`` , // extra line for readability
159
159
] ,
160
- error : ( { value, error } : { value : C3Arg ; error : string } ) => [
160
+ error : ( { value, error } : { value : Arg ; error : string } ) => [
161
161
`${ leftT } ${ status . error } ${ dim ( error ) } ` ,
162
162
`${ grayBar } ` ,
163
163
`${ blCorner } ${ question } ${ dim ( helpText ) } ` ,
164
164
`${ space ( 2 ) } ${ format ( value ) } ` ,
165
165
`` , // extra line for readability
166
166
] ,
167
- submit : ( { value } : { value : C3Arg } ) =>
168
- renderSubmit ( config , format ( value ) ) ,
167
+ submit : ( { value } : { value : Arg } ) => renderSubmit ( config , format ( value ) ) ,
169
168
cancel : handleCancel ,
170
169
} ;
171
170
} ;
@@ -198,7 +197,7 @@ const getSelectRenderers = (config: SelectPromptConfig) => {
198
197
active : defaultRenderer ,
199
198
confirm : defaultRenderer ,
200
199
error : defaultRenderer ,
201
- submit : ( { value } : { value : C3Arg } ) =>
200
+ submit : ( { value } : { value : Arg } ) =>
202
201
renderSubmit (
203
202
config ,
204
203
options . find ( ( o ) => o . value === value ) ?. label as string
@@ -228,7 +227,7 @@ const getConfirmRenderers = (config: ConfirmPromptConfig) => {
228
227
active : defaultRenderer ,
229
228
confirm : defaultRenderer ,
230
229
error : defaultRenderer ,
231
- submit : ( { value } : { value : C3Arg } ) =>
230
+ submit : ( { value } : { value : Arg } ) =>
232
231
renderSubmit ( config , value ? "yes" : "no" ) ,
233
232
cancel : handleCancel ,
234
233
} ;
0 commit comments