import React from 'react'; import { AlertTriangle, Trash2, ChevronDown, ChevronRight } from 'lucide-react'; import { Parameter } from '../../recipe'; interface ParameterInputProps { parameter: Parameter; onChange: (name: string, updatedParameter: Partial) => void; onDelete?: (parameterKey: string) => void; isUnused?: boolean; isExpanded?: boolean; onToggleExpanded?: (parameterKey: string) => void; } const ParameterInput: React.FC = ({ parameter, onChange, onDelete, isUnused = false, isExpanded = true, onToggleExpanded, }) => { const { key, description, requirement } = parameter; const defaultValue = parameter.default || ''; const handleToggleExpanded = (e: React.MouseEvent) => { // Only toggle if we're not clicking on the delete button if (onToggleExpanded && !(e.target as HTMLElement).closest('button')) { onToggleExpanded(key); } }; return (
{/* Collapsed header - always visible */}
{onToggleExpanded && ( )}
{parameter.key} {isUnused && (
Unused
)}
{onDelete && ( )}
{/* Expandable content - only shown when expanded */} {isExpanded && (
onChange(key, { description: e.target.value })} className="w-full p-3 border rounded-lg bg-background-default text-textStandard focus:outline-none focus:ring-2 focus:ring-borderProminent" placeholder={`E.g., "Enter the name for the new component"`} />

This is the message the end-user will see.

{/* Controls for requirement, input type, and default value */}
{/* The default value input is only shown for optional parameters */} {requirement === 'optional' && (
onChange(key, { default: e.target.value })} className="w-full p-3 border rounded-lg bg-background-default text-textStandard" placeholder="Enter default value" />
)}
{/* Options field for select input type */} {parameter.input_type === 'select' && (