Skip to content

ToggleLabel

Компонент ToggleLabel представляет собой переключатель с анимацией, который позволяет пользователю выбирать между двумя состояниями. Ниже приведена документация для этого компонента:
import React, { useState } from 'react';
import { motion, AnimatePresence } from 'framer-motion';

/**
* Компонент ToggleLabel представляет собой переключатель с анимацией.
* @param {Object} props - Свойства компонента.
* @param {string} props.labelText - Текст метки переключателя.
* @returns {JSX.Element} - JSX-элемент компонента ToggleLabel.
*/
const ToggleLabel = ({ labelText }) => {
const [selected, setSelected] = useState(false);

/**
* Обработчик события клика на переключатель.
* Изменяет состояние выбранного значения.
*/
const toggleSelected = () => {
setSelected(!selected);
};

/**
* Варианты анимации для переключателя.
*/
const animationVariants = {
on: { opacity: 1 },
off: { opacity: 0.5 },
};

return (
<AnimatePresence>
<motion.div
initial="off"
animate={selected ? 'on' : 'off'}
variants={animationVariants}
transition={{ type: 'spring', mass: 1, stiffness: 100, damping: 15 }}
onClick={toggleSelected}
className={`inline-flex items-center gap-2 px-2 py-1 rounded-md cursor-pointer ${
selected
? 'bg-primary-300 text-white'
: 'bg-blue-50 text-default-900'
}`}
>
<span className="text-xs font-medium leading-4">{labelText}</span>
</motion.div>
</AnimatePresence>
);
};

export default ToggleLabel;
Вы можете использовать этот компонент, передавая ему свойство labelText с текстом метки переключателя. Компонент будет отображать переключатель с анимацией, которая меняет прозрачность в зависимости от выбранного состояния. При клике на переключатель состояние будет изменяться.
Пример использования компонента:
jsx
import React from 'react';
import ToggleLabel from './ToggleLabel';

const App = () => {
return (
<div>
<ToggleLabel labelText="Переключатель 1" />
<ToggleLabel labelText="Переключатель 2" />
</div>
);
};

export default App;

Load content from whimsical.com?
Loading external content may reveal information to 3rd parties. Learn more
Allow
Want to print your doc?
This is not the way.
Try clicking the ··· in the right corner or using a keyboard shortcut (
CtrlP
) instead.