import React, { ReactElement, ReactNode } from 'react' import { makeStyles, Theme, createStyles } from '@material-ui/core/styles' import { Tab, Tabs } from '@material-ui/core' interface TabPanelProps { children?: ReactNode index: number value: number } function TabPanel(props: TabPanelProps) { const { children, value, index, ...other } = props return ( ) } const useStyles = makeStyles((theme: Theme) => createStyles({ root: { flexGrow: 1, }, content: { marginTop: theme.spacing(2), }, }), ) interface TabsValues { component: ReactNode label: ReactNode } interface Props { values: TabsValues[] index?: number indexChanged?: (index: number) => void } export default function SimpleTabs({ values, index, indexChanged }: Props): ReactElement { const classes = useStyles() const [value, setValue] = React.useState(index || 0) const handleChange = (event: React.ChangeEvent>, newValue: number) => { if (indexChanged) indexChanged(newValue) else setValue(newValue) } const v = index !== undefined ? index : value return (
{values.map(({ label }, idx) => ( ))}
{values.map(({ component }, idx) => ( {component} ))}
) }