{inputParam.label}
{!inputParam.optional && *}
{inputParam.description && (
)}
{inputParam.type === 'credential' && (
{
setValue(newValue, selectedProvider, 'credentialId')
// Load voices when credential is updated
if (newValue && selectedProvider !== 'none') {
setTimeout(() => loadVoicesForProvider(selectedProvider, newValue), 100)
}
}}
/>
)}
{inputParam.type === 'boolean' && (
setValue(newValue, selectedProvider, inputParam.name)}
value={
textToSpeech?.[selectedProvider]
? textToSpeech[selectedProvider][inputParam.name]
: inputParam.default ?? false
}
/>
)}
{(inputParam.type === 'string' || inputParam.type === 'password' || inputParam.type === 'number') && (
setValue(newValue, selectedProvider, inputParam.name)}
value={
textToSpeech?.[selectedProvider]
? textToSpeech[selectedProvider][inputParam.name]
: inputParam.default ?? ''
}
/>
)}
{inputParam.type === 'options' && (
setValue(newValue, selectedProvider, inputParam.name)}
value={
textToSpeech?.[selectedProvider]
? textToSpeech[selectedProvider][inputParam.name]
: inputParam.default ?? 'choose an option'
}
/>
)}
{inputParam.type === 'voice_select' && (
{loadingVoices ? (
Loading voices...
) : (
({ label: voice.name, name: voice.id }))}
onSelect={(newValue) => setValue(newValue, selectedProvider, inputParam.name)}
value={
textToSpeech?.[selectedProvider]
? textToSpeech[selectedProvider][inputParam.name]
: inputParam.default ?? 'choose a voice'
}
/>
)}
)}
))}
{/* Auto-play Toggle */}