Progress.jsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // components
  2. import LinearProgress from '@mui/material/LinearProgress';
  3. // hooks
  4. import {useThemeProvider} from '@contexts/themeContext';
  5. // utils
  6. import PropTypes from 'prop-types';
  7. const Progress = ({barColor = 'azure', trackColor, value, style = {}}) => {
  8. const {theme} = useThemeProvider();
  9. const bgColor = `var(--${trackColor})` || (theme === 'light' ? 'var(--body)' : 'transparent');
  10. return <LinearProgress className="progressbar"
  11. variant="determinate"
  12. aria-label={value}
  13. value={value}
  14. sx={{
  15. backgroundColor: bgColor,
  16. height: 6,
  17. borderRadius: 2,
  18. ...style,
  19. '& .MuiLinearProgress-bar': {
  20. backgroundColor: `var(--${barColor})`,
  21. borderRadius: 2,
  22. }
  23. }}/>
  24. }
  25. Progress.propTypes = {
  26. barColor: PropTypes.string,
  27. trackColor: PropTypes.string,
  28. value: PropTypes.number.isRequired,
  29. style: PropTypes.object,
  30. }
  31. export default Progress