import { Tab as MuiTab, TabPanel as MuiTabPanel, Tabs as MuiTabs, TabsList as MuiTabsList, } from '@mui/base'; import { Button, type ButtonProps, styled } from '@mui/material'; import type { PropsWithChildren } from 'react'; export const TabList = styled(MuiTabsList)(({ theme }) => ({ display: 'inline-flex', flexDirection: 'row', gap: theme.spacing(0.5), })); const StyledButton = styled(Button)(({ theme }) => ({ whiteSpace: 'nowrap', color: theme.palette.text.secondary, fontWeight: 'normal', '&[aria-selected="true"]': { fontWeight: 'bold', color: theme.palette.primary.main, background: theme.palette.background.elevation1, }, })); export const Tab = styled(({ children }: ButtonProps) => ( {children} ))(({ theme }) => ({ position: 'absolute', top: theme.spacing(-0.5), left: theme.spacing(2), transform: 'translateY(-50%)', padding: theme.spacing(0.75, 1), lineHeight: 1, fontSize: theme.fontSizes.smallerBody, color: theme.palette.text.primary, background: theme.palette.background.application, borderRadius: theme.shape.borderRadiusExtraLarge, zIndex: theme.zIndex.fab, textTransform: 'uppercase', })); export const Tabs = ({ className, children, }: PropsWithChildren<{ className?: string }>) => ( {children} ); export const TabPanel = styled(MuiTabPanel, { shouldForwardProp: (prop) => prop !== 'variant', })<{ variant?: 'diff' | 'change' }>(({ theme, variant }) => variant === 'diff' ? { padding: theme.spacing(2), borderRadius: theme.shape.borderRadiusLarge, border: `1px solid ${theme.palette.divider}`, } : {}, );