| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | 'use client'import type { FC } from 'react'import React from 'react'import cn from 'classnames'import s from './style.module.css'type Item = {  id: string  name: string  isRight?: boolean  extra?: React.ReactNode}export type ITabHeaderProps = {  items: Item[]  value: string  onChange: (value: string) => void}const TabHeader: FC<ITabHeaderProps> = ({  items,  value,  onChange,}) => {  const renderItem = ({ id, name, extra }: Item) => (    <div      key={id}      className={cn(id === value ? `${s.itemActive} text-gray-900` : 'text-gray-500', 'relative flex items-center pb-1.5 leading-6 cursor-pointer')}      onClick={() => onChange(id)}    >      <div className='text-base font-semibold'>{name}</div>      {extra || ''}    </div>  )  return (    <div className='flex justify-between border-b border-gray-200 '>      <div className='flex space-x-4'>        {items.filter(item => !item.isRight).map(renderItem)}      </div>      <div className='flex space-x-4'>        {items.filter(item => item.isRight).map(renderItem)}      </div>    </div>  )}export default React.memo(TabHeader)
 |