From 4838df315931bb883f704ec3e1abe2685f296cdf Mon Sep 17 00:00:00 2001 From: HsiangNianian Date: Sat, 22 Apr 2023 19:52:26 +0800 Subject: 😀 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/components/RemoteCacheCounter.tsx | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 docs/components/RemoteCacheCounter.tsx (limited to 'docs/components/RemoteCacheCounter.tsx') diff --git a/docs/components/RemoteCacheCounter.tsx b/docs/components/RemoteCacheCounter.tsx new file mode 100644 index 0000000..ef4dc6e --- /dev/null +++ b/docs/components/RemoteCacheCounter.tsx @@ -0,0 +1,47 @@ +import cn from "classnames"; +import { useState, useEffect } from "react"; +import { animated, useSpring, config } from "@react-spring/web"; +import useTurborepoMinutesSaved from "../lib/useTurborepoMinutesSaved"; +import Link from "next/link"; + +const counterFormatter = Intl.NumberFormat(undefined, { + minimumIntegerDigits: 7, + maximumFractionDigits: 0, +}); + +export default function RemoteCacheCounter() { + const [targetMinutes, setTargetMinutes] = useState(0); + const timeSaved = useTurborepoMinutesSaved(); + useEffect(() => { + if (timeSaved) { + setTargetMinutes( + timeSaved.local_cache_minutes_saved + + timeSaved.remote_cache_minutes_saved + ); + } + }, [timeSaved]); + + const spring = useSpring({ + from: { minutesSaved: 0 }, + minutesSaved: targetMinutes, + config: config.molasses, + }); + + return ( + +
+ + {spring.minutesSaved.to((t) => counterFormatter.format(t))} + +
Total Compute Minutes Saved
+ +
+ Get Started With Remote Caching → +
+
+ + ); +} -- cgit v1.2.3-70-g09d2