hermes-agent/ui-tui/src/components/maskedPrompt.tsx
2026-04-12 16:31:30 -05:00

37 lines
786 B
TypeScript

import { Box, Text } from '@hermes/ink'
import { useState } from 'react'
import type { Theme } from '../theme.js'
import { TextInput } from './textInput.js'
export function MaskedPrompt({
cols = 80,
icon,
label,
onSubmit,
sub,
t
}: {
cols?: number
icon: string
label: string
onSubmit: (v: string) => void
sub?: string
t: Theme
}) {
const [value, setValue] = useState('')
return (
<Box flexDirection="column">
<Text bold color={t.color.warn}>
{icon} {label}
</Text>
{sub && <Text color={t.color.dim}> {sub}</Text>}
<Box>
<Text color={t.color.label}>{'> '}</Text>
<TextInput columns={Math.max(20, cols - 6)} mask="*" onChange={setValue} onSubmit={onSubmit} value={value} />
</Box>
</Box>
)
}