MCPcopy Create free account
hub / github.com/code100x/daily-code / TrackTools

Function TrackTools

apps/web/components/TrackTools.tsx:8–75  ·  view source on GitHub ↗
({
  track,
  problemIndex,
}: {
  allProblems: Problem[];
  track: Track & { problems: Problem[] };
  problemIndex: number;
})

Source from the content-addressed store, hash-verified

6import { motion } from "framer-motion";
7
8const TrackTools = ({
9 track,
10 problemIndex,
11}: {
12 allProblems: Problem[];
13 track: Track & { problems: Problem[] };
14 problemIndex: number;
15}) => {
16 const scrollToTop = () => {
17 window.scrollTo({ top: 0, behavior: "smooth" });
18 };
19
20 return (
21 <motion.div
22 initial={{ y: 20, opacity: 0 }}
23 animate={{ y: 0, opacity: 1 }}
24 transition={{ duration: 0.5, ease: "easeInOut", type: "spring", damping: 10 }}
25 className="flex w-full items-center justify-between gap-2 p-6"
26 >
27 <div className="border-primary/10 flex gap-2 rounded-lg border bg-black/10 p-1 backdrop-blur-lg">
28 <Link href={"/"} className="hidden lg:block">
29 <Button className="flex gap-2 bg-[#323232] font-semibold dark:bg-slate-50" size={"lg"}>
30 Back to home
31 </Button>
32 </Link>
33 <PageToggle allProblems={track.problems} track={track} />
34 <Link
35 prefetch={true}
36 href={problemIndex !== 0 ? `/tracks/${track.id}/${track.problems[problemIndex - 1]!.id}` : ``}
37 style={{ cursor: problemIndex !== 0 ? "pointer" : "not-allowed" }}
38 >
39 <Button
40 className="flex gap-2 bg-[#323232] font-semibold dark:bg-slate-50"
41 disabled={problemIndex === 0}
42 size={"lg"}
43 >
44 <ChevronLeft className="size-4" />
45 <span className="hidden md:block">Prev</span>
46 </Button>
47 </Link>
48 <Link
49 prefetch={true}
50 href={
51 problemIndex + 1 === track.problems.length
52 ? ``
53 : `/tracks/${track.id}/${track.problems[problemIndex + 1]!.id}`
54 }
55 style={{ cursor: problemIndex + 1 !== track.problems.length ? "pointer" : "not-allowed" }}
56 >
57 <Button
58 className="flex gap-2 bg-[#323232] font-semibold dark:bg-slate-50"
59 disabled={problemIndex + 1 === track.problems.length}
60 size={"lg"}
61 >
62 <span className="hidden md:block">Next</span>
63 <ChevronRight className="size-4" />
64 </Button>
65 </Link>

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected