({
track,
problemIndex,
}: {
allProblems: Problem[];
track: Track & { problems: Problem[] };
problemIndex: number;
})
| 6 | import { motion } from "framer-motion"; |
| 7 | |
| 8 | const 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> |
nothing calls this directly
no outgoing calls
no test coverage detected