import React from 'react'; import { Box, Text, createStyles } from '@mantine/core'; import { useNuiEvent } from '../../hooks/useNuiEvent'; import { fetchNui } from '../../utils/fetchNui'; import ScaleFade from '../../transitions/ScaleFade'; export interface ProgressbarProps { label: string; duration: number; } const useStyles = createStyles((theme) => ({ container: { width: 350, height: 45, borderRadius: theme.radius.sm, backgroundColor: theme.colors.dark[5], overflow: 'hidden', }, wrapper: { width: '100%', height: '20%', display: 'flex', alignItems: 'center', justifyContent: 'center', bottom: 0, position: 'absolute', }, bar: { height: '100%', backgroundColor: theme.colors[theme.primaryColor][theme.fn.primaryShade()], }, labelWrapper: { position: 'absolute', display: 'flex', width: 350, height: 45, alignItems: 'center', justifyContent: 'center', }, label: { maxWidth: 350, padding: 8, textOverflow: 'ellipsis', overflow: 'hidden', whiteSpace: 'nowrap', fontSize: 20, color: theme.colors.gray[3], textShadow: theme.shadows.sm, }, })); const Progressbar: React.FC = () => { const { classes } = useStyles(); const [visible, setVisible] = React.useState(false); const [label, setLabel] = React.useState(''); const [duration, setDuration] = React.useState(0); const progressComplete = () => { setVisible(false); fetchNui('progressComplete'); }; const progressCancel = () => { setVisible(false); }; useNuiEvent('progressCancel', progressCancel); useNuiEvent('progress', (data) => { setVisible(true); setLabel(data.label); setDuration(data.duration); }); return ( <> {label} ); }; export default Progressbar;