Files
overleaf-cep/services/web/frontend/js/features/settings/components/radio-button-setting.tsx
Davinder Singh d03ae68294 Merge pull request #31606 from overleaf/ds-editor-settings-tear-down
Tearing down of old Editor (Settings)

GitOrigin-RevId: d9e23e61a8e34eb22e9c9e3453a157fb275f68f0
2026-03-06 09:06:43 +00:00

52 lines
1.3 KiB
TypeScript

import React from 'react'
export type RadioOption<T extends string = string> = {
value: T
label: string
description?: string
}
type RadioButtonSettingProps<T extends string = string> = {
id: string
options: Array<RadioOption<T>>
value: T | undefined
onChange: (value: T) => void
}
export default function RadioButtonSetting<T extends string = string>({
id,
options,
value,
onChange,
}: RadioButtonSettingProps<T>) {
const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
onChange(event.target.value as T)
}
return (
<div className="ide-radio-setting-options">
{options.map(option => (
<label key={`${id}-${option.value}`} className="ide-radio-option">
<input
type="radio"
id={`${id}-${option.value}`}
name={id}
value={option.value}
checked={value === option.value}
onChange={handleChange}
className="ide-radio-input"
/>
<div className="ide-radio-text">
<span className="ide-setting-title">{option.label}</span>
{option.description && (
<span className="ide-setting-description">
{option.description}
</span>
)}
</div>
</label>
))}
</div>
)
}