Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
make unicodeOr generic
  • Loading branch information
mateussilva92 committed Feb 22, 2026
commit e3c93a86d029a15373ace423904d1d79349a9ce3
6 changes: 5 additions & 1 deletion packages/prompts/src/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export const isCI = (): boolean => process.env.CI === 'true';
export const isTTY = (output: Writable): boolean => {
return (output as Writable & { isTTY?: boolean }).isTTY === true;
};
export const unicodeOr = (c: string, fallback: string) => (unicode ? c : fallback);
export const unicodeOr = <T>(c: T, fallback: T): T => (unicode ? c : fallback);
export const S_STEP_ACTIVE = unicodeOr('◆', '*');
export const S_STEP_CANCEL = unicodeOr('■', 'x');
export const S_STEP_ERROR = unicodeOr('▲', 'x');
Expand Down Expand Up @@ -39,6 +39,10 @@ export const S_SUCCESS = unicodeOr('◆', '*');
export const S_WARN = unicodeOr('▲', '!');
export const S_ERROR = unicodeOr('■', 'x');

export const S_SPINNER = unicodeOr(['◒', '◐', '◓', '◑'], ['•', 'o', 'O', '0']);

export const N_INTERVAL = unicodeOr(80, 120);

export const symbol = (state: State) => {
switch (state) {
case 'initial':
Expand Down
7 changes: 4 additions & 3 deletions packages/prompts/src/spinner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@ import { cursor, erase } from 'sisteransi';
import {
type CommonOptions,
isCI as isCIFn,
N_INTERVAL,
S_BAR,
S_SPINNER,
S_STEP_CANCEL,
S_STEP_ERROR,
S_STEP_SUBMIT,
unicode,
} from './common.js';

export interface SpinnerOptions extends CommonOptions {
Expand Down Expand Up @@ -40,8 +41,8 @@ export const spinner = ({
output = process.stdout,
cancelMessage,
errorMessage,
frames = unicode ? ['◒', '◐', '◓', '◑'] : ['•', 'o', 'O', '0'],
delay = unicode ? 80 : 120,
frames = S_SPINNER,
delay = N_INTERVAL,
signal,
...opts
}: SpinnerOptions = {}): SpinnerResult => {
Expand Down