Skip to main content

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;
}