import React from 'react' import { Box } from '../Box/Box' import * as styles from './styles.css' import { Button } from '../../components/Button/Button' import { Text } from '../../components/Text/Text' interface Page { page: React.ReactNode icon?: React.ReactElement badge?: React.ReactNode } type Props = { pages: { [k: string]: Page } tab: T right?: React.ReactNode setTab: (tab: T) => void handleRef?: (ref: HTMLElement | null) => void // These props have been added to override defaults that prevent us from // implementing the UX as designed. They are temporary and will be removed // when we rebuild tabs: https://github.com/highlight/highlight/issues/5771 noHandle?: boolean containerClass?: string tabsContainerClass?: string pageContainerClass?: string } export const Tabs = function ({ pages, tab, right, containerClass, tabsContainerClass, pageContainerClass, noHandle = false, setTab, handleRef, }: Props) { const [hoveredTab, setHoveredTab] = React.useState() const currentPage = pages[tab] return ( {Object.keys(pages).map((t) => ( setHoveredTab(t)} onMouseLeave={() => setHoveredTab(undefined)} onClick={() => { setTab(t as T) }} > ))} {right} {currentPage && ( {pages[tab].page} {!noHandle && ( )} )} ) }