diff --git a/.changeset/odd-avocados-smile.md b/.changeset/odd-avocados-smile.md new file mode 100644 index 0000000..74fea2a --- /dev/null +++ b/.changeset/odd-avocados-smile.md @@ -0,0 +1,5 @@ +--- +'@clack/prompts': patch +--- + +Fixes cases where the note title length was miscalculated due to ansi characters diff --git a/packages/prompts/src/index.ts b/packages/prompts/src/index.ts index 3b342dd..a38539b 100644 --- a/packages/prompts/src/index.ts +++ b/packages/prompts/src/index.ts @@ -534,13 +534,14 @@ export const groupMultiselect = [], Value>( const strip = (str: string) => str.replace(ansiRegex(), ''); export const note = (message = '', title = '') => { const lines = `\n${message}\n`.split('\n'); + const titleLen = strip(title).length; const len = Math.max( lines.reduce((sum, ln) => { ln = strip(ln); return ln.length > sum ? ln.length : sum; }, 0), - strip(title).length + titleLen ) + 2; const msg = lines .map( @@ -552,7 +553,7 @@ export const note = (message = '', title = '') => { .join('\n'); process.stdout.write( `${color.gray(S_BAR)}\n${color.green(S_STEP_SUBMIT)} ${color.reset(title)} ${color.gray( - S_BAR_H.repeat(Math.max(len - title.length - 1, 1)) + S_CORNER_TOP_RIGHT + S_BAR_H.repeat(Math.max(len - titleLen - 1, 1)) + S_CORNER_TOP_RIGHT )}\n${msg}\n${color.gray(S_CONNECT_LEFT + S_BAR_H.repeat(len + 2) + S_CORNER_BOTTOM_RIGHT)}\n` ); };