import { useRouteMeta, FormattedMessage } from 'dumi'; import React, { type FC, useMemo } from 'react'; import { Tabs, TabList, Tab } from '@chakra-ui/react'; type IContentTabs = ReturnType['tabs']; export interface IContentTabsProps { tabs: IContentTabs; tabKey: string | null; onChange: (tab?: NonNullable[0]) => void; } const ContentTabs: FC = ({ tabs, tabKey, onChange }) => { // TODO: tab.Extra & tab.Action render const computedTabIndex = useMemo(() => { return tabs?.length && tabKey ? Math.max(tabs.findIndex((v) => v.key === tabKey) + 1, 0) : 0; }, [tabs, tabKey]); return Boolean(tabs?.length) ? ( activeIndex ? onChange(tabs![activeIndex - 1]) : onChange() } mt={-4} mb={4} colorScheme="brand" position="sticky" top={0} > {tabs!.map(({ key, titleIntlId, meta }) => ( {titleIntlId ? ( ) : ( meta.frontmatter.title )} ))} ) : //
    //
  • onChange()} data-active={!key || undefined}> // //
  • // {tabs!.map((tab) => ( //
  • onChange(tab)} // data-active={key === tab.key || undefined} // > // //
  • // ))} //
null; }; export default ContentTabs;