12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- '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
|