'use client'; import clsx from 'clsx'; import React, { memo, useState } from 'react'; import { ItemProps } from './tab-item'; type Props = { defaultValue: string | number; children: React.ReactElement[]; }; const Tab = ({ defaultValue, children }: Props) => { const [currentValue, setCurrentValue] = useState(defaultValue); const handleSwitch = (value: ItemProps['value']) => { setCurrentValue(value); }; // Pass current selected state to child const childrenWithProps = React.Children.map(children, (child) => { if (!React.isValidElement(child)) return child; return React.cloneElement(child, { showContent: child.props.value === currentValue, }); }); return ( <>
{childrenWithProps}
); }; export default memo(Tab);