forked from React-Group/interstellar_ai
		
	
		
			
	
	
		
			36 lines
		
	
	
	
		
			1,009 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			36 lines
		
	
	
	
		
			1,009 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | import React from 'react'; | ||
|  | 
 | ||
|  | interface Option { | ||
|  |   value: string; // The actual value to be used
 | ||
|  |   label: string; // The label to display for the option
 | ||
|  | } | ||
|  | 
 | ||
|  | interface DropdownSettingProps { | ||
|  |   label: string; // The label to display
 | ||
|  |   value: string; // The current selected value
 | ||
|  |   setValue: (newValue: string) => void; // The method to update the state
 | ||
|  |   options: Option[]; // List of options for the dropdown
 | ||
|  | } | ||
|  | 
 | ||
|  | const DropdownSetting: React.FC<DropdownSettingProps> = ({ label, value, setValue, options }) => { | ||
|  |   const handleSelectChange = (e: React.ChangeEvent<HTMLSelectElement>) => { | ||
|  |     const newValue = e.target.value; | ||
|  |     setValue(newValue); | ||
|  |   }; | ||
|  | 
 | ||
|  |   return ( | ||
|  |     <div className="settings-option"> | ||
|  |       <label>{label}</label> | ||
|  |       <select value={value} onChange={handleSelectChange}> | ||
|  |         {options.map((option) => ( | ||
|  |           <option key={option.value} value={option.value}> | ||
|  |             {option.label} | ||
|  |           </option> | ||
|  |         ))} | ||
|  |       </select> | ||
|  |     </div> | ||
|  |   ); | ||
|  | }; | ||
|  | 
 | ||
|  | export default DropdownSetting; |