ButtonGroup
ButtonGroup.tsx
import React, { useState } from 'react';
import styles from './ButtonGroup.module.css';
interface ButtonGroupProps {
buttons: { label: string; value: string }[];
activeButton: string;
onButtonClick: (value: string) => void;
}
const ButtonGroup = ({ buttons, activeButton, onButtonClick }: ButtonGroupProps) => {
const [active, setActive] = useState<string>(activeButton);
const handleClick = (value: string) => {
setActive(value);
onButtonClick(value);
};
return (
<div className={styles.buttonGroup}>
{buttons.map((button) => (
<button
key={button.value}
className={button.value === active ? styles.activeButton : styles.button}
onClick={() => handleClick(button.value)}
>
{button.label}
</button>
))}
</div>
);
};
export default ButtonGroup;
ButtonGroup.module.css
.buttonGroup {
display: flex;
justify-content: space-between;
align-items: center;
padding: 8px;
background-color: #f0f0f0;
border-radius: 4px;
}
.button {
padding: 8px 16px;
border-radius: 4px;
border: none;
background-color: #fff;
color: #0077cc;
font-size: 16px;
cursor: pointer;
}
.activeButton {
padding: 8px 16px;
border-radius: 4px;
border: none;
background-color: #0077cc;
color: #fff;
font-size: 16px;
cursor: pointer;
}