/* eslint-disable @typescript-eslint/no-shadow */ import React from 'react'; import clsx from 'clsx'; import style from './TabBar.module.css'; import { TabBarItemProps } from './tabbarItem/TabBarItem'; import TabBarNav from './TabBarNav'; interface TabBarProps { children: React.ReactNode; className?: string; activeTab: string; setActiveTab: (label: string) => void; } const TabBar: React.FC = ({ children, className = '', activeTab, setActiveTab, }) => { const getChildrenLabels = (children: React.ReactNode): string[] => React.Children.toArray(children) .filter(React.isValidElement) .map((child) => (child.props as any).label); const handleChangeActiveTab = (label: string) => { setActiveTab(label); }; const renderTabs = () => { const childrenLabels = getChildrenLabels(children); return childrenLabels.map((navLabel) => ( )); }; const classes = clsx(style.tabBar, className); return (
{renderTabs()}
{React.Children.map( children, (child) => (React.isValidElement(child) ? React.cloneElement(child, { activeTab } as TabBarItemProps) : null), ) }
); }; export default TabBar;