"use client" import { cn } from "@/lib/utils" import { useTranslations } from "next-intl" import React, { useEffect, useRef, useState } from "react" export default function TabSwitch({ tabs, currentTab, setCurrentTab, }: { tabs: string[] currentTab: string setCurrentTab: (tab: string) => void }) { const t = useTranslations("TabSwitch") const [indicator, setIndicator] = useState<{ x: number; w: number }>({ x: 0, w: 0 }) const tabRefs = useRef<(HTMLDivElement | null)[]>([]) useEffect(() => { const currentTabElement = tabRefs.current[tabs.indexOf(currentTab)] if (currentTabElement) { const parentPadding = 1 setIndicator({ x: tabs.indexOf(currentTab) !== 0 ? currentTabElement.offsetLeft - parentPadding : currentTabElement.offsetLeft, w: currentTabElement.offsetWidth, }) } }, [currentTab, tabs]) return (
{indicator.w > 0 && (
)} {tabs.map((tab: string, index) => (
{ tabRefs.current[index] = el }} onClick={() => setCurrentTab(tab)} className={cn( "relative cursor-pointer rounded-3xl px-2.5 py-[8px] text-[13px] font-[600]", "transition-all duration-500 ease-in-out text-stone-400 dark:text-stone-500", { "text-stone-950 dark:text-stone-50": currentTab === tab, }, )} >

{t(tab)}

))}
) }