MCPcopy Create free account
hub / github.com/mantinedev/ui.mantine.dev / ButtonProgress

Function ButtonProgress

lib/ButtonProgress/ButtonProgress.tsx:6–46  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

4import classes from './ButtonProgress.module.css';
5
6export function ButtonProgress() {
7 const theme = useMantineTheme();
8 const [progress, setProgress] = useState(0);
9 const [loaded, setLoaded] = useState(false);
10
11 const interval = useInterval(
12 () =>
13 setProgress((current) => {
14 if (current < 100) {
15 return current + 1;
16 }
17
18 interval.stop();
19 setLoaded(true);
20 return 0;
21 }),
22 20
23 );
24
25 return (
26 <Button
27 fullWidth
28 className={classes.button}
29 onClick={() => (loaded ? setLoaded(false) : !interval.active && interval.start())}
30 color={loaded ? 'teal' : theme.primaryColor}
31 radius="md"
32 >
33 <div className={classes.label}>
34 {progress !== 0 ? 'Uploading files' : loaded ? 'Files uploaded' : 'Upload files'}
35 </div>
36 {progress !== 0 && (
37 <Progress
38 value={progress}
39 className={classes.progress}
40 color={rgba(theme.colors.blue[2], 0.35)}
41 radius="sm"
42 />
43 )}
44 </Button>
45 );
46}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected