| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | 
							- import type { FC } from 'react'
 - import cn from '@/utils/classnames'
 - 
 - type Option = {
 -   value: string
 -   text: string
 - }
 - type TabSliderProps = {
 -   className?: string
 -   itemWidth?: number
 -   value: string
 -   onChange: (v: string) => void
 -   options: Option[]
 - }
 - const TabSlider: FC<TabSliderProps> = ({
 -   className,
 -   itemWidth = 118,
 -   value,
 -   onChange,
 -   options,
 - }) => {
 -   const currentIndex = options.findIndex(option => option.value === value)
 -   const current = options[currentIndex]
 - 
 -   return (
 -     <div className={cn(className, 'relative flex p-0.5 rounded-lg bg-gray-200')}>
 -       {
 -         options.map((option, index) => (
 -           <div
 -             key={option.value}
 -             className={`
 -               flex justify-center items-center h-7 text-[13px] 
 -               font-semibold text-gray-600 rounded-[7px] cursor-pointer
 -               hover:bg-gray-50
 -               ${index !== options.length - 1 && 'mr-[1px]'}
 -             `}
 -             style={{
 -               width: itemWidth,
 -             }}
 -             onClick={() => onChange(option.value)}
 -           >
 -             {option.text}
 -           </div>
 -         ))
 -       }
 -       {
 -         current && (
 -           <div
 -             className={`
 -               absolute flex justify-center items-center h-7 bg-white text-[13px] font-semibold text-primary-600 
 -               border-[0.5px] border-gray-200 rounded-[7px] shadow-xs transition-transform
 -             `}
 -             style={{
 -               width: itemWidth,
 -               transform: `translateX(${currentIndex * itemWidth + 1}px)`,
 -             }}
 -           >
 -             {current.text}
 -           </div>
 -         )
 -       }
 -     </div>
 -   )
 - }
 - 
 - export default TabSlider
 
 
  |