@capgo/cli
Version:
A CLI to upload to capgo servers
67 lines (66 loc) • 1.94 kB
TypeScript
import type { FC, ReactNode } from 'react';
import type { Platform } from '../types.js';
import type { PlatformPickerLayout } from './frame-fit.js';
export type PlatformKeyAction = {
type: 'move';
delta: number;
} | {
type: 'jump';
platform: Platform;
} | {
type: 'confirm';
} | null;
export declare function platformKeyAction(input: string, key: {
leftArrow?: boolean;
rightArrow?: boolean;
return?: boolean;
}): PlatformKeyAction;
interface PlatformCardProps {
emoji: string;
name: string;
hint: string;
selected: boolean;
}
export declare const PlatformCard: FC<PlatformCardProps>;
export interface PlatformPickerProps {
layout: PlatformPickerLayout;
onSelect: (platform: Platform) => void;
/** Rendered directly below the legend (flush, no gap). */
footer?: ReactNode;
}
export declare const PlatformPicker: FC<PlatformPickerProps>;
export interface CardChoice {
value: string;
emoji: string;
name: string;
hint: string;
}
export type CardKeyAction = {
type: 'move';
delta: number;
} | {
type: 'jump';
index: number;
} | {
type: 'confirm';
} | null;
export declare function cardKeyAction(input: string, key: {
leftArrow?: boolean;
rightArrow?: boolean;
return?: boolean;
}, count: number): CardKeyAction;
export interface CardChooserProps {
layout: PlatformPickerLayout;
question: string;
subtitle?: string;
options: CardChoice[];
/** Index of the card highlighted on first render (default 0 = leftmost). */
defaultIndex?: number;
/** Rendered directly below the legend (flush, no gap). */
footer?: ReactNode;
onSelect: (value: string) => void;
}
/** A heading + bordered cards (←/→/Enter) — or a Select on narrow terminals —
* for any small choice. Reuses PlatformCard so the boxes match the platform picker. */
export declare const CardChooser: FC<CardChooserProps>;
export {};