34 lines
700 B
TypeScript
34 lines
700 B
TypeScript
|
|
interface SelectOption {
|
||
|
|
value: string
|
||
|
|
label: string
|
||
|
|
}
|
||
|
|
|
||
|
|
interface SelectProps {
|
||
|
|
value: string
|
||
|
|
onChange: (value: string) => void
|
||
|
|
options: SelectOption[]
|
||
|
|
placeholder?: string
|
||
|
|
className?: string
|
||
|
|
}
|
||
|
|
|
||
|
|
export function Select({ value, onChange, options, placeholder, className = '' }: SelectProps) {
|
||
|
|
return (
|
||
|
|
<select
|
||
|
|
value={value}
|
||
|
|
onChange={e => onChange(e.target.value)}
|
||
|
|
className={`input ${className}`}
|
||
|
|
>
|
||
|
|
{placeholder && (
|
||
|
|
<option value="" disabled>
|
||
|
|
{placeholder}
|
||
|
|
</option>
|
||
|
|
)}
|
||
|
|
{options.map(opt => (
|
||
|
|
<option key={opt.value} value={opt.value}>
|
||
|
|
{opt.label}
|
||
|
|
</option>
|
||
|
|
))}
|
||
|
|
</select>
|
||
|
|
)
|
||
|
|
}
|