import React, { useState } from 'react'; import PropTypes from 'prop-types'; import './Tabs.scss'; import Button from '../button/Button'; import ScrollView from '../scroll/ScrollView'; function TabItem({ selected, iconSrc, onClick, children, disabled, }) { const isSelected = selected ? 'tab-item--selected' : ''; return ( ); } TabItem.defaultProps = { selected: false, iconSrc: null, onClick: null, disabled: false, }; TabItem.propTypes = { selected: PropTypes.bool, iconSrc: PropTypes.string, onClick: PropTypes.func, children: PropTypes.node.isRequired, disabled: PropTypes.bool, }; function Tabs({ items, defaultSelected, onSelect }) { const [selectedItem, setSelectedItem] = useState(items[defaultSelected]); const handleTabSelection = (item, index) => { if (selectedItem === item) return; setSelectedItem(item); onSelect(item, index); }; return (
{items.map((item, index) => ( handleTabSelection(item, index)} > {item.text} ))}
); } Tabs.defaultProps = { defaultSelected: 0, }; Tabs.propTypes = { items: PropTypes.arrayOf( PropTypes.shape({ iconSrc: PropTypes.string, text: PropTypes.string, disabled: PropTypes.bool, }), ).isRequired, defaultSelected: PropTypes.number, onSelect: PropTypes.func.isRequired, }; export default Tabs;