import React, { useState } from 'react' import Tab from '@mui/material/Tab' import TabList from '@mui/lab/TabList' import TabPanel from '@mui/lab/TabPanel' import TabContext from '@mui/lab/TabContext' import Grid, { Grid2Props } from '@mui/material/Unstable_Grid2' import useMediaQuery from '@mui/material/useMediaQuery' import { LmComponentRender } from '@LmComponentRender' import LmIcon from '../icon/LmIcon' import { HeadlineStoryblok, TabsItemStoryblok } from '../../typings/generated/components-schema' import { LmTabsProps } from './tabsTypes' import LmNukaCarousel from '../slider/LmNukaCarousel' import { useTheme } from '@mui/material/styles' const widthMap = { 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, false: false, auto: 'auto', true: true } export default function LmTabs({ content }: LmTabsProps) { const theme = useTheme() const isMobile = useMediaQuery( theme.breakpoints.down(content.mobile_breakpoint || 'xs') ) const body: TabsItemStoryblok[] = content.body || [] const [activeTab, setActiveTab] = useState('0') const orientation = content.vertical_tabs && !isMobile ? 'vertical' : 'horizontal' const isVertical = orientation === 'vertical' const tabStyle = content.text_style?.[0] return ( div > div': { padding: theme.spacing(3) }, '& .MuiTab-wrapper > .MuiTypography-root': { textTransform: 'none', width: '100%' }, ...(isVertical && { '& .MuiTabs-flexContainerVertical': { borderRight: `1px solid ${theme.palette.divider}` }, '& .react-swipeable-view-container > div > div': { paddingTop: 0, paddingBottom: 0 } }) }} >
{ setActiveTab(value) }} > {body.map((tab: TabsItemStoryblok, iteration) => ( ) : ( tab.title ) } wrapped={!!content.wrapped} icon={ tab.icon && tab.icon.name && ( ) } value={`${iteration}`} key={tab._uid} /> ))}
{ setActiveTab(`${endSlideIndex}`) }} {...(content.dynamic_height && { adaptiveHeight: true, adaptiveHeightAnimation: true })} > {body.map((tab: TabsItemStoryblok, index) => ( {tab.body?.map((blok) => ( ))} ))}
) }