TrainingBlock.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import ExerciseComposition from './ExerciseComposition'
  2. import { calculateDuration, formatTime } from '../utils'
  3. import { TBlockInstance } from '../types'
  4. const TrainingBlock = ({ blockInstance }: { blockInstance?: TBlockInstance }) => {
  5. if (!blockInstance || !blockInstance.block) return null
  6. const duration = calculateDuration(blockInstance)
  7. const { title, blocks, exercises } = blockInstance.block
  8. return (
  9. <div>
  10. {title && (
  11. <h3>
  12. <span className='block-title'>{title}</span>{' '}
  13. <span className='block-time'>{formatTime(duration)}</span>
  14. </h3>
  15. )}
  16. {blocks && blocks.map((block) => <TrainingBlock key={block.id} blockInstance={block} />)}
  17. {exercises?.length ? <ExerciseComposition exercises={exercises} duration={duration} /> : null}
  18. <style jsx>
  19. {`
  20. .block-time {
  21. color: gray;
  22. font-size: 90%;
  23. }
  24. .block-time::before {
  25. content: '(';
  26. }
  27. .block-time::after {
  28. content: ')';
  29. }
  30. `}
  31. </style>
  32. </div>
  33. )
  34. }
  35. export default TrainingBlock