diff options
| author | IT Fixcomart <it@fixcomart.co.id> | 2025-01-14 09:53:43 +0000 |
|---|---|---|
| committer | IT Fixcomart <it@fixcomart.co.id> | 2025-01-14 09:53:43 +0000 |
| commit | 3e037c57566d7fb0acad2cb71fedd075cb9ce462 (patch) | |
| tree | 1ec2ebdf700d3c9501a665a8f1e5351ddc80e5ef /src/lib/pengajuan-tempo/component/Stepper.jsx | |
| parent | a868498e7327593b40d1e02fd96531fefd9548d5 (diff) | |
| parent | 76afb8aaa5d2aaaf68529e11e9ed4d003d953f76 (diff) | |
Merged in Feature/pengajuan-tempo (pull request #401)
Feature/pengajuan tempo
Approved-by: trisusilo
Diffstat (limited to 'src/lib/pengajuan-tempo/component/Stepper.jsx')
| -rw-r--r-- | src/lib/pengajuan-tempo/component/Stepper.jsx | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/lib/pengajuan-tempo/component/Stepper.jsx b/src/lib/pengajuan-tempo/component/Stepper.jsx new file mode 100644 index 00000000..c5efa5bc --- /dev/null +++ b/src/lib/pengajuan-tempo/component/Stepper.jsx @@ -0,0 +1,65 @@ +import React from 'react'; +import useDevice from '@/core/hooks/useDevice'; +const Stepper = ({ currentStep, numberOfSteps }) => { + const { isDesktop, isMobile } = useDevice(); + const stepLabels = [ + 'Informasi Perusahaan', + 'Kontak Person', + 'Pengiriman', + 'Referensi', + 'Dokumen', + 'Konfirmasi', + ]; + const activeColor = (index) => + currentStep >= index ? 'bg-red-500' : 'bg-gray-300'; + const activeColorBullet = (index) => + currentStep >= index ? 'bg-red-500 ' : 'bg-white border-gray-300 border'; + const isFinalStep = (index) => index === numberOfSteps - 1; + const isFirstStep = (index) => index === 0; + return ( + <div className='flex items-center'> + {Array.from({ length: numberOfSteps }).map((_, index) => ( + <React.Fragment key={index}> + {isFirstStep(index) ? null : ( + <div + className={`${isMobile ? 'w-12' : 'w-48'} h-[1px] ${activeColor( + index + )}`} + ></div> + )} + <div + className={`w-6 h-6 ${ + currentStep == index + ? 'border-red-500 border' + : `${activeColorBullet(index)} ` + } rounded-full flex justify-center items-center text-nowrap`} + > + <div className='relative text-xs'> + <div + className={`absolute z-10 ${ + isMobile + ? `w-12 h-full top-4 ${ + isFinalStep(index) ? '-left-16' : '-left-4' + }` + : 'w-48 h-full -top-14 -left-24' + } `} + > + <div + className={`relative w-full max-w-md p-2 text-center ${ + currentStep == index + ? 'text-red-500' + : `${isMobile ? 'hidden' : ''}` + } text-nowrap`} + > + {stepLabels[index]} + </div> + </div> + </div> + </div> + </React.Fragment> + ))} + </div> + ); +}; + +export default Stepper; |
