score.tsx 1.0 KB

12345678910111213141516171819202122232425262728
  1. 'use client'
  2. import type { FC } from 'react'
  3. import React from 'react'
  4. import cn from '@/utils/classnames'
  5. type Props = {
  6. value: number | null
  7. besideChunkName?: boolean
  8. }
  9. const Score: FC<Props> = ({
  10. value,
  11. besideChunkName,
  12. }) => {
  13. if (!value || isNaN(value))
  14. return null
  15. return (
  16. <div className={cn('relative items-center overflow-hidden border border-components-progress-bar-border px-[5px]',
  17. besideChunkName ? 'h-[20.5px] border-l-0' : 'h-[20px] rounded-md')}>
  18. <div className={cn('absolute left-0 top-0 h-full border-r-[1.5px] border-components-progress-brand-progress bg-util-colors-blue-brand-blue-brand-100', value === 1 && 'border-r-0')} style={{ width: `${value * 100}%` }} />
  19. <div className={cn('relative flex h-full items-center space-x-0.5 text-util-colors-blue-brand-blue-brand-700')}>
  20. <div className='system-2xs-medium-uppercase'>score</div>
  21. <div className='system-xs-semibold'>{value?.toFixed(2)}</div>
  22. </div>
  23. </div>
  24. )
  25. }
  26. export default React.memo(Score)