/
vshmidt
/
label-studio
Обзор
Документация
Войти
/
vshmidt
/
label-studio
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
web/libs/ui/src/lib/MultiStateToggle/MultiStateToggle.tsx
38 строк
1 KB
Raul Martin
feat: Migrate SCSS to plain CSS with PostCSS, replace Stylelint with Biome (#9584)
12 мар 2026, 20:57
Не верифицирован
12 мар 2026, 20:57
3f31128
Код
Авторство
О чём код?
import { clsx } from "clsx"; import styles from "./MultiStateToggle.module.css"; import { useMemo } from "react"; export interface MultiStateToggleOption { label?: string | JSX.Element; value: string; } export interface MultiStateToggleProps { selectedOption: string; options?: MultiStateToggleOption[]; onChange?: (option: string) => void; } export const MultiStateToggle = ({ options = [], selectedOption, onChange }: MultiStateToggleProps) => { const selectedIndex = useMemo(() => { return options.findIndex((option: MultiStateToggleOption) => option.value === selectedOption); }, [options, selectedOption]); return ( <div className={clsx(styles.multiStateToggle)}> {options?.map((option, index) => ( <button key={option.value} className={clsx(styles.multiStateToggle__option, { [styles.multiStateToggle__option_selected]: selectedIndex === index, })} onClick={() => onChange?.(option.value)} type="button" > {option?.label ?? option.value} </button> ))} </div> ); }; export default MultiStateToggle;