LabeledProgress.jsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // styling
  2. import styled from 'styled-components/macro';
  3. // components
  4. import Progress from '@ui/Progress';
  5. // utils
  6. import PropTypes from 'prop-types';
  7. const ListItem = styled.div`
  8. display: flex;
  9. flex-direction: column;
  10. gap: 8px;
  11. align-items: center;
  12. .label {
  13. line-height: 1 !important;
  14. }
  15. .progressbar {
  16. height: ${props => props.barHeight}px;
  17. width: 6px;
  18. .MuiLinearProgress-bar {
  19. transform: translateY(${props => 100 - props.value}%) !important;
  20. }
  21. }
  22. `
  23. const LabeledProgress = ({label, value, barHeight = 110, barColor = 'azure', trackColor}) => {
  24. return (
  25. <ListItem value={value} barHeight={barHeight}>
  26. <Progress value={value} barColor={barColor} trackColor={trackColor}/>
  27. <h6 className="label">{label}</h6>
  28. </ListItem>
  29. );
  30. }
  31. LabeledProgress.propTypes = {
  32. label: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
  33. value: PropTypes.number.isRequired,
  34. barHeight: PropTypes.number,
  35. barColor: PropTypes.string,
  36. trackColor: PropTypes.string,
  37. }
  38. export default LabeledProgress