'use client' import { useTranslation } from 'react-i18next' import { useRouter } from 'next/navigation' import { useCallback } from 'react' import s from './index.module.css' import cn from '@/utils/classnames' import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints' type IStepsNavBarProps = { step: number datasetId?: string } const STEP_T_MAP: Record<number, string> = { 1: 'datasetCreation.steps.one', 2: 'datasetCreation.steps.two', 3: 'datasetCreation.steps.three', } const STEP_LIST = [1, 2, 3] const StepsNavBar = ({ step, datasetId, }: IStepsNavBarProps) => { const { t } = useTranslation() const router = useRouter() const media = useBreakpoints() const isMobile = media === MediaType.mobile const navBackHandle = useCallback(() => { if (!datasetId) router.replace('/datasets') else router.replace(`/datasets/${datasetId}/documents`) }, [router, datasetId]) return ( <div className='w-full pt-4'> <div className={cn(s.stepsHeader, isMobile && '!px-0 justify-center')}> <div onClick={navBackHandle} className={cn(s.navBack, isMobile && '!mr-0')} /> {!isMobile && (!datasetId ? t('datasetCreation.steps.header.creation') : t('datasetCreation.steps.header.update'))} </div> <div className={cn(s.stepList, isMobile && '!p-0')}> {STEP_LIST.map(item => ( <div key={item} className={cn(s.stepItem, s[`step${item}`], step === item && s.active, step > item && s.done, isMobile && 'px-0')} > <div className={cn(s.stepNum)}>{step > item ? '' : item}</div> <div className={cn(s.stepName)}>{isMobile ? '' : t(STEP_T_MAP[item])}</div> </div> ))} </div> </div> ) } export default StepsNavBar