import React, { useState } from 'react'; import { Flex, Text, Padded } from '@buffetjs/core'; import PropTypes from 'prop-types'; import { LoadingIndicator } from 'strapi-helper-plugin'; import { useIntl } from 'react-intl'; import TabsWrapper from './TabsWrapper'; import Tab from './Tab'; const Tabs = ({ children, isLoading, tabsLabel }) => { const { formatMessage } = useIntl(); const [selectedTabIndex, setSelectedTabIndex] = useState(0); const handleSelectedTab = index => { if (index !== selectedTabIndex) { setSelectedTabIndex(index); } }; return ( {isLoading ? ( ) : ( <> {tabsLabel.map((tab, index) => ( handleSelectedTab(index)} > {formatMessage({ id: tab.labelId, defaultMessage: tab.defaultMessage })} ))} {children[selectedTabIndex]} )} ); }; Tabs.defaultProps = { isLoading: false, }; Tabs.propTypes = { children: PropTypes.node.isRequired, isLoading: PropTypes.bool, tabsLabel: PropTypes.arrayOf( PropTypes.shape({ id: PropTypes.string.isRequired, defaultMessage: PropTypes.string.isRequired, labelId: PropTypes.string.isRequired, }) ).isRequired, }; export default Tabs;