index.tsx 884 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. 'use client'
  2. import React, { FC } from 'react'
  3. import cn from 'classnames'
  4. import s from './style.module.css'
  5. export interface ITabHeaderProps {
  6. items: {
  7. id: string
  8. name: string
  9. extra?: React.ReactNode
  10. }[]
  11. value: string
  12. onChange: (value: string) => void
  13. }
  14. const TabHeader: FC<ITabHeaderProps> = ({
  15. items,
  16. value,
  17. onChange
  18. }) => {
  19. return (
  20. <div className='flex space-x-4 border-b border-gray-200 '>
  21. {items.map(({ id, name, extra }) => (
  22. <div
  23. key={id}
  24. className={cn(id === value ? `${s.itemActive} text-gray-900` : 'text-gray-500', 'relative flex items-center pb-1.5 leading-6 cursor-pointer')}
  25. onClick={() => onChange(id)}
  26. >
  27. <div className='text-base font-semibold'>{name}</div>
  28. {extra ? extra : ''}
  29. </div>
  30. ))}
  31. </div>
  32. )
  33. }
  34. export default React.memo(TabHeader)